这个问题适用于不同的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)
);
tableMale
和tableFemale
之所以分开是因为它们是由不同的 sql 帐户维护的。
现在的问题是Association Class。
CREATE Student_Class
(
SudentID INT,
ClassID INT,
CONSTRAINT tb_UQ UNIQUE (StudentID, ClassID)
)
所以我的问题是:
- 如何设置
StudentID
表Male
和Female
. 我在网上找不到那个。 - 如何强制执行
Foreign Key
关联类表的值列来自两个表的约束:Male
和Female
?
建议也被接受。
谢谢你