我试图为以下结构构建一个数据库模型:我的公司的达到3级。对于每个单元,我都有一个值(这些值是随机给定的,公司之间的重复(不是在内部)是可能的。假设(1层:222家亚马逊,2层:441家-亚马逊:德国,542家英国,3层:6家,99家店,124家,5家人力资源公司。当然,对于每一家公司来说,这是不同的。我所做的是:
Table1:
ID_Worker
CompanyName
ID_CompanyLvL1
ID_CompanyLvL2
ID_CompanyLvL3
...
Table2:
ID_CompanyLevel1
Slot1
Slot2
...
Table3:
ID_CompanyLevel2
Slot1
Slot2
...但是,使用这种方法,我有以下问题:如果两家公司的CompanyLevel1(2或3)单元的号码相同,我就不能再区分它们了。
另一种不起作用的方法是
Table1:
ID_Company
ID_Worker
ID_CompanyLevel1
...
Tabel2:
ID_CompanyLevel1
Slot1
ID_CompanyLevel2
...
Table3:
ID_CompanyLevel2
Slot
ID_CompanyLevel3
...使用这种方法,我无法识别哪个人在哪个level2单元中。有人能帮我做这件事吗?我就是想不出正确的设计。
发布于 2014-05-28 18:42:10
如果是分层的,则这是您的架构:
create table organizations (
organization_id int primary key,
name varchar(whatever) not null,
parent_id int null references organizations(organization_id)
);使用递归通用表表达式查询它们。
如果是图形化的,这是您的模式:
create table organizations (
organization_id int primary key,
name varchar(whatever) not null
);
create table organizations_structure (
parent_organization_id int references organizations(organization_id),
child_organization_id int references organizations(organization_id),
primary key (parent_organization_id, child_organization_id),
check (parent_organization_id <> child_organization_id)
);发布于 2014-05-28 08:18:11
对于任何这样的事情-确保你不要把自己放在一个康德里。例如:
我有多达3个等级的公司
不是的。YOu确实有多达3层的公司。当他们中的一个决定拥有4个时,他们不想对你尖叫。
我建议阅读“数据模型资源手册”第1卷--它们描述了各种材料和标准数据模式,其中包括实体组织(实体如“法律、人或组织实体”中的实体,其中包括组织结构图)。事情要复杂得多,因为你认为,当你不想把自己放在一个角落,这将使程序需要重写在不远的将来。
https://stackoverflow.com/questions/23906083
复制相似问题