sql >> Databáze >  >> RDS >> Sqlserver

Udržování integrity podtřídy v relační databázi

Každý záznam Student bude mít sloupec SubClass (předpokládejme, že je to CHAR(1)). {A =sportovec, M=hudebník...}

Nyní si vytvořte stoly pro sportovce a hudebníky. Měly by mít také sloupec SubClass, ale měla by existovat kontrolní podmínka pevně kódující hodnotu pro typ tabulky, kterou představují. Například byste měli nastavit výchozí hodnotu 'A' a omezení CHECK 'A' pro sloupec Podtřída v tabulce Sportovec.

Propojte své tabulky Hudebník a Sportovec s tabulkou Student pomocí KOMPOZITNÍHO cizího klíče StudentID AND Subclass. A máte hotovo! Jděte si vychutnat šálek dobré kávy.

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. Oracle datum mezi dotazem

  2. SQL dotaz k nalezení počtu společných přátel podle tabulky osoba, přítel pár

  3. Příkaz aktualizace Pythonu MYSQL

  4. Rozdělit hodnoty do více řádků