首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设计多层次的公司结构

设计多层次的公司结构
EN

Stack Overflow用户
提问于 2014-05-28 08:11:10
回答 2查看 1.2K关注 0票数 0

我试图为以下结构构建一个数据库模型:我的公司的达到3级。对于每个单元,我都有一个值(这些值是随机给定的,公司之间的重复(不是在内部)是可能的。假设(1层:222家亚马逊,2层:441家-亚马逊:德国,542家英国,3层:6家,99家店,124家,5家人力资源公司。当然,对于每一家公司来说,这是不同的。我所做的是:

代码语言:javascript
复制
Table1:
ID_Worker
CompanyName
ID_CompanyLvL1
ID_CompanyLvL2
ID_CompanyLvL3
...
Table2:
ID_CompanyLevel1
Slot1
Slot2
...
Table3:
ID_CompanyLevel2
Slot1
Slot2
...

但是,使用这种方法,我有以下问题:如果两家公司的CompanyLevel1(2或3)单元的号码相同,我就不能再区分它们了。

另一种不起作用的方法是

代码语言:javascript
复制
   Table1:
    ID_Company
    ID_Worker
    ID_CompanyLevel1
    ...
    Tabel2:
    ID_CompanyLevel1
    Slot1
    ID_CompanyLevel2
    ...
    Table3:
    ID_CompanyLevel2
    Slot
    ID_CompanyLevel3
    ...

使用这种方法,我无法识别哪个人在哪个level2单元中。有人能帮我做这件事吗?我就是想不出正确的设计。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-28 18:42:10

  1. 您需要决定组织结构是纯粹的层次结构(一个组织单元只能属于0或其他一个组织单元),或者它是图形化的(一个组织单元可以属于0、1或1+组织单元)。
  2. 您的三项限制是业务规则,应该由数据库逻辑(触发器)而不是数据库模式强制执行。
  3. 为什么有名字的密码?

如果是分层的,则这是您的架构:

代码语言:javascript
复制
create table organizations (
  organization_id int primary key,
  name varchar(whatever) not null,
  parent_id int null references organizations(organization_id)
);

使用递归通用表表达式查询它们。

如果是图形化的,这是您的模式:

代码语言:javascript
复制
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)
);
票数 0
EN

Stack Overflow用户

发布于 2014-05-28 08:18:11

对于任何这样的事情-确保你不要把自己放在一个康德里。例如:

我有多达3个等级的公司

不是的。YOu确实有多达3层的公司。当他们中的一个决定拥有4个时,他们不想对你尖叫。

我建议阅读“数据模型资源手册”第1卷--它们描述了各种材料和标准数据模式,其中包括实体组织(实体如“法律、人或组织实体”中的实体,其中包括组织结构图)。事情要复杂得多,因为你认为,当你不想把自己放在一个角落,这将使程序需要重写在不远的将来。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23906083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档