数据库设计,如何规范化?

时间:2016-01-12 13:24:07

标签: database-design database-normalization

我目前正在努力为我的项目创建一个合适的数据库方案设计。让我介绍一下表格:

tblOrder

id
executive_id
supervisor_id
client_id
building_id?

tblexecutive

executive_id
address_id

tblsupervisor

supervisor_id
address_id

tblclient

client_id
address_id

tbladdress

generic information, e.g location phone fax

不确定这个:

tblbuilding

building_id
address_id
( or address information here )

这看起来很正常。但是客户给出了一个执行订单的建筑物,该建筑物也与地址相关联。引用地址表或创建具有地址的新建筑物表或添加新的地址表字段是否合适,例如: isOrderBuilding(bool)?

1 个答案:

答案 0 :(得分:2)

嗯,在现实世界中,建筑物可能有一个以上的地址。 想想角落建筑物,他们有2个地址。 如果建筑物如此之大以至于覆盖了一个洞穴怎么办? 这需要在一个建筑物的4个不同地址。 为了解决这个问题,我建议在你的地址表中加上一个建筑物ID,这样每个地址都会引用一个建筑物,但任何建筑都可能有多个地址。

但是,您很可能在项目中不需要,并且每个建筑物都有一个地址就足够了。 如果是这种情况,那么我建议将建筑物和地址保存在一个表格中。

任何方式,对于地址本身,我建议将其分解为至少3个表: Cities表,Streets表和Address表(具有适当的关系)。此外,您可以更深入地创建Streets To Cities关系表,并使Address表与此表相关。 这将阻止您在不属于该地址城市的街道上指定地址。

同样,这一切都取决于项目需求。如果它只是一个学校项目,我的最后一个建议可能是一种矫枉过正,但如果它是商业级软件,我肯定会使用它。