我理解前两个外键。 咨询从医生获得 ,患者 nhi ,因为它们来自其他表格。但是,我不了解最后两个外键,我不知道它们是什么意思。是否有人能够帮助我理解。或许可以通过英文描述究竟发生了什么?
答案 0 :(得分:1)
要说从一个表的列到另一个表中有一个外键(FK)就是说
(第一个表的列不必与第二个表中的列具有相同的名称。如果有多个列,则列表中的顺序通常用于表示第一个表列引用的是哪个第二个表列。)
所以FK实际上是一种约束或条件。对于给定的表是否满足(是的)(持有)。 (你的问题是“它们是来自其他桌子的钥匙”,它是如此草率,以至于它无助于你理解。)
表是什么意思(一些由其列参数化的句子)决定了它的值(满足(即为真)(即保持)给定应用情况的行。例如,Consult将行包含在:
patient [nhi] consulted doctor [did] on [date] with diagnosis [diagnosis]
让我们检查每个外键(约束/条件)是否满足(即为真)(即等于)您为Consult和Patient提供的特定表值:
1咨询确实参考医生做了TRUE,因为每个咨询确实是一些医生做了价值
2咨询nhi参考患者nhi因为每个咨询nhi 某些患者nhi值
3咨询nhi参考医生做了TRUE,因为每个咨询nhi 是一些医生做了价值
4咨询确实参考患者nhi因为每个咨询确实是某些患者nhi值
<强> PS 强>
我们告诉DBMS,每个数据库状态都满足某些给定的FK。因此DBMS不允许不满足FK的状态。 (它们是错误。)声明创建一个名为FK的对,称为DBMS约束,具有给定的FK和(可能是默认/隐式)名称。因此,“FK”和“约束”用于表示DBMS约束(名称-FK对)和一个FK。
在具有这些表和含义的数据库中,每个州都将满足FK 1和2,因此我们将它们声明给DBMS。并非每个州都满足3和4所以我们不会。我们会在该数据库中说“有FK 1和2”,“3和4不是FK”。但这是一种草率的方式,说数据库满足1和2但不满足3和4,或者我们宣布1和2但不满足3或4。
<强> PPS 强>
FK可以用表的含义来表达。假设表T1是T1(c1,...,x1,......)和T2是T2(c2,...,x2,...)的行。那么FK就是
T1 (c1,...) references T2 (c2,...)
是FK
EXISTS x1,... T1(c1,...,x1,....) IMPLIES EXISTS x2,... T2(c2,...,x2,...)
例如,如果咨询(nhi,做,日期,诊断)(即患者[nhi]在诊断[诊断]的日期[日期]咨询医生[确实])对某些患者,日期和诊断然后患者(nhi,pname) ,bday)(即患者[nhd]名为[pname]出生于[bday])某些pname和bday。即如果nhi咨询过医生,那么nhi就是病人。