关系数据库设计

时间:2017-06-11 06:35:43

标签: database-design rdbms modeling

我有以下表格

   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添加第二个电话号码。
  3. 我希望你能理解这个问题。感谢。

1 个答案:

答案 0 :(得分:-1)

恕我直言,你的两个条件都会给你带来麻烦。

如果新客户(新cust_id)位于同一地址,与现有客户共享相同的电话号码(想想固定电话),该怎么办?您是否真的希望因业务/诚信规则不当而失去该客户?

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

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

最好不要删除与地址相关联的电话号码,只需将电话号码与客户关联即可。 这将简化你的生活。

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

您还应该研究address_type和phone_type的想法。