Zoeken…


Een tabel maken met een externe sleutel

In dit voorbeeld hebben we een bestaande tabel, SuperHeros .

Deze tabel bevat een primaire sleutel- ID .

We zullen een nieuwe tafel toevoegen om de krachten van elke superheld op te slaan:

CREATE TABLE HeroPowers
(
    ID int NOT NULL PRIMARY KEY,
    Name nvarchar(MAX) NOT NULL,
    HeroId int REFERENCES SuperHeros(ID)
)

De kolom HeroId is een externe sleutel voor de tabel SuperHeros .

Buitenlandse sleutels uitgelegd

Beperkingen voor externe sleutels zorgen voor gegevensintegriteit door te handhaven dat waarden in de ene tabel moeten overeenkomen met waarden in een andere tabel.

Een voorbeeld van waar een buitenlandse sleutel vereist is, is: op een universiteit moet een cursus tot een afdeling behoren. Code voor dit scenario is:

CREATE TABLE Department (
    Dept_Code        CHAR (5)     PRIMARY KEY,
    Dept_Name        VARCHAR (20) UNIQUE
);

Voeg waarden in met de volgende instructie:

INSERT INTO Department VALUES ('CS205', 'Computer Science');

De volgende tabel bevat de informatie van de onderwerpen die worden aangeboden door de informaticabranche:

CREATE TABLE Programming_Courses (
    Dept_Code       CHAR(5),
    Prg_Code        CHAR(9) PRIMARY KEY,
    Prg_Name        VARCHAR (50) UNIQUE,
    FOREIGN KEY (Dept_Code) References Department(Dept_Code)
);

(Het gegevenstype van de externe sleutel moet overeenkomen met het gegevenstype van de sleutel waarnaar wordt verwezen.)

De beperking voor externe sleutels in de kolom Dept_Code staat alleen waarden toe als ze al bestaan in de tabel waarnaar wordt verwezen, Department . Dit betekent dat als u probeert de volgende waarden in te voegen:

INSERT INTO Programming_Courses Values ('CS300', 'FDB-DB001', 'Database Systems');

de database geeft een fout met de CS300 Vreemde sleutel, omdat CS300 niet in de tabel Department . Maar wanneer u een sleutelwaarde probeert die bestaat:

INSERT INTO Programming_Courses VALUES ('CS205', 'FDB-DB001', 'Database Systems');
INSERT INTO Programming_Courses VALUES ('CS205', 'DB2-DB002', 'Database Systems II');

dan staat de database deze waarden toe.

Enkele tips voor het gebruik van buitenlandse sleutels

  • Een buitenlandse sleutel moet verwijzen naar een UNIEKE (of PRIMAIRE) sleutel in de bovenliggende tabel.
  • Het invoeren van een NULL-waarde in een kolom met een externe sleutel levert geen fout op.
  • Beperkingen voor externe sleutels kunnen verwijzen naar tabellen in dezelfde database.
  • Beperkingen voor externe sleutels kunnen verwijzen naar een andere kolom in dezelfde tabel (zelfreferentie).


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow