[Project] Een uitgebreide MySQLdatabase

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bavo

Bavo

05/02/2007 21:13:00
Quote Anchor link
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
 
PHP hulp

PHP hulp

21/11/2024 15:28:55
 

05/02/2007 22:23:00
Quote Anchor link
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

Edit:

Even wat links, verder moet je maar even Googlen
http://phphulp.nl/php/tutorials/3/426/
http://phphulp.nl/php/tutorials/3/150/
Gewijzigd op 01/01/1970 01:00:00 door
 
Klaasjan Boven

Klaasjan Boven

05/02/2007 22:35:00
Quote Anchor link
3 tabellen klinkt niet echt als genoeg.
Wat waren je plannen precies?
 
Frank -

Frank -

05/02/2007 22:50:00
Quote Anchor link
Quote:
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.
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.

Om je een beginnetje te geven (in PostgreSQL):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
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;

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.
 
Robert Deiman

Robert Deiman

05/02/2007 23:01:00
Quote Anchor link
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
 
Frank -

Frank -

05/02/2007 23:05:00
Quote Anchor link
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...
 
Klaasjan Boven

Klaasjan Boven

05/02/2007 23:06:00
Quote Anchor link
@Frank ik mis alleen de sequences
 
Robert Deiman

Robert Deiman

05/02/2007 23:08:00
Quote Anchor link
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...



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 ;)
 
Frank -

Frank -

05/02/2007 23:09:00
Quote Anchor link
@Klaasjan: Met pgAdminIII krijg je keurig de volgende notice:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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"
Dat gaat dus vanzelf goed.

Niet netjes, maar het werkt ;)
 
Klaasjan Boven

Klaasjan Boven

05/02/2007 23:10:00
Quote Anchor link
Dat is inderdaad makkelijk
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.