我有功课,我需要创建简单的Web界面和规范化为3NF的数据库.我选择ISP客户端自我护理作为我的数据库目的. Web界面没问题,规范化的DB就是.经过一段非常艰难的时间后,我想出了下面的模型.
我想知道它是否在3NF?!如果不是,如果你解释原因,我会很高兴.
解决方法:
我会说你非常接近公平 – 而且我认为(尽管这是个人观点)3NF在教育层面更重要,它涉及到现实世界.我这样说是因为获得完美的3NF并不总是合乎逻辑或实际的,这可能是由于应用程序设计或查询的性能等等…
话虽这么说,我能记住3NF的最好的事情是朋友曾经告诉我的一句话(谁在书中读到它是公平的!)就是这样:每个非关键属性必须提供关于钥匙,整个钥匙,只有钥匙. – 我认为原来是比尔肯特的人.
所以在此基础上,你可以做一些小的改进;我们以你的城市表为例.你有一个ID,标题和邮政编码;好吧,如果你考虑一下,每个城市有很多邮政编码,你的设计意味着每个新的邮政编码,你需要再次添加ID和标题 – 从而打破了3NF的要求.为此你可以有一个名为PostCodes的附加表,它可以包含ID,Name和City列,然后你可以用这种方式引用你的城市 – 这是更好的.具有地址字段的客户信息表也是如此 – 但是很可能地址可以在很多人之间共享,电话号码,电子邮件地址等也可以获得图片!
记住它的最好方法是 – 如果有可能你必须复制信息只是为了满足你的设计 – 那么你要么有特殊要求(这是可能的 – 就像我说的“现实世界”)或你的设计是错 – 你需要根据具体情况来判断.
我希望这对你有所帮助.
标签:mysql,database-design,normalization
来源: https://codeday.me/bug/20190806/1595101.html