Setiap catatan Siswa akan memiliki kolom SubKelas (asumsikan demi argumen itu adalah CHAR(1)). {A =Atlet, M=musisi...}
Sekarang buat tabel Atlet dan Musisi Anda. Mereka juga harus memiliki kolom SubClass, tetapi harus ada batasan centang yang mengkodekan nilai untuk jenis tabel yang mereka wakili. Misalnya, Anda harus meletakkan default 'A' dan batasan CHECK 'A' untuk kolom SubClass pada tabel Athlete.
Tautkan tabel Musisi dan Atlet Anda ke tabel Siswa menggunakan kunci asing COMPOSITE dari StudentID AND Subclass. Dan Anda sudah selesai! Pergi menikmati secangkir kopi yang enak.
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)
);