【问题标题】:Store Address Details for Customers & Orders客户和订单的商店地址详细信息
【发布时间】:2011-12-11 11:17:43
【问题描述】:

我正在努力使用用于存储客户地址并将其与库存系统中的订单相关联的数据库设计。目前我有以下架构想法和 3 个选项:

客户
客户ID
客户名称.....

客户地址
地址ID
客户ID
地址类型(帐单、送货等)
地址线路1
地址行2 城市
状态
国家 邮编

订单(选项 1)
订单编号
客户ID
帐单地址 ID
ShippingAddressID

订单(选项 2)
订单编号
客户ID
BillingAddressLine1
BillingAddressLine2
计费城市
账单状态
计费国家
帐单邮政编码
ShippingAddressLine1
ShippingAddressLine2
航运城
运输状态
发货国家
航运邮政编码

订单(选项 3)
订单编号
客户ID
BillingAddressBlob
ShippingAddressBlob

我需要订单的地址以保持加班不变。因此,如果我回顾两年前的订单,我可以看到正确地址的商品也已发货并已开票。

【问题讨论】:

    标签: sql database-design


    【解决方案1】:

    更新答案,因为之前的答案对用户没有帮助。

    你可以有一个表OrderAddress表来保存地址

    OrderAddress 表和以下列

    • 订单编号
    • 地址标识

    要将客户链接到地址,您可以拥有一个包含以下列的表 CustomerAddress

    • 客户 ID
    • 地址标识
    • 街道
    • 城市
    • 密码
    • 电话
    • 状态
    • 处于活动状态

    Isactive 列将用于区分当前处于活动状态的地址。此外,从这张表中,您可以看到一个客户存在多少个不同的地址

    要查找订单发货的确切地址,您可以查看 OrderAddress Table

    希望这个灵魂满足你的需要

    【讨论】:

    • 嗨,谢谢,我已经看过那个网站和你链接的shemas了。不幸的是,它们没有帮助,因为这些模式中的订单和地址之间没有联系。
    • 感谢 Siva,您能否解释一下为什么要为 orderaddress 创建一个单独的表。由于每个订单只能有一个送货地址和一个帐单地址,为什么不在订单表中只包含两个 addressid -(选项 1)?
    • - 订单到地址是一对一映射,客户到地址可以是一对多映射。可以有多个地址,但只需要存在活动地址。当使用新地址条目更新订单时,订单地址表中将更新。而是在 CustomerAddress 表中添加新条目。此外,当您查询记录时,您可能会查找客户的订单数量。除非您需要更多详细信息,否则您可能不需要与客户关联的地址。这是基于查询使用情况(我的观点)
    • 我很抱歉,但我就是不明白。我想我已经形成了一些思维定势。我只是看不到额外表中的好处,而不是将地址 ID 存储在订单表中。非常感谢您的帮助。
    • 今早头脑清醒。你介意再解释一下你的想法吗?
    猜你喜欢
    • 2015-01-28
    • 2016-12-28
    • 2021-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多