这个问题是适用于不同的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