我有一个包含以下表格的数据库架构:
- 人们
- 组织
- 关系类型
我要设计的是关系类型的概念,然后是关系的结构。因此,一个人可以与另一个人或与一个组织建立某种关系。一个组织可以与另一个组织或个人建立关系。
我有以下架构,但我想通过社区运行它,看看是否有更好的想法。
CREATE TABLE OrganisationRelationshipTypes
(
ID INT PRIMARY KEY IDENTITY,
RelationshipTypeID INT NOT NULL REFERENCES RelationshipTypes(ID)
FromOrganisationID INT NOT NULL REFERENCES Organisations(ID),
ToOrganisationID INT NOT NULL REFERENCES Organisations(ID)
)
CREATE TABLE PersonRelationshipTypes
(
ID INT PRIMARY KEY IDENTITY,
RelationshipTypeID INT NOT NULL REFERENCES RelationshipTypes(ID),
FromPersonID INT NOT NULL REFERENCES People(ID),
ToPersonID INT NOT NULL REFERENCES People(ID)
)
CREATE TABLE OrganisationPersonRelationshipTypes
(
ID INT PRIMARY KEY IDENTITY,
RelationshipTypeID INT NOT NULL REFERENCES RelationshipTypes(ID)
FromOrganisationID INT NOT NULL REFERENCES Organisations(ID),
ToPersonID INT NOT NULL REFERENCES People(ID)
)
CREATE TABLE PersonOrganisationRelationshipTypes
(
ID INT PRIMARY KEY IDENTITY,
RelationshipTypeID INT NOT NULL REFERENCES RelationshipTypes(ID)
FromPersonID INT NOT NULL REFERENCES People(ID),
ToOrganisationID INT NOT NULL REFERENCES Organisations(ID)
)
这样做的想法是它涵盖了这样的场景:
- 一个组织与另一个组织有业务往来
- 一个人是另一个人的父亲
- 一个组织最近雇用了这个人
- 一个人最近为该组织工作
这个模式似乎有点乱,但此刻我想不出替代方案。
你有什么建议吗?