【发布时间】:2010-07-15 08:07:16
【问题描述】:
我正在计划一个数据库,它有几个表,其中包含大量地址信息、城市、邮政编码、电子邮件地址、电话号码、传真号码等(大约 11 列),一个表是一个组织表,包含(最多)2 个地址(法定联系人和他们实际应该使用的联系人),加上每个用户都有与他相关联的相同信息。
我们也将不得不在这些地址上运行一些地理定位的东西(比如每个地址都在距离另一个地址 X 公里范围内)。
我有很多选择,每个都有自己的问题:
- 我可以将所有信息放入每个表中,但这会导致表的列数非常多,我会遇到索引问题,如果我更改地址格式,则需要一段时间来修复它。
- 我可以将所有信息放在一个数组中并对其进行序列化,然后将序列化的信息存储在一个字段中,与前一种方法相同的问题,列少一点,通过 mysql 查询的可用性少得多
-
我可以创建一个包含地址信息的单独表格,并通过
将其链接到其他表格- 在用户和组织表中添加 address_id 列
- 将related_id 和related_table 列放入addresses 表中
这应该使东西更整洁,但它可能会产生一些无法预料的过度加入或其他问题。
我个人认为3.2方案是最好的,但我对它不是太有信心,所以在征求意见。
【问题讨论】:
-
为您的数据库考虑一个好的规范化方案。 1NF、2NF、3NF、BCNF....
-
我不熟悉这些。我也不认为这是一个标准化问题。
-
我想你会发现规范化问题就是这样。我强烈建议采纳康坎的建议。
-
你能推荐一些(简短的)阅读材料吗?我可能会更深入地了解它,但我想在潜水前先试一试。
标签: mysql database-design street-address