次のテーブルを含むデータベース スキーマがあります。
- 人々
- 組織
- 関係の種類
私がデザインしたいのは、関係タイプの概念と、その関係の構造です。そのため、人は別の人や組織とある種の関係を持つことができます。組織は、別の組織または個人と関係を持つことができます。
私は次のスキーマを持っていますが、コミュニティを通過して実行し、より良いアイデアがあるかどうかを確認したいと思います.
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)
)
これの考え方は、次のようなシナリオをカバーすることです。
- 組織は別の組織と取引を行った
- 人は他人の父親
- 組織が最近その人を雇った
- 最近その組織で働いていた人
このスキーマは少し乱雑に見えますが、現時点では代替案が思いつきません。
何か提案はありますか?