假设我们有一个网络商店,人们可以在那里保存他们的发货/账单地址供以后使用。我们将数据存储在关系数据库中,因此很明显,地址会得到自己的表。当客户进行购买时,我们要记录他为购买而选择的地址,以便他以后可以在他的购买历史中查看它。我们可以在购买表中创建一个外键到address表,以便DB保持一定程度的规范化,但是这样,我们必须确保地址是不变的,这样购买历史记录中的发货/账单地址就会保持不变。另一种方法是复制购买表中的地址,以便用户可以自由地从地址表中编辑/删除地址,并且购买历史记录保持不变。这种复制方案对于少量的数据很有效,但是假设我们希望在每个发送/计费地址上附加一张照片,现在它变得太贵了,特别是在智能手机等资源受限的设备上。哪种方法更好?还有其他处理这种模式的方法吗?
发布于 2014-04-26 03:28:43
为了允许用户管理他们的地址,您需要存储地址是否已用于购买的信息(通过检查purchases表或addresses表中的单独标志)。这里的解决方案的关键部分是标记或签入数据库,表示在购买中使用了地址,如@sqlvogel所述。
这一段信息将允许以下场景:
您可以通过向一个地址添加一个标志来提供一个伪删除功能,该标记指示它是一个历史记录(您还应该允许用户知道这个历史记录)。
托运与计费地址id:您可能已经这样做了,但这两个列需要在购买表中单独列。因此,用上面的控件精确地保存历史。
https://stackoverflow.com/questions/23302600
复制相似问题