需要数据库设计规范化帮助(5nf)

时间:2010-08-05 14:37:24

标签: mysql sql oracle erd

你们能告诉我如何以第5范式获得这个ERD吗?昨天我们做了一个班级任务,我们有一个真正的客户进来并向我们解释他的需要我的小组想出了这个模型我试图更进一步,看看我能不能把它变成第5范式以便我可以更好地理解它,因为下周我们将做另一组ERD,必须在5nf,事情是我不知道从哪里开始,这本书没有通过我。你能帮助我吗Erd Model http://img534.imageshack.us/img534/2118/capturekk.jpg

新信息“虚假客户需求”

  

客户有2个部门“实验1,   实验2“从中订购医疗用品   他,像手套和π宠物等。   部门已经成长,他   想要跟踪内容   清点供应商销售的产品   谁有最好的价格和成本   它来自中心。

     

他的方式   解释说这个项目是订购的   一个人去找他并要求   他然后写下了什么实验室   这个人来自人名   什么是成本中心。但是他   也想跟踪已经发生的事情   按日期购买,库存什么   什么必须买。他还   举了一些用户想要的例子   来自特定供应商的商品   可能没有最优惠的价格和他   还收到了一些目录   邮件也是他想要的价格   轨道。

我道歉,如果它混乱,但这都是记忆。

2 个答案:

答案 0 :(得分:4)

我要坚持下去,说你当前的架构并没有5NF的任何资格。从维基百科中引用,它说大多数4NF表已经符合5NF:

  

用法仅在极少数情况下才能使用   4NF表不符合5NF。这些   是复杂的情况   管理现实世界的约束   属性值的有效组合   在4NF表中没有隐含   该表的结构。如果这样的话   表未标准化为5NF,   保持逻辑的负担   内部数据的一致性   桌子必须由部分携带   申请负责   插入,删除和更新   它;而且风险更高   表中的数据会   变得不一致。相比之下,   5NF设计排除了可能性   这种不一致。

http://en.wikipedia.org/wiki/Fifth_normal_form

也许目的不是让你的数据库成为5NF,而是要理解它与5NF相比的结构,并为它可能已经存在于5NF中的原因提出论据。

更新:从评论中读到某种形式的共识,看来你的设计可能已经在5NF,无论是设计还是意外通过以前的规范化传递。

答案 1 :(得分:1)

免责声明:如果不了解您的业务逻辑,我可能会完全错误地提出以下建议。

确定我在数据库架构中看到的一些内容。

  1. 您的费用中心表看起来既是查找表又是关联表。因此,如果您有一定数量的成本中心,例如5个但是1000个用户,则此表将有5000条记录,这些记录都存储成本中心名称(假设成本中心分配对每个用户而言并非唯一)。您可能希望将用户关联拆分为单独的表,该表具有自己的PK以及costcenterId和userId的FK。
  2. 您的库存表,我假设存储物品库存量,应该只需要一个不确定描述的数量。如果描述对于每个商品库存不是唯一的,您可能希望将其拆分为自己的查找表并在库存表中引用它。
  3. 您正在供应商表中存储“lineQuantity”。这个专栏是什么?听起来它与某种特定订单有关(购买的商品数量?)如果是这样,你会想把它拆分成自己的表并将它与订单而不是供应商联系起来。虽然这个建议可能完全错误,但却不知道究竟是什么lineQuantity。
  4. 最后的建议不确定这对您的班级是否重要。您将所有数据类型定义为CHAR(10),您可能希望将这些数据类型更改为将用于数据库的实际数据类型。