這個問題是適用於不同的RDBMS
定義外鍵約束:MySQL
和SQL Server
強制唯一性,並從多個表
我一直在通宵尋找這一點,我無法找到它在網絡上。我的問題全是關於的唯一性和外鍵。考慮以下方案:
CREATE TABLE Male
(
StudentID INT,
FirstName VARCHAR(20) NOT NULL,
MiddleName VARCHAR(20) NOT NULL,
LastName VARCHAR(20) NOT NULL,
-- other columns ...
CONSTRAINT male_PK PRIMARY KEY (StudentID),
CONSTRAINT male_UQ UNIQUE (FirstName, MiddleName, LastName)
);
CREATE TABLE Female
(
StudentID INT,
FirstName VARCHAR(20) NOT NULL,
MiddleName VARCHAR(20) NOT NULL,
LastName VARCHAR(20) NOT NULL,
-- other columns ...
CONSTRAINT Female_PK PRIMARY KEY (StudentID),
CONSTRAINT Female_UQ UNIQUE (FirstName, MiddleName, LastName)
);
CREATE TABLE ClassList
(
ClassID INT,
Name VARCHAR(30),
ClassYear INT,
-- other columns ...
CONSTRAINT ClassList_PK PRIMARY KEY (ClassID),
CONSTRAINT ClassList_UQ UNIQUE (Name, ClassYear)
);
爲什麼表Male
和Female
分開的原因是因爲它們是由不同的SQL帳戶維護。現在
的問題是協會類。
CREATE Student_Class
(
SudentID INT,
ClassID INT,
CONSTRAINT tb_UQ UNIQUE (StudentID, ClassID)
)
所以我的問題是:
- 我如何設置的
StudentID
的獨特性來自兩個表Male
和Female
。我無法在網上找到。 - 如何執行
Foreign Key
約束,其中關聯類表的值列來自兩個表:Male
和Female
?
建議也被接受。
謝謝
你真的想爲女性和男性的兩個表?或者這只是個例子? –
爲什麼不創建顯示StudentID,Gender的第三個表。在這裏,你可以保持學生身份的獨特性,同時追蹤他們的性別。您可以在男性和女性表格中製作StudentID外鍵。 – HerpaMoTeH
@HamletHakobyan它的設計,我不能改變表。我的工作是創建關聯課程。 – Walter