在外键字段上的两个表之间进行循环引用是否可以接受?
如果没有,如何避免这些情况?
如果是这样,如何插入数据?
以下是(在我看来)可以接受循环引用的示例:
CREATE TABLE Account
(
ID INT PRIMARY KEY IDENTITY,
Name VARCHAR(50)
)
CREATE TABLE Contact
(
ID INT PRIMARY KEY IDENTITY,
Name VARCHAR(50),
AccountID INT FOREIGN KEY REFERENCES Account(ID)
)
ALTER TABLE Account ADD PrimaryContactID INT FOREIGN KEY REFERENCES Contact(ID)
Run Code Online (Sandbox Code Playgroud) 我应该如何在 SQL 中实现以下实体关系图中描述的场景?
如图所示,每个A
实体类型出现都必须与至少一个 B
对应项(由双连接线表示)相关,反之亦然。我知道我应该创建以下三个表:
CREATE TABLE A
(
a INT NOT NULL,
CONSTRAINT A_PK PRIMARY KEY (a)
);
CREATE TABLE B
(
b INT NOT NULL,
CONSTRAINT B_PK PRIMARY KEY (b)
);
CREATE TABLE R
(
a INT NOT NULL,
b INT NOT NULL,
CONSTRAINT R_PK PRIMARY KEY (a, b),
CONSTRAINT R_to_A_FK FOREIGN KEY (a)
REFERENCES A (a),
CONSTRAINT R_to_B_FK FOREIGN KEY (b)
REFERENCES B (b)
);
Run Code Online (Sandbox Code Playgroud)
但是,如何实现总参与约束(即,强制执行其中之一的每个 …