【问题标题】:Relational Database designing关系数据库设计
【发布时间】:2017-06-13 03:28:41
【问题描述】:

我有以下表格

   CUSTOMER (cust_id (PK), name, phone)
   ADDRESS (add_id (PK), address, area)
   CUSTOMER_ADDRESS (cust_id, add_id) (composite PK) (Junction Table)

上述模型使一个客户拥有多个地址,一个地址拥有多个客户(多对多)(同一家族的成员)。

我想在我的模型中实现以下目标:

我希望一位客户可能拥有多个电话号码。为此,我可以创建另一个表并将 cust_id 作为该表中的 FK,但地址也与新表相关(比如说“PHONE”)。电话号码是进入系统的第一条信息。然后要检查,如果没有。数据库中已经存在,我们获取客户信息(地址、姓名等)并接受他的订单。如果没有 cust_id 与之关联,则检查地址,如果地址已存在,则应将该号码插入“PHONE”表中,并带有适当的“cust_id”引用。

如何将数据添加到数据库中。需要检查的两个条件是:

  1. 不应存在引用该编号的 cust_id。在 CUSTOMER 表中。
  2. 地址不应存在于 ADDRESS 表中。如果地址存在,则必须有一个 cust_id 与之相关,在这种情况下,我们将第二个电话号码添加到 cust_id。

我希望你能理解这个问题。谢谢。

【问题讨论】:

    标签: database-design rdbms modeling


    【解决方案1】:

    恕我直言,您的两种情况都会给您带来问题。

    如果新客户 (new cust_id) 与现有客户居住在同一个地址,并与现有客户共用同一个电话号码(想想固定电话),该怎么办?您是否真的想因为糟糕的商业/诚信规则而潜在地失去该客户?

    如果一个客户(或多个客户)正在使用公司地址呢?
    他们都可能共享一个地址和一个电话号码。可能有也可能没有不同的扩展名。或者如果他们都使用相同的应付账款办公室地址/电话号码?如果我要订购一些东西运送到我朋友家怎么办?

    几年前,当我们只有固定电话时,电话号码可能已经能够与地址相关联,但手机改变了这种动态。

    您最好放弃电话号码与地址相关联的想法,而只需将电话号码与客户相关联。
    这将简化您的生活。

    您应该检查电话或地址是否已经存在。 您将需要定义有关如何处理“重复”的业务规则。但请记住,这些重复可能是由于室友、最近搬家、新电话帐户以及可能的许多其他原因造成的。

    您还应该研究 address_type 和 phone_type 的概念。

    【讨论】:

    • 这是一个订餐系统,所以如果很多人使用同一个固定电话,那完全没问题。我只需要与号码相关的地址。只要地址相同,谁订购并不重要。如果地址不同,那么客户无论如何都可以拥有多个地址。问题是我如何让客户拥有许多数字,并在数字进入时动态生成列。
    猜你喜欢
    • 1970-01-01
    • 2016-05-12
    • 2010-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多