数据库从UNF规范化到1NF时是否需要带上不重复的主键table
Is it necessary to bring the primary key of non repeating table while normalizing the database from UNF to 1NF
我的 UNF 是
database(
manager_id,
manager_name,
{supplier_id,
supplier_name,
{order_id,
order_quantity}}
{purchase_id,
purchase_date}
这里的manager_name
、supplier_id
、order_id
、purchase_id
为主键。
在归一化期间,将有 1 个 table 称为 purchase
。有必要把manager_name
做成外键吗?
如何规范这些数据库?
这是我大学数据库项目的一部分。规范化真的很混乱。
首先考虑将自然在一起的事物分开。在这种情况下,您有经理信息、供应商信息、订单信息和采购信息。我个人想知道订单和购买之间的区别,因为我不清楚。
因此,对于这些单独的信息,您至少有四个 table(尽管根据您可能需要的其他字段,供应商和经理可能在同一个 table 中,另外还有一个person_type 字段来区分它们,在这种情况下,您需要查找 table 以从中获取有效的人员类型值)。然后你需要看看这些东西是如何相互关联的。他们是一对一关系还是 one-to 多或多对多关系?在one-to one关系中,需要FK也有索引的唯一约束来保持唯一性。在多对多中,您将需要一个包含两个 ID 的附加联结 table。
否则在最简单的情况下,采购的child table 将FK 给经理、供应商。并订购 tables.
经理姓名在任何情况下都不应是主键。许多人有相同的名字。使用经理 ID 作为键,因为它是唯一的,而名称不是。一般来说,我更喜欢把名字分成名字、中间名和姓氏,这样你就可以很容易地按姓氏排序。然而,在某些文化中,这并不适用。
我的 UNF 是
database(
manager_id,
manager_name,
{supplier_id,
supplier_name,
{order_id,
order_quantity}}
{purchase_id,
purchase_date}
这里的manager_name
、supplier_id
、order_id
、purchase_id
为主键。
在归一化期间,将有 1 个 table 称为 purchase
。有必要把manager_name
做成外键吗?
如何规范这些数据库?
这是我大学数据库项目的一部分。规范化真的很混乱。
首先考虑将自然在一起的事物分开。在这种情况下,您有经理信息、供应商信息、订单信息和采购信息。我个人想知道订单和购买之间的区别,因为我不清楚。
因此,对于这些单独的信息,您至少有四个 table(尽管根据您可能需要的其他字段,供应商和经理可能在同一个 table 中,另外还有一个person_type 字段来区分它们,在这种情况下,您需要查找 table 以从中获取有效的人员类型值)。然后你需要看看这些东西是如何相互关联的。他们是一对一关系还是 one-to 多或多对多关系?在one-to one关系中,需要FK也有索引的唯一约束来保持唯一性。在多对多中,您将需要一个包含两个 ID 的附加联结 table。
否则在最简单的情况下,采购的child table 将FK 给经理、供应商。并订购 tables.
经理姓名在任何情况下都不应是主键。许多人有相同的名字。使用经理 ID 作为键,因为它是唯一的,而名称不是。一般来说,我更喜欢把名字分成名字、中间名和姓氏,这样你就可以很容易地按姓氏排序。然而,在某些文化中,这并不适用。