dav*_*vid 4 schema database-design
我有一个用于管理出租物业的数据库
它有一个property
表,其中包含有关房产的详细信息,例如卧室、平方英尺、价格等,它还有一个名为的列,address_id
它是表的外键address
,其中包含街道名称、城市等地址
将地址放在另一个表中有什么好处吗?或者我可以将地址列移至属性表吗?
就看property
和之间的关系是否address
是1:1。
换句话说:这取决于两个房产是否可以驻留在一个地址,或者一个房产是否可以有两个地址。
例如,我可以想象一个拥有多栋建筑物的大型工地。工地地址可能是 50 Smith St(一个地址)。我可以想象您的property
桌子有两行链接到该地址:一行在哪里,property.buildingName = 'Workshed'
另一行在哪里property.buildingName = 'Reception'
(尽管我不确定您是否会单独向接待处租用一个工作棚,如果您这样做,他们可能会得到单独的地址) 。
如果您的业务数据可以对一个地址的两个属性进行上述建模,那么我建议不要合并您的两个表。
另一方面,如果每个地址只有 1 个属性,我认为合并表没有真正的问题。
其他考虑因素:
如果您的数据库管理着数百万个出租物业,则两种设计之间可能存在性能差异。这将是进一步探索的途径。
如果您的应用程序当前引用两个单独的表,则需要将您的应用程序转换为仅引用单个表。这项工作可能是微不足道的(例如,当前所有引用都查询一个视图,而您只需更新您的视图),也可能是重大的(例如,如果您有 200 个报告查询这些表,并且您的数据与 5 个其他系统同步,其中您必须更新同步流程并在所有这些系统中执行回归测试,即使它们都属于业务客户)。还应该考虑合并表工作的预期成本。
如果这只是一个练习 - 例如,对于 SQL 课程 - 那么任何一种设计都可以,只要您阐明每种设计的局限性(例如,每个地址只有一个属性)。
这是一个向您介绍关系数据库规范化的教程- 这基本上是您做出决定所需经历的过程。