Всеки запис на ученик ще има колона SubClass (за аргумента приемем, че това е CHAR(1)). {A =Спортист, M=музикант...}
Сега създайте своите таблици за спортисти и музиканти. Те също трябва да имат колона SubClass, но трябва да има ограничение за проверка, твърдо кодиращо стойността за типа таблица, която представляват. Например, трябва да поставите по подразбиране „A“ и ограничение CHECK на „A“ за колоната SubClass в таблицата Athlete.
Свържете вашите таблици Musician и Athlete с таблицата Student, като използвате КОМПОЗИТЕН външен ключ на StudentID И Подклас. И сте готови! Отидете да се насладите на чаша хубаво кафе.
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)
);