例如,规范太多与太少相比?

时间:2012-05-14 19:03:02

标签: database schema normalization denormalization

我通常不会设计数据库,因此我对如何规范(或不)注册用户的表有疑问。我怀疑的领域是:

  • locationTown:我计划为各个国家/地区进行规范化,并为其设置单独的表格,但我是否应该为城镇做同样的事情?我想用户会在注册时键入此内容,而不是从下拉列表中选择。当输入可能来自用户时,可以规范化吗?
  • maritalStatus:我可以选择大约5种不同的状态。

此外,是否有人知道找到真实世界数据库架构/规范化示例的好地方?

由于

2 个答案:

答案 0 :(得分:1)

  • locationTown - 直接将其存储在用户表中。否则你将不得不搜索现有的城镇,考虑拼写错误和代码案例。还有一些人使用非标准字符和语言(克拉科夫与克拉科夫对克拉科夫,另见:romanization)。如果你真的想要一个有城镇的桌子,至少提供自动完成的盒子,这样用户更有可能选择现有的城镇。否则准备大量重复或几乎重复。

  • maritalStatus - 另一方面,这应该在一个单独的表中。或者更准确:使用单个字符或数字来表示婚姻状况。将此映射到人类可读形式的额外表格只是为了方便(请记住)并且外键约束确保不使用不正确的状态。

答案 1 :(得分:-2)

我不会太担心 - 数据库规范化(3NF等)已经over-emphasized in academia and isn't overly practical in industry。此外,我们需要查看您的整个架构,以判断这些实现的适当位置。在您担心规范化之前,请专注于对常用列进行索引。

在潜水之前,您可能需要先查看this SO question