【问题标题】:Logical Modeling difficulty逻辑建模难度
【发布时间】:2014-11-18 18:20:16
【问题描述】:

我的任务是设计一个简单的数据库,该数据库将存储有关餐厅、客户和每个餐厅所属类别(例如美国、印度......)的信息。问题是我不确定如何对数据库建模,因为每个客户可能有零个或多个注册的其他 客户作为朋友。虽然一个客户可以有许多朋友联系,但对于 必须记录每个朋友连接的日期。 我假设我必须创建另一个名为 Friends 的表,其中包含 cust_id,data 作为属性。

我的桌子是:

Restaurants(rest_id,name,address,date_opened,income_cat_id*)
Category(car_id,title,Description)
Customers(cust_id,name,address,DOB,Mobile_number)

这是我的 ER 图,但正如我所说,我不确定递归关系是否适合我的客户表:

【问题讨论】:

    标签: sql sql-server database recursion recursive-datastructures


    【解决方案1】:

    是的,您需要另一个表来为连接建模,例如:

    Connection(cust_id1, cust_id2, connectdate)
    

    【讨论】:

    • 同意。您也可以在其中添加一个关系/朋友/连接 ID,或者只使用 cust_id1、cust_id2 作为键。没有理由过度思考这一点。只是不要试图将关系保留在customers 表中。这只是一个非常糟糕的好主意。
    • 谢谢,帮了大忙! :)
    【解决方案2】:

    非常感谢! 这是否意味着我必须在 Connection 表中具有以下约束?

    CONSTRAINT pk_Connections PRIMARY KEY (cust_id1,cust_id2),
    CONSTRAINT fk_Customers_Connections_cust_id1 FOREIGN KEY (cust_id1) REFERENCES Customers(cust_id)
                                                    ON DELETE CASCADE ON UPDATE CASCADE,
    CONSTRAINT fk_Customers_Connections_cust_id2 FOREIGN KEY (cust_id2) REFERENCES Customers(cust_id)
                                                    ON DELETE NO ACTION ON UPDATE NO ACTION);
    

    【讨论】:

      猜你喜欢
      • 2016-01-21
      • 2010-10-28
      • 2015-07-25
      • 1970-01-01
      • 2019-05-11
      • 2016-11-25
      • 2014-12-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多