我的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
是主键。
在规范化期间,将有一个名为purchase
的表。是否有必要将manager_name
作为外键?
如何规范化这些数据库?
这是我的数据库大学项目的一部分。规范化确实令人困惑。
答案 0 :(得分:1)
首先考虑通过自然结合在一起的事物来分解事物。在这种情况下,您有经理信息,供应商信息,订单信息和购买信息。我个人想知道订单和购买之间的区别,因为我不清楚。
因此,您至少有四个表用于这些单独的信息(尽管取决于您可能需要的其他字段,供应商和经理可以在同一个表中使用其他字段,例如person_type来区分它们,在这种情况下您希望查找表从中获取有效的人员类型值。然后你需要看看这些东西是如何相互关联的。他们是一对一的关系还是一对多或多对多的关系?在一对一的关系中,您需要FK也有一个唯一的索引约束来保持唯一性。在多对多中,您将需要一个包含两个ID的附加联结表。
否则,在最简单的情况下,购买子表将向经理,供应商提供FK。和订购表。
管理员名称在任何情况下都不应是主键。很多人都有相同的名字。使用Manager ID作为密钥,因为它在名称不是的地方是唯一的。一般来说,我更喜欢将名称分为First,middle和last,以便您可以轻松地对姓氏进行排序。但是在某些文化中,这种方法效果不佳。