SQL数据库关系

时间:2018-01-26 18:36:21

标签: database database-design database-normalization

我有一个数据库设计问题,

我正在尝试为有用户且需要按照公式支付月费的公司设计数据库关系。公式有名称和费用,但不与用户链接,而是与公司相关联。

示例:

名称:公式1

费用:5,00

姓名:公式2

费用:10,00

XYZ公司有2个使用Formula 1的用户和2个使用Formula 2的用户。他们需要支付30,00。

我最初的解决方案是将Formula's链接到用户: enter image description here

但我发现的问题是,公式需要与公司联系,而不是与用户联系。这是因为不同的公司可以对同一公式有不同的费用。

实施例: 来自公司A的公式1的用户需要支付5,但公司B的公式1的用户需要支付10。

这是我遇到障碍的地方,因为我似乎并不完全信任我的数据库设计,我试图将Formula_Type与公司联系起来(并且单独收费......)。

我的尝试是使用群组:

enter image description here

但我遇到了一个问题: 怎么或者我在哪里分配公式的费用?因为他们取决于公司。另外,我会在USER表中使用哪个外键将其链接到一个公式,或者在我的情况下这不可能吗?

我的成就是否可能?

1 个答案:

答案 0 :(得分:2)

尝试使用此尺寸:

Company
    ID              -- PK
    Name
    etc.

User
    ID              -- PK
    Company_ID      -- FK to Company
    Last_Name
    First_Name
    etc.

Formula
    ID              -- PK
    Name
    etc.

Formula_Company     -- this allows company-specific fees for different formulae
    ID              -- PK
    Formula_ID      -- FK to Formula
    Company_ID      -- FK to Company
    Fee

User_Formula_Company        -- this identifies which fee a given user is charged
    User_ID                 -- FK to User
    Formula_Company_ID      -- FK to Formula_Company