Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Mempertahankan integritas subclass dalam database relasional

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa perbedaan antara char, nchar, varchar, dan nvarchar di SQL Server?

  2. Tetapkan nilai awal untuk kolom dengan peningkatan otomatis

  3. Trik Cepat dan Terbaik Untuk Pemulihan File MDF SQL Server

  4. SQL bersyarat ORDER BY ASC/DESC untuk kolom alfa

  5. Cara Menampilkan Tanggal dalam Format Tanggal AS di SQL Server (T-SQL)