我知道这对某些人来说可能是一个愚蠢的问题,但是我需要在3NF中拥有这个数据库,但对于规范化知之甚少,因为我们的老师还没有涵盖它。有人可以给我一个简单的是或否答案是否在3NF,如果不是,建议任何改变。感谢。
答案 0 :(得分:0)
简单回答否。谷歌传递依赖,甚至只是谷歌3NF?
为什么会这样?因为您有一些列依赖于同一个表中的其他列,其中这些列不是主键的一部分。
例如,在您的客户表中,您有邮政编码和城镇,但两者之间存在关系,即如果没有巴黎城镇,您就无法拥有巴黎邮政编码。这是非常弱的传递依赖,并且大多数数据库都没有考虑到它的不良做法,但我认为这足以打破3NF。
还有一个地方不太清楚,但我很确定你打破3NF。在您的付款表中,您有存款付款,总价,仍需支付的金额和全额付款。有一个论点,给定总价和存款支付,你可以确定仍然支付的金额。有一个非常强烈的论据,你总是可以从其他三个“付费”栏中确定完全支付。
答案 1 :(得分:0)
还要为所有表添加create_date,end_date(Date),active(nvarchar2(1)或integer)。在您的选择中使用active = 1条件。