假设我们有一个网上商店,人们可以保存他们的送货/帐单地址供以后使用。我们将数据存储在关系数据库中,因此很明显地址都有自己的表。当顾客进行购买时,我们想要记录他为他的购买选择的地址,以便他以后可以在他的购买历史中查看它。我们可以在购买表中创建一个外键到地址表,以便数据库保持一定程度的标准化,但这样,我们必须确保地址是不可变的,以便购买历史记录中的送货/开票地址保持不变相同。另一种方法是复制购买表中的地址,以便用户可以自由地编辑/删除地址'表,购买历史保持不变。这种复制方案适用于少量数据,但我们希望将照片附加到每个送货/帐单地址,现在它变得过于昂贵,尤其是在智能手机等资源受限的设备上。哪种方法更好?有没有其他方法可以处理这种模式?
答案 0 :(得分:0)
要允许用户管理他们的地址,您需要存储有关该地址是否已在购买时使用的信息(通过检查purchases
表或addresses
表中的单独标志)。这里解决方案的关键部分是这个标志或检查数据库,表明在购买时已经使用了地址,如@sqlvogel所述。
这一条信息将允许以下情况:
您可以通过向地址添加标记来提供伪删除功能,该地址表示它是历史记录(您还应该允许用户知道)。
运费与结算地址ID:您可能已经这样做了,但这两个需要在购买表中是单独的列。因此,历史记录可以通过上述控制准确保存。