表和不同表之间的关系

时间:2015-10-14 02:51:15

标签: mysql database database-design erd distinct-values

我想显示表和不同表之间的关系。 这是一个场景。 我有一个表犯罪,另一个包含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的基本知识。 非常感谢您的帮助。谢谢

3 个答案:

答案 0 :(得分:1)

在你的犯罪表中重复数据,所以如果你想要一对多关系,你应该为关系创建第三个表,如

表犯罪

id类型名称

001 VNC强奸

002 CCD盗窃

<00> 003 ATA强奸

crime_rape

id type

001 VNC

<00> 004 ATA

table 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)