Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Utrzymanie integralności podklas w relacyjnej bazie danych

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)
);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przewodnik dla początkujących po tablicach SQL

  2. SQL Server SELECT, gdzie dowolna kolumna zawiera „x”

  3. Indeksy SQL Server — rosnąco czy malejąco, co to za różnica?

  4. Zapytanie SQL „LIKE” przy użyciu „%”, gdzie kryteria wyszukiwania zawierają „%”

  5. Informacje o poleceniu GO w SQL Server