Każdy rekord Studenta będzie miał kolumnę SubClass (załóżmy, że jest to CHAR(1)). {A =sportowiec, M=muzyk...}
Teraz stwórz swoje stoły dla sportowców i muzyków. Powinny również mieć kolumnę SubClass, ale powinno istnieć ograniczenie sprawdzające, które na stałe zakoduje wartość dla typu tabeli, którą reprezentują. Na przykład, powinieneś umieścić domyślną wartość 'A' i ograniczenie CHECK na 'A' dla kolumny SubClass w tabeli Atlete.
Połącz tabele Muzyk i Sportowiec z tabelą Uczeń za pomocą klucza obcego KOMPOZYTOWEGO StudentID I Subclass. I jesteś skończony! Idź napić się dobrej kawy.
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)
);