sql >> Databasteknik >  >> RDS >> Sqlserver

Upprätthålla underklassintegritet i en relationsdatabas

Varje studentpost kommer att ha en SubClass-kolumn (antag för argumentets skull att det är en CHAR(1)). {A =Atlet, M=musiker...}

Skapa nu dina Atlet- och Musikerbord. De bör också ha en SubClass-kolumn, men det bör finnas en kontrollbegränsning som hårdkodar värdet för den typ av tabell de representerar. Till exempel bör du sätta standardvärdet 'A' och en KONTROLL-begränsning på 'A' för kolumnen SubClass på tabellen Atlet.

Länka dina musiker- och idrottsutövares bord till studentbordet med hjälp av en KOMPOSIT främmande nyckel av StudentID OCH Underklass. Och du är klar! Gå och njut av en god kopp kaffe.

CREATE TABLE Student (
    StudentID INT NOT NULL IDENTITY PRIMARY KEY,
    SubClass CHAR(1) NOT NULL,
    Name VARCHAR(200) NOT NULL,
    CONSTRAINT UQ_Student UNIQUE (StudentID, SubClass)
);

CREATE TABLE Athlete (
    StudentID INT NOT NULL PRIMARY KEY,
    SubClass CHAR(1) NOT NULL,
    Sport VARCHAR(200) NOT NULL,
    CONSTRAINT CHK_Jock CHECK (SubClass = 'A'),
    CONSTRAINT FK_Student_Athlete FOREIGN KEY (StudentID, Subclass) REFERENCES Student(StudentID, Subclass)
);

CREATE TABLE Musician (
    StudentID INT NOT NULL PRIMARY KEY,
    SubClass CHAR(1) NOT NULL,
    Instrument VARCHAR(200) NOT NULL,
    CONSTRAINT CHK_Band_Nerd CHECK (SubClass = 'M'),
    CONSTRAINT FK_Student_Musician FOREIGN KEY (StudentID, Subclass) REFERENCES Student(StudentID, Subclass)
);


  1. Återställ en SQL Server-databas (T-SQL)

  2. Hur gör jag för att php ska fungera med postgresql?

  3. Vad är den lagrade förfarandet och varför den lagrade förfarandet?

  4. Var lagrar PostgreSQL konfigurations-/conf-filer?