[Project] Een uitgebreide MySQLdatabase
Hallo iedeen,
Ik ben onlangs een nieuw project gestart, misschien eerst een toelichting.
Een vriend en ik hebben besloten een website op te richten die informatie geeft over Pretparken verspreid over de wereld, met hun attracties e/d.
Nu, ik zou me ontfermen over het database systeem. Dit schrijf ik in php, en als database gebruik ik MySQL. Ik heb het hele gedoe een beetje onderschat, en ik realiseer me dat daar enorm veel bij komt kijken. Het gaat dus om een database die bestaat uit 3 tabellen, die onderling aan mekaar gekoppeld zijn.
Dat is althans de bedoeling, als jullie betere ideeën hebben mogen jullie dat altijd laten weten ;)
Dat is ongeveer het project, als ik hulp nodig heb zal ik dat hier laten weten, en ik houd jullie op de hoogte over verderingen!
Als jullie tips hebben, aarzel dan niet om ze te delen!
Groetjes
Bavo
Ik ben onlangs een nieuw project gestart, misschien eerst een toelichting.
Een vriend en ik hebben besloten een website op te richten die informatie geeft over Pretparken verspreid over de wereld, met hun attracties e/d.
Nu, ik zou me ontfermen over het database systeem. Dit schrijf ik in php, en als database gebruik ik MySQL. Ik heb het hele gedoe een beetje onderschat, en ik realiseer me dat daar enorm veel bij komt kijken. Het gaat dus om een database die bestaat uit 3 tabellen, die onderling aan mekaar gekoppeld zijn.
Dat is althans de bedoeling, als jullie betere ideeën hebben mogen jullie dat altijd laten weten ;)
Dat is ongeveer het project, als ik hulp nodig heb zal ik dat hier laten weten, en ik houd jullie op de hoogte over verderingen!
Als jullie tips hebben, aarzel dan niet om ze te delen!
Groetjes
Bavo
Ik zou er over denken om inderdaad wat te normaliseren.
Je kunt de database op die manier zo inrichten dat je zo min mogelijk onnodige data hebt en dus zo snel mogelijk werkt.
Voorbeeldje: tabel attracties
ID Pretpark Naam Type
1 Walibi weetikveel achtbaan
2 Efteling xxx achtbaan
3 Walibi nogniet glijbaan
Kun je beter(efficiënter) doen als:
ID Pretpark Naam Type
1 1 weetikveel 1
2 2 xxx 1
3 1 nogniet 2
En dan refereren naar de tabellen Pretparken:
ID Naam
1 Walibi
2 Efteling
en Atractietypes:
ID Type
1 Achtbaan
2 Glijbaan
Je kunt de database op die manier zo inrichten dat je zo min mogelijk onnodige data hebt en dus zo snel mogelijk werkt.
Voorbeeldje: tabel attracties
ID Pretpark Naam Type
1 Walibi weetikveel achtbaan
2 Efteling xxx achtbaan
3 Walibi nogniet glijbaan
Kun je beter(efficiënter) doen als:
ID Pretpark Naam Type
1 1 weetikveel 1
2 2 xxx 1
3 1 nogniet 2
En dan refereren naar de tabellen Pretparken:
ID Naam
1 Walibi
2 Efteling
en Atractietypes:
ID Type
1 Achtbaan
2 Glijbaan
Edit:
Even wat links, verder moet je maar even Googlen
http://phphulp.nl/php/tutorials/3/426/
http://phphulp.nl/php/tutorials/3/150/
Even wat links, verder moet je maar even Googlen
http://phphulp.nl/php/tutorials/3/426/
http://phphulp.nl/php/tutorials/3/150/
3 tabellen klinkt niet echt als genoeg.
Wat waren je plannen precies?
Wat waren je plannen precies?
Quote:
Kuch! Ik hoop toch echt dat je wel weet dat je het hier hebt over een heel pietleuterig databaseestje! 3 tabellen en een paar foreignkeys, dat stelt echt 10x niks voor. Tevens verwacht ik dat je hiermee niet klaar bent, je kunt nu onmogelijk op een goede manier alle eigenschappen van de atracties opslaan.Ik heb het hele gedoe een beetje onderschat, en ik realiseer me dat daar enorm veel bij komt kijken. Het gaat dus om een database die bestaat uit 3 tabellen, die onderling aan mekaar gekoppeld zijn.
Om je een beginnetje te geven (in PostgreSQL):
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
CREATE DATABASE pretparken
WITH OWNER = postgresql
ENCODING = 'SQL_ASCII'
TABLESPACE = pg_default;
CREATE TABLE pretparken
(
id serial NOT NULL,
naam varchar(50) NOT NULL,
CONSTRAINT pk_id PRIMARY KEY (id),
CONSTRAINT u_pretpark_naam UNIQUE (naam)
)
WITHOUT OIDS;
CREATE TABLE atracties
(
id serial NOT NULL,
naam varchar(50) NOT NULL,
CONSTRAINT pk_atractie_id PRIMARY KEY (id),
CONSTRAINT u_atractie_naam UNIQUE (naam)
)
WITHOUT OIDS;
CREATE TABLE pretpark_atractie
(
id serial NOT NULL,
id_pretpark int8 NOT NULL,
id_atractie int8 NOT NULL,
CONSTRAINT pk_id_pretpark_atractie PRIMARY KEY (id),
CONSTRAINT fk_atractie FOREIGN KEY (id_atractie)
REFERENCES atracties (id) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT fk_pretpark FOREIGN KEY (id_pretpark)
REFERENCES pretparken (id) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
)
WITHOUT OIDS;
WITH OWNER = postgresql
ENCODING = 'SQL_ASCII'
TABLESPACE = pg_default;
CREATE TABLE pretparken
(
id serial NOT NULL,
naam varchar(50) NOT NULL,
CONSTRAINT pk_id PRIMARY KEY (id),
CONSTRAINT u_pretpark_naam UNIQUE (naam)
)
WITHOUT OIDS;
CREATE TABLE atracties
(
id serial NOT NULL,
naam varchar(50) NOT NULL,
CONSTRAINT pk_atractie_id PRIMARY KEY (id),
CONSTRAINT u_atractie_naam UNIQUE (naam)
)
WITHOUT OIDS;
CREATE TABLE pretpark_atractie
(
id serial NOT NULL,
id_pretpark int8 NOT NULL,
id_atractie int8 NOT NULL,
CONSTRAINT pk_id_pretpark_atractie PRIMARY KEY (id),
CONSTRAINT fk_atractie FOREIGN KEY (id_atractie)
REFERENCES atracties (id) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT fk_pretpark FOREIGN KEY (id_pretpark)
REFERENCES pretparken (id) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
)
WITHOUT OIDS;
Andere eigenschappen van het pretpark (adres e.d.) en de eigenschappen van de atracties (bv. lengte en snelheid), mag je zelf nog (in aparte tabellen) gaan toevoegen.
Frank, ik vind dit wel leuk en aardig, maar je weet niet eens of hij beschikking heeft bij zijn provider tot PostgreSQL. Hij geeft ook duidelijk in zijn 1e post aan dat hij MySQL gebruikt, probeer daar dan ook bij te helpen, veel hosts ondersteunen (nog) geen PostgreSQL.
Ik snap dat je er fan van bent, het is beter dan MySQL en werkt ook gemakkelijker, maar niet iedereen heeft dat. Snappie?
No offence, 't is maar even om het aan te geven
Ik snap dat je er fan van bent, het is beter dan MySQL en werkt ook gemakkelijker, maar niet iedereen heeft dat. Snappie?
No offence, 't is maar even om het aan te geven
Robert, maak van de 'serial' een INT, zet een auto_increment op deze kolom en maak van int8 een INT. Klaar is kees!
Dit is de absolute basis van SQL, PostgreSQL en MySQL verschillen daarin echt niet zo veel. Met Oracle en DB2 maak je op vrijwel dezelfde manier een database aan.
Tevens weet de TS nu dat er nog meer bestaat dan alleen MySQL...
Dit is de absolute basis van SQL, PostgreSQL en MySQL verschillen daarin echt niet zo veel. Met Oracle en DB2 maak je op vrijwel dezelfde manier een database aan.
Tevens weet de TS nu dat er nog meer bestaat dan alleen MySQL...
@Frank ik mis alleen de sequences
'Frank:
Robert, maak van de 'serial' een INT, zet een auto_increment op deze kolom en maak van int8 een INT. Klaar is kees!
Dit is de absolute basis van SQL, PostgreSQL en MySQL verschillen daarin echt niet zo veel. Met Oracle en DB2 maak je op vrijwel dezelfde manier een database aan.
Tevens weet de TS nu dat er nog meer bestaat dan alleen MySQL...
Dit is de absolute basis van SQL, PostgreSQL en MySQL verschillen daarin echt niet zo veel. Met Oracle en DB2 maak je op vrijwel dezelfde manier een database aan.
Tevens weet de TS nu dat er nog meer bestaat dan alleen MySQL...
Snap ik, ik vind het ook goed dat je het aandraagt dat er wat anders is. Maar ik geloof dat we elkaar daarin ook wel begrijpen ;)
@Klaasjan: Met pgAdminIII krijg je keurig de volgende notice:
Dat gaat dus vanzelf goed.
Niet netjes, maar het werkt ;)
Code (php)
1
2
2
NOTICE: CREATE TABLE will create implicit sequence "pretpark_atractie_id_seq" for serial column "pretpark_atractie.id"
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "pk_id_pretpark_atractie" for table "pretpark_atractie"
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "pk_id_pretpark_atractie" for table "pretpark_atractie"
Niet netjes, maar het werkt ;)
Dat is inderdaad makkelijk




