Wat zijn PK / FK-relaties

PK staat voor primary key, FK voor foreign key. Een PK is de sleutel tot 1 record in een tabel, ieder record in je tabel(len) hoort een eigen PK te hebben, in MySQL realiseer je dit met een INTEGER welke je AUTO_INCREMENT maakt, zo dwingt MySQL min of meer af dat je altijd een unieke waarde hebt, het vreemde is dan weer als je een tabel leegt dat de PK ook weer opnieuw begint. Iets wat eigenlijk niet hoort.

Een foreign key is een “vreemde sleutel” welke verwijst naar een PK van zichzelf of een andere tabel. Een voorbeeld zegt 1000 woorden:

Tabel met gebruikers:
CREATE TABLE gebruikers (
gebruiker_id INT( 10 ) NOT NULL AUTO_INCREMENT,
naam VARCHAR( 75 ) NOT NULL ,
PRIMARY KEY ( gebruiker_id )
) TYPE = InnoDB;

Tabel met berichten:
CREATE TABLE berichten (
bericht_id int(10) NOT NULL auto_increment,
van_gebruiker_id int(10) default NULL,
naar_gebruiker_id int(10) default NULL,
bericht text NOT NULL,
PRIMARY KEY (bericht_id),
KEY van_gebruiker_id (van_gebruiker_id,naar_gebruiker_id)
) ENGINE=InnoDB

Let erop dat de datatypes van gebruiker_id, naar_gebruiker_id en van_gebruiker_id allen van hetzelfde datatype moeten zijn, bijvoorbeeld INT(10). Daarnaast is een INDEX op de FK’s verplicht. Let er tevens op dat deze FK-velden als standaardwaarde ‘NULL’ hebben en NULL is totaal iets anders dan 0. NULL is echt leeg, en 0 is gewoon de waarde 0, als deze in een FK staat zal het een fout genereren aangezien een 0 als PK meestal niet voorkomt.

Beide tabellen dienen van het type InnoDB te zijn, zie ook de Tips & Tricks.

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Inleiding
  2. Wat zijn transactions?
  3. Wat zijn PK / FK-relaties
  4. Het leuke werk, integriteit behouden
  5. Een stukje voorbeeldcode
  6. Tips & Tricks

PHP tutorial opties

 
 

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.