使用多个数据库

时间:2012-12-18 23:01:49

标签: database database-design

另一家公司雇用一家公司来帮助某个领域。

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

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

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

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

感谢。

2 个答案:

答案 0 :(得分:4)

自"协议类型","专业"对于每家公司都是一样的,我建议有一个像#34; AgreementTypes"使用" ID"," Type"等列。并参考" ID"专栏"工人"表。我不认为需要新的数据库,关系数据库用于消除数据冗余并在实体之间创建适当的关系。

通过想象为一家公司建立一个数据库,它最终会在"公司"每个数据库中的表。 "管理员" &安培; "工人"与该单条记录相关联。和其他常见实体,如" AgreementTypes"将在其他表中。

因此,如果对协议类型有任何添加/修改,则很难在所有数据库中执行此操作。同样,如果有任何新实体要链接到"公司"实体,同样需要根据这些实体属于一个应用程序的假设重新访问所有数据库。

答案 1 :(得分:3)

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

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)(被认为是有效数据库设计的最低要求)。

希望有所帮助。如果你被卡住了,请随意详细说明 - 这里有很多很棒的帮助。