gpt4 book ai didi

mysql - 数据库从UNF规范到1NF时是否需要带上非重复表的主键

转载 作者:行者123 更新时间:2023-11-29 11:46:46 25 4
gpt4 key购买 nike

我的UNF是

database(
manager_id,
manager_name,
{supplier_id,
supplier_name,
{order_id,
order_quantity}}
{purchase_id,
purchase_date}

这里 manager_namesupplier_idorder_idpurchase_id 是主键。在标准化期间,将有 1 个名为 purchase 的表。是否有必要将manager_name设为外键?

如何标准化这些数据库?

这是我大学数据库项目的一部分。标准化确实令人困惑。

最佳答案

首先考虑将自然组合在一起的事物分开。在这种情况下,您有经理信息、供应商信息、订单信息和采购信息。我个人想知道订单和购买之间的区别,因为我不清楚。

因此,您至少有四个表来存储这些单独的信​​息(尽管根据您可能需要的其他字段,供应商和经理可以位于同一个表中,并使用诸如 person_type 之类的附加字段来区分它们,在本例中您需要一个查找表来从中获取有效的人员类型值)。然后你需要看看这些事情是如何相互关联的。他们是一对一的关系还是一对多或多对多的关系?在一对一关系中,需要外键也有索引的唯一约束以保持唯一性。在多对多中,您将需要一个包含两个 id 的附加连接表。

否则,在最简单的情况下,采购子表将具有经理、供应商的 FK。和订单表。

经理姓名在任何情况下都不应是主键。很多人都有相同的名字。使用 Manager ID 作为键,因为它是唯一的,而名称则不然。一般来说,我更喜欢将名字分成名字、中间名和姓氏,这样你就可以轻松地按姓氏进行排序。然而,在某些文化中,这并不那么有效。

关于mysql - 数据库从UNF规范到1NF时是否需要带上非重复表的主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34794302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com