我想显示表和不同表之间的关系。 这是一个场景。 我有一个表犯罪,另一个包含crime_rape。
table crime
id type name
001 VNC Rape
002 CCD Theft
003 VNC Rape
004 ATA Rape
table crime_rape
id type
001 VNC
004 ATA
他们之间可以有任何关系吗? VNC表犯罪的主要关键是001& 003但是由于crime_rape需要区分,我可以在表中使用什么外键来显示VNC?
_我只掌握DB的基本知识。 非常感谢您的帮助。谢谢
答案 0 :(得分:1)
在你的犯罪表中重复数据,所以如果你想要一对多关系,你应该为关系创建第三个表,如
表犯罪
id类型名称
001 VNC强奸
002 CCD盗窃
<00> 003 ATA强奸crime_rape
id type
001 VNC
<00> 004 ATAtable crime_rape_relation
id crime_id rape_id
001 001 001
002 003 004
答案 1 :(得分:0)
DISTINCT关键字可用于仅返回不同(不同)的值
所以你浪费你的资源来制作两个相似的表。要制作第二个表格,只需输入SELECT DISTINCT id, type FROM crime;
答案 2 :(得分:0)
通过“关系”,我猜你的意思是“关系”,在某些面向ER的方法中,这意味着“外键”。
type
所需的约束是“包含依赖性”约束。它表示某些列列表的子行值必须显示为引用列列表的子行值。 SQL foriegn键约束是引用(超级)键(即唯一列集)的包含依赖性约束。 SQL通常无法以声明方式强制执行包含依赖项。
但实际上您可能希望(id,type)
值的对出现在crime
中。如果是这样,那么在你的第二个表中:
constraint foreign key (id,type) references crime (id,type)
由于crime
id
是唯一的,因此包含它的每个列集都是唯一的。但SQL要求将外键的引用列列表显式声明为键。所以在crime
中你需要:
constraint unique not null (id,type)