Database design 一个外键引用多个表';s主键

Database design 一个外键引用多个表';s主键,database-design,foreign-keys,schema,primary-key,rdbms,Database Design,Foreign Keys,Schema,Primary Key,Rdbms,一个外键引用多个表的主键 其中primary1表有两列primary1\u id int(11)和first\u name varchar(10),其中primary1\u id是主键 与primary1表相同,primary2表也有两列primary2\u id int和last\u name varchar,其中primary2\u id是主键 **还有一个**foreign1表有两列foreign\u id int和full\u name int,其中full\u name是一个外键,它指

一个外键引用多个表的主键

其中primary1表有两列primary1\u id int(11)first\u name varchar(10),其中primary1\u id主键

primary1表相同,primary2表也有两列primary2\u id intlast\u name varchar,其中primary2\u id是主键

**还有一个**foreign1表有两列foreign\u id intfull\u name int,其中full\u name是一个外键,它指的是多个表的主键primary1\u id,以及primary2\u id

外键全名仅允许插入在主1\u id主2\u id列中相同的值

因此,如果我在primary1表中输入五个条目,在primary2表中输入四个条目

其中primary1\u id设置为1到5,primary2\u id设置为1到4


但是为什么这个外键全名只允许我输入在两个主键的表中都可用的1到4

这在我的经验中是不寻常的,但作为一种实现某些业务规则的方法,它可能具有类似于“a必须同时是B和C”的含义

一个可能的例子是:StaffDiscount表,用于识别同时也是员工且有资格享受折扣的客户。这样的表可能有一个同时引用Customer表和Employee表的外键。这确实假设使用公共密钥来标识客户和员工

CREATE TABLE StaffDiscount
 (CustomerEmployee INT NOT NULL PRIMARY KEY /* Same key identifies customer and employee */,
  FOREIGN KEY (CustomerEmployee) REFERENCES Customer (CustomerNum),
  FOREIGN KEY (CustomerEmployee) REFERENCES Employee (EmployeeNum));

是的,当一个人要在多个表之间创建关系时,这是可能的。因为外键的存在表明所有与该表相关的表都存在。并帮助在单个关系查询中从该环境检索数据

你的问题不清楚。请解释你所说的“有用”是什么意思。在FK(外键)的意义上,您似乎将“relation”(错误地)用于“relationship”。这些设计的来源说明了什么?你理解什么&不理解什么?FK表示,值必须以PK/UNIQUE的形式出现在其他位置。为什么这还不足以让人知道。“外键约束仅显示在所有主键约束表中通用的主ID”不清楚。请写得更清楚些。使用更多的单词和句子;把事情说清楚;不要试图把它塞进一句话里。试试translate.google.com,它最近通过AI.Hi变得更好了。当你说“为什么”时,我想你知道FKs说全名值必须显示为PKs,所以我想你的意思是,什么样的业务环境会有这样的设计?但实际上你并没有说清楚。(另请参阅我上一篇评论的其他部分。)我猜是你编造了这些列名,因为在日常生活中,每个全名都被限制为名和姓是没有意义的。但我的每个队友都必须是运动员和成年人。PS查看sqlvogel的答案如何以简洁、标准甚至正式的方式呈现表格。添加了一些SQL示例