MySQL单表多外键

MySQL单表多外键,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

我有以下表格:

表设备\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        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等)。