代码之家  ›  专栏  ›  技术社区  ›  user3127554

SQL数据库关系

  •  1
  • user3127554  · 技术社区  · 7 年前

    我有一个DB设计问题,

    我正试图为有用户的公司设计一个DB关系,这些公司需要根据公式按月支付费用。公式有名称和费用,但未链接到用户,而是链接到公司。

    例子:

    名称:F1

    费用:5,00

    名称:公式2

    费用:10,00

    XYZ公司有2名一级方程式用户和2名二级方程式用户。他们需要支付30,00美元。

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

    但我发现的问题是,公式需要与公司联系起来,而不是与用户联系起来。这是因为不同的公司可以对相同的配方收取不同的费用。

    例子: 来自A公司的F1用户需要支付5英镑,而来自B公司的F1用户需要支付10英镑。

    这就是我遇到的一个障碍,因为我似乎对我的数据库设计没有完全的信任,在数据库设计中,我试图将Formula\u类型与一家公司联系起来(以及单独的费用…)。

    我尝试使用组:

    enter image description here

    但我在这里遇到了一个问题: 我将如何或/和在何处分摊配方奶粉的费用?因为他们依赖于公司。此外,我会在用户表中使用什么外键将其链接到公式,或者在我的情况下不可能这样做吗?

    我正在实现的目标可能吗?

    1 回复  |  直到 5 年前
        1
  •  2
  •   Brian    7 年前

    试试这个尺码:

    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