[Project] Een uitgebreide MySQLdatabase
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
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/
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.
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
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 schreef op 05.02.2007 23:05:
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 ;)
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