Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 涉及多个子类项的关系_Mysql_Sql_Database Design_Mysql Workbench_Database Schema - Fatal编程技术网

Mysql 涉及多个子类项的关系

Mysql 涉及多个子类项的关系,mysql,sql,database-design,mysql-workbench,database-schema,Mysql,Sql,Database Design,Mysql Workbench,Database Schema,我目前正在设计“酒吧啤酒饮用者”数据库的扩展(该数据库通常用于教授基本的SQL查询) 作为设计的一部分,我创建了遵循“ISA”模式的实体,特别是: “啤酒”、“食品”和“其他物品”都是“物品”的“子类” 涉及的另一个实体是Bars实体 在酒吧和商品之间,我有一个叫做“销售”的关系实体 这些表的架构如下所示: Bar[ID(pk), Name, State, Address, Phone, Open, Close] Beers[Name(pk), Manf] Food[Name(pk), Manf

我目前正在设计“酒吧啤酒饮用者”数据库的扩展(该数据库通常用于教授基本的SQL查询)

作为设计的一部分,我创建了遵循“ISA”模式的实体,特别是: “啤酒”、“食品”和“其他物品”都是“物品”的“子类”

涉及的另一个实体是Bars实体

在酒吧和商品之间,我有一个叫做“销售”的关系实体

这些表的架构如下所示:

Bar[ID(pk), Name, State, Address, Phone, Open, Close]
Beers[Name(pk), Manf]
Food[Name(pk), Manf]
OtherItems[Name(pk), Manf].
目前,我没有名为“Items”的表

对于Sells表,架构为:

Sells[barID(fk), item(fk), price]
我希望将这三个表中的PKs全部映射到seals中的“item”列中。也就是说,我可以在里面放一个啤酒的名字,一个食物的名字,或者一个其他物品的名字


这在MySQLWorkBench中似乎不起作用,因为它不允许我将多个外键引用到同一列

我对这个问题的潜在解决方案是:

Sells[barID{fk), beerItem(fk), foodItem(fk), otherItem(fk), price]

然而,这将导致每个元组至少有两个空值。这可以接受吗?在SQL的关系实体中包含“ISA”关系的首选方式是什么?

这个问题非常类似于。答案基本相同:不,不能有多个外键指向同一列。正如Guffa所说,回答这个问题的人说,“你怎么知道在哪里找钥匙?”

您可以使用建议的解决方案来实现这一点,尽管正如您所指出的,这并不理想。它根本没有标准化

问题是子类型有多个表。真正的答案是拥有当前没有的“items”表,并添加一个“type”字段

项目{ItemID(pk)、ItemName、ItemType}


这样,您就可以使用ItemID作为您打算首先使用的外键。但是,您可以根据需要/目标等进行选择,但不能将多个表与外键链接到同一列。这样做有一个db无法解决的模糊性问题。

“它不允许我将多个外键引用到同一列”这很奇怪,您到底尝试了什么?给出您希望生成的DDL。当你们谈论FK时,给出什么表和列列表引用什么表和列列表。(另外,你的句子没有什么意义,所以你能重新措辞吗?FKs参考,你不知道。)另外: