我正在设计一个数据库,最初我设置了与订单分开的地址,因此订单表只有一个账单ID和地址id引用,实际地址存储在地址表中。
然而,我对此的想法越多,我不确定将地址放入自己的表格中是否有任何实际优势。
主要原因是订单是自包含的,这意味着该地址仅对该订单有效。
在更新地址时,将地址链接而不是订单记录会导致一些复杂情况。假如我们有一个客户的两个订单链接到同一个地址,并且他希望一个订单的地址发生变化,而另一个订单的地址不变。应用程序现在需要在地址表中创建一个新地址并更改订单上的链接地址(您不能只更改地址,因为它会为两个链接订单更改它)。
您还必须在应用程序中使用代码将新订单链接到数据库中已有的地址(并且仅适用于地址相同或几乎相同的订单)。
我现在看到的唯一优势就是在自己的表格中设置订单地址,因此每个订单的帐单邮寄地址和送货地址都不会重复。
从表面上看,似乎阻止计费和送货地址数据重复是不值得的,以便在他们自己的表中存储地址所需的额外代码。
有关如何处理此问题的任何建议?处理我错过的单独表中的地址有什么大的优势吗?
答案 0 :(得分:2)
这听起来像你想要的(理想情况下)订单链接到地址,就像在订单时那样。
实现此方法有两种主要方式 - 订单包括其自身结构中的所有地址信息,或者您将地址表实现为时态表,并确保订单具有适当的日期时间信息以找到正确的地址查询时的行。
您实施哪一项取决于您希望如何处理更新 - 两种型号都可能存在问题,具体取决于是否应该/不应更新机上订单。
答案 1 :(得分:1)
如果地址仅与该订单相关联,那么它应该是订单的一部分,而不是在自己的表中。
除非您的数据库具有与实际地址实体相关的逻辑,否则即使您想要添加存储其他类型实体的地址信息的能力,也不需要在其自己的表中。