【问题标题】:Normalising a form规范化表格
【发布时间】:2010-10-15 08:47:36
【问题描述】:

我真的很难规范客户会议表格。

详情如下

Client_Name、Client_phone(标准化)

日期、时间、地点、Person_met、地点、key_notes、职员(重复组)

在第一个 NF 中,我知道 Client_Name(给定一个 client_ID 键)将是重复组中的外键,但我不知道哪个属性将是主键。

日期和时间会识别会议吗?不确定是否可以有两个主键?

任何帮助将不胜感激。

【问题讨论】:

  • 规范化确实与关系系统有关,并与关系表的模式有关。规范化理论确实不适用于表单。
  • 您的重复组集中有两个位置字段。这是两个不同的位置,还是只是一个位置(不小心输入了两次)?另外,Staff 代表什么?

标签: database database-design normalization


【解决方案1】:

我认为日期、时间和位置应该是复合主键(您可能可以同时开多个会议......)。
不过,我不确定您所说的“重复组”是什么意思。

【讨论】:

  • 谢谢你,这是有道理的。关于重复组,我的意思是删除属性表中可能不止一个条目的数据。 IE。在存储客户会议的表格上,作为一个表格,日期、地点、会面的人等会出现不止一次。
【解决方案2】:

我个人不喜欢复合键,除非有物理原因(例如:它将用于跳转层次结构)。我建议使用代理键。 PK 应该是自然发生的、独特的、强制性的并且最好是稳定的(即未修改)。 由于这种情况很少发生,因此通常使用代理键(添加的列,通常由 RDBMS 分配一个递增的数字)。

在您的示例中,日期和时间不应该是 PK,因为可以想象有两次会议具有确切的日期和时间(尽管不太可能,但仍然......)。 如果您必须拥有一个复合键,则需要日期、时间和客户名称 pt 使其唯一,因为同一个客户不能同时参加两个会议(对吗?) 另外,我注意到位置在那里两次。根据第三个 NF,可能需要在单独的查找表中作为位置 ID。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-20
    • 2013-02-22
    • 1970-01-01
    • 2021-11-07
    • 2016-07-08
    • 2011-05-09
    • 2021-10-09
    相关资源
    最近更新 更多