【问题标题】:Using Multiple Databases使用多个数据库
【发布时间】:2012-12-18 23:01:48
【问题描述】:

一家公司受雇于另一家公司,在某个领域提供帮助。

所以我创建了以下表格: 公司:id、公司名称、公司地址 管理员:(与公司相关)id、company_id、用户名、电子邮件、密码、全名

然后,每个公司都有一些工人,我存储有关工人的数据。 因此,工人有一个职业,签署的协议类型和其他一些常见的东西。

现在,员工的父表和其中的数据(协议类型、职业、其他常见事物)对于每家公司都将是相同的。

我应该为每家公司创建 1 个新数据库吗?还是将所有数据存储到同一个数据库中?

谢谢。

【问题讨论】:

  • ?!除非有什么重要的我们不知道,否则一切都应该放在同一个数据库中。
  • 我只是认为如果我将每个公司的数据分开到单独的数据库中,事情会更有条理。不管怎样,数据库的设计是完全一样的,2或3张表将在任何数据库中存储相同的数据。

标签: database database-design


【解决方案1】:

由于每个公司的“协议类型”、“专业”都相同,我建议使用“协议类型”之类的查找表,其中包含“ID”、“类型”等列并参考“ID”列在“工人”表中。我认为不需要新的数据库,关系数据库用于消除数据冗余并在实体之间创建适当的关系。

假设一家公司有一个数据库,最终每个数据库的“公司”表中都有一条记录。 “管理员”和“工人”与该单条记录相关联。其他常见实体(例如“AgreementTypes”)将在其他表中。

因此,如果对协议类型进行任何添加/修改,则很难在所有数据库中都这样做。同样,如果有任何新实体要链接到“公司”实体,则再次基于这些实体属于 ONE 应用程序的假设重新访问所有数据库。

【讨论】:

    【解决方案2】:

    你应该有一个单一的数据库,其结构类似于这样(这有点过于简单,但你明白了):

    Companies
        CompanyID PK
        CompanyName
        CompanyAddress
        OtherCompanySpecificData
    
    Workers
        WorkerID PK
        CompanyID FK
        LastName
        FirstName
        DOB
        AgreementTypeID FK
        ProfessionID FK
        UserID FK - A worker may need more than one user account
        Other UserSpecificData
    
    Professions
        ProfessionID PK
        Profession
        OtherProfessionStuff
    
    AgreementType
        AgreementTypeID PK
        AgreementTypeName
        Description
        OtherAgreementStuff
    
    Users
        UserID PK -- A Worker may need more than 1 user account
        WorkerID FK
        UserName
        Password
        AccountStatus
    
    Groups
        GroupID PK
        GroupName
        OtherGroupSpecificData
    
    UserGroups --Composite Key with UserID and GroupID
        UserID PK 
        GroupID PK
    

    显然,事情会变得更加复杂,而且我不知道您的需求或业务模式。例如,如果公司可以有不同的部门,您可能希望创建一个 CompanyDepartment 表,然后能够将工人分配到各个部门。

    等等。

    您可以使数据结构更加原子化,随着数据库的增长,您的数据库将更加灵活。谷歌术语数据库规范化,特别是数据库的第三范式(3NF)(被认为是有效数据库设计的最小值)。

    希望对您有所帮助。如果您遇到困难,请随意详细说明 - 这里有很多关于 SO 的帮助。

    【讨论】:

      猜你喜欢
      • 2011-08-13
      • 2010-10-12
      • 2011-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-16
      相关资源
      最近更新 更多