我有三个表,一个项目表,可能有很多项目,一个主题表,每个项目都有很多主题和条件表,每个主题都有条件,项目可能有很多条件。< / p>
如果主题必须位于其中一个项目中,如何根据项目链接的条件限制主体可以拥有的条件。
希望这是有道理的。另外,我正在考虑使用sqlite但是如果不可能用数据库系统做这样的事情那么有可能吗?优选地是免费的和基于sql的,即mysql或postgresql。
感谢。
编辑:一些例子;
项目A具有条件1,2和3.所有条件都来自具有条件1,2,3,4,5的条件表。现在主题X是项目A的一部分,所以只允许假设条件1,2,3不是4或5。
这可能吗?
答案 0 :(得分:1)
看起来你需要类似的东西:
此设计的关键方面是识别关系的使用以及生成的复合键。这允许我们迁移PROJECT.PROJECT_ID:
迁移的这两个“路径”最终会合并到同一个字段中(注意SUBJECT.PROJECT_ID前面的FK1,FK2
),这可确保当主题连接到条件时,它们都必须连接到相同的项目。
答案 1 :(得分:0)
create table Condition(
Id int not null, --PK
Description varchar(50)
)
create table ProjectCondition(
Id int not null, --PK
ProjectId int not null, -- FK to Project PK#
ConditionId int not null -- FK to Condition PK
)
create table ProjectSubject(
Id int not null, --PK
ProjectId int not null, -- FK to Project PK
SubjectId int not null -- FK to Subject PK
)
create table ProjectSubjectCondition(
Id int not null, -- PK
ProjectConditionId int not null -- FK to ProjectContion PK
)
假设:
(如果他们错了,没有多大区别。)
通过将ProjectSubjectCondition链接到ProjectConditions,项目主题的条件必须是项目的条件。
干杯 -