MySQL单表多外键
我有以下表格: 表设备\u IDMySQL单表多外键,mysql,database-design,foreign-keys,Mysql,Database Design,Foreign Keys,我有以下表格: 表设备\u ID devId dev1 dev2 dev3 表格用户: user phone mail user1 12345 1@mail.com user2 13246 2@mail.com user3 54321 3#mail.com 表格类型: type type1 type2 type3 type4 其中,DEVID、USER和TYPE是主键。然后,我需要一个具有唯一报警ID的表,并引用其中的几个表: 表格报警: alarmId users
devId
dev1
dev2
dev3
表格用户:
user phone mail
user1 12345 1@mail.com
user2 13246 2@mail.com
user3 54321 3#mail.com
表格类型:
type
type1
type2
type3
type4
其中,DEVID、USER和TYPE是主键。然后,我需要一个具有唯一报警ID的表,并引用其中的几个表: 表格报警:
alarmId users types devices
1 user1,user2 type4,type2 dev1,dev2
2 user1,user3 type1,type3 dev2,dev3
2 user2,user3 type4,type3 dev1,dev3
这可能吗?这意味着报警表中的每个值都是对其他表值的引用。我知道我可以用一个值来做这件事,但我需要用很多值来做
或者可能是数据库设计不好 您的表报警每列每行只有一个FK。或者,您可以使用“链接”表在报警中的每一行和其他表之间创建多对多关系。看,警报用户将有一个用户密钥和警报密钥。其他两张桌子也一样。真正的问题是现实世界中“事物”之间的关系是什么。警报可以有多个用户吗?它可以有多种类型吗?它可以有多个设备吗?我猜最后两个答案是肯定的,但是每个设备可以有多种类型吗?链接表上的建议:每个警报的属性是什么?例如,在我们的手机上,闹钟有时间、开/关、铃声等。您的表闹钟应该只包含闹钟的属性,其他所有内容都应该通过链接表链接。不要再考虑“对表的引用”,而要考虑表中的一行内容。您对报警(alarmId、用户、类型、设备)感兴趣“报警alarmId是类型,涉及用户和设备”。真的是这样的吗?该表的行被限制为始终必须表示这些行对表报警(alarmId、userSetId、typeSetId、deviceSetId)“alarmId和…set-typeSetId…set-useSetId…set-deviceSetId”以及userSet(id、user)的作用,等等?最后,如果一个表受到限制,则声明一个约束(PK、UNIQUE、FK等)。