【问题标题】:Customer has multiple shipping addresses, each order can have a different address客户有多个送货地址,每个订单可以有不同的地址
【发布时间】:2013-03-19 22:57:24
【问题描述】:

您好,我目前正在尝试为项目构建数据库。

目前所有orders 必须有一个customercustomers 有一个address,然后他们有一个shipto address。最多可以添加 10 个不同的shipto addresses。并且每个order 都可以运送到那个customer 中的不同address

有人知道我应该如何建模吗?

Orders
------
ID
customerID (referencing ID from customers)
other rubbish

Customers
---------
ID
Address
Email
Phone 
other rubbish

Shipto
------
ID
CustomerID (referencing ID from customers)
Address
other address related stuff

如何将所有这些联系起来?

*编辑 只是在想,客户应该属于订单吗?还是订单应该属于客户?

【问题讨论】:

  • 当您在确定表之间的关系时遇到问题,请用英语(或您的母语)说明关系。客户下订单。客户有零到多个订单。客户有地址。客户有一对多的地址。订单被运送到一个地址。订单和地址具有一对一的关系。现在,去正常化,所以帮助你 Codd。

标签: database database-design


【解决方案1】:

您似乎在客户和他们的送货地址之间有一个简单的 1:N 关系,可以用后者中的 FOREIGN KEY 表示,引用前者(正如您已经指出的那样)。

但是,无论您是否有多个地址,您仍然需要记住发货时的收货地址和产品价格,即使用户后来更改了她的地址或发生了变化在价格上。因此,仅将 FK 从 Order 添加到 Shipto 是不可行的。

要了解如何处理此类问题的一些想法,请查看:

【讨论】:

    【解决方案2】:

    您的模型对我来说看起来不错,我会在 Orders 表中添加一个 shipto_id
    这样您就知道哪个订单被发送到了哪里。

    【讨论】:

      猜你喜欢
      • 2014-08-30
      • 2017-10-12
      • 2013-10-12
      • 2016-07-26
      • 1970-01-01
      • 2019-01-31
      • 2019-09-13
      • 2018-06-18
      • 1970-01-01
      相关资源
      最近更新 更多