在两个表之间有多个外键是否有意义

邓皓天*_*邓皓天 3 sql database foreign-keys

我正在学习Sqlalchemy,并注意到通过关联表名来定义外键关系而不识别连接两个表的实际外键,所以我想,如果两个表之间有多个外键(如果有的话)有意义的是,sqlalchemy无法确定用于链接两个表的密钥.无论如何,我的问题是:在两个表之间有多个外键是否有意义

Bil*_*win 9

是的,确实存在一个表可以有多个外键到父表的不同行的情况.

下面是一个示例:错误跟踪数据库中的一个表,它引用了三个不同的用户.报告错误的用户,分配用于修复错误的工程师以及分配用于验证错误的测试人员已修复.

CREATE TABLE Bugs (
  bug_id INT PRIMARY KEY,
  reporter INT NOT NULL REFERENCES Users(user_id),
  assigned_to INT REFERENCES Users(user_id),
  verified_by INT REFERENCES Users(user_id),
  ...
);
Run Code Online (Sandbox Code Playgroud)

如果每个用户可能是不同的人,则每个用户都需要一个不同的外键.

这是另一个例子:货运应用程序跟踪每个货件并记录原产国和目的地国家.

CREATE TABLE Shipments (
  ...
  origin_country INT NOT NULL REFERENCES Countries(country_id),
  destination_country INT NOT NULL REFERENCES Countries(country_id),
  ...
);
Run Code Online (Sandbox Code Playgroud)