架构设计:订单和地址

时间:2015-12-12 13:34:52

标签: mysql database-schema schema-design

这些是我用于维护自定义订单的架构的精简版本(所有表都在MySql中)。

Address [Id, Contact, Line1, City, Parent_AddressId, Status]

订单引用了送货和收货地址ID 。情况:用户A使用这些运送和接收地址创建了10个订单。稍后,用户决定编辑其中一个地址(比如R1)。由于我希望原始订单的详细信息保持不变,因此在编辑时,我会创建一个新地址并将旧地址标记为非活动状态。 (因此旧订单不受影响)

Dim theVariableForDataFieldYouWant as Integer
Dim db as database
Dim rs as recordset
Set db = YourDataConnectionStringHere
Dim sql as string
sql = "Select aFieldYouWant, anotherFieldYouWant from yourTableName WHERE someField = yourCriteria"
set rs = db.openRecordSet(sql)

if rs.eof then
' you recordset is empty, nothing matched
else
theVariableForDataFieldYouWant = rs.fields("theDataField")
end if

rs.close
db.close
set rs = nothing
set db = nothing

编辑后,我会向所有人(用户地址簿等)发出通知以进行适当的更改。到目前为止,这种方法“还可以”。

随着移动应用程序进入,将允许缓存一些数据并定期同步,我看到会出现更多问题(有解决方案,但它们使操作变得昂贵)。

问题:是否有其他(标准)方法来解决这个问题?

1 个答案:

答案 0 :(得分:0)

最初,我使用的地址表的主键与您的主键类似,但遇到了很多问题。我已经离开了这种方法,并将“street_address_ship”,“city_ship”,(州或省/等等,以及接收相同)添加到我的Order表作为复合键,我的问题就消失了。

我的方法是否正常化似乎存在争议,但我觉得更是如此。由于street_address,city等可以唯一标识任何地址,因此该记录的单独主键是多余的,不应使用。