【问题标题】:Relations for Product, FrequenceOfUse and User tablesProduct、FrequenceOfUse 和 User 表的关系
【发布时间】:2012-04-21 06:03:34
【问题描述】:

我有 3 张桌子:

Product (shamppoo, toothpaste,..)
FrequenceOfUse (3 times/day, once/day,...)
User

您可以想象我想在数据库中存储用户使用产品的数量。这些表之间应该是什么关系?

贾维

【问题讨论】:

    标签: database data-modeling


    【解决方案1】:

    UserProduct 之间是多对多关系,FrequenceOfUseUserProduct 之间是一对多关系(后者本身就是一种关系)。

    请注意,对于关系是否可以独立存在关系,并没有达成共识。所以有些人更愿意将其建模为:

    1. 实体用户
    2. 实体产品
    3. 实体用法
    4. 实体FrequenceOfUse
    5. 1-N 关系:用户 参与 使用
    6. 1-N 关系:产品 参与 使用
    7. N-1 关系 使用 使用 频率

    这两个模型都被关系建模为:

    CREATE TABLE user (id INT NOT NULL PRIMARY KEY, name TEXT, ...)
    CREATE TABLE product (id INT NOT NULL PRIMARY KEY, name TEXT, ...)
    CREATE TABLE frequence (id NOT NULL, description TEXT, ...)
    CREATE TABLE usage
            (
            user INT NOT NULL FOREIGN KEY REFERENCES (user),
            product INT NOT NULL FOREIGN KEY REFERENCES (product),
            frequence INT NOT NULL REFERENCES frequence,
            PRIMARY KEY (user, product)
            )
    

    您可能会在我的博客中发现这篇文章很有用:

    【讨论】:

    • 谢谢!我同意,但是.. 您如何看待在 User 和 Usage 之间创建 n-n 关系的可能性?
    • @tirengarfio:当然,如果您需要跟踪用户偏好的变化,例如:Alice 在 2009 年每天使用一次 Best Toothbrush,在 2010 年每天使用两次,等等。您将在这种情况下,还需要向Usage 添加代理主键。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-13
    • 1970-01-01
    • 1970-01-01
    • 2017-05-15
    • 2018-08-26
    • 2013-07-12
    • 2023-03-23
    相关资源
    最近更新 更多