一家公司受雇于另一家公司以在某个领域提供帮助。
所以我创建了以下表格: 公司:id、公司名称、公司地址 管理员:(与公司相关)id、company_id、用户名、电子邮件、密码、全名
然后,每个公司都有一些工人,我存储有关工人的数据。因此,工人有一个职业,签署的协议类型和其他一些常见的东西。
现在,每个公司的员工(协议类型、专业、其他常见事物)的父表和数据将是相同的。
我应该为每家公司创建 1 个新数据库吗?还是将所有数据存储到同一个数据库中?
谢谢。
一家公司受雇于另一家公司以在某个领域提供帮助。
所以我创建了以下表格: 公司:id、公司名称、公司地址 管理员:(与公司相关)id、company_id、用户名、电子邮件、密码、全名
然后,每个公司都有一些工人,我存储有关工人的数据。因此,工人有一个职业,签署的协议类型和其他一些常见的东西。
现在,每个公司的员工(协议类型、专业、其他常见事物)的父表和数据将是相同的。
我应该为每家公司创建 1 个新数据库吗?还是将所有数据存储到同一个数据库中?
谢谢。
由于每个公司的“协议类型”、“职业”都相同,我建议有一个像“协议类型”这样的查找表,其中包含“ID”、“类型”等列,并参考“工人”中的“ID”列“ 桌子。我认为不需要新的数据库,关系数据库用于消除数据冗余并在实体之间创建适当的关系。
通过想象一家公司拥有一个数据库,最终每个数据库的“公司”表中都有一条记录。“管理员”和“工人”与该单条记录相关联。而其他常见的实体,如“AgreementTypes”将在其他表中。
因此,如果对协议类型有任何添加/修改,很难在所有数据库中都进行。类似地,如果有任何新实体要链接到“公司”实体,则再次基于这些实体属于 ONE 应用程序的假设重新访问所有数据库。
你应该有一个单一的数据库,其结构类似于这样(这有点过于简单,但你明白了):
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 的帮助。