的圈子
id area
1 Multimedia
4 Education
就业
id foreign key(GROUP) job
1 1 designer
2 4 professor
3 1 copy
现在假设我有这个
SpecificProperties
id foreign key (Employment) properties
1 1 type of contract
2 1 number of jobs
3 2 duration contract (no type of contract)
4 2 number of jobs
在这种情况下,设计师和教授拥有工作的财产数量。基本上问题是,我需要重复每个职业的工作数量?还有什么办法可以避免吗?或者我可以拥有8个不同工作的8个外键的工作数量?一个用于设计师,另一个用于教授,另一个用于复制,等等?这样,第一个作业数就在外键1 ||中2 || 3
类似的东西:
**SpecificProperties**
id foreign key (Employment) properties
1 1 type of contract
2 1||2||3||4 number of jobs
3 2 duration contract (no type of contract)
感谢
答案 0 :(得分:0)
您可以将属性名称放在附加表中,例如
Properties
id name
1 type of contract
2 number of jobs
3 duration contract (no type of contract)
然后使用
SpecificProperties
foreign key (Employment) foreign key (Properties)
1 1
1 2
2 3
2 2
作为反映多对多关系的联结表 - 一个或多个作业可以拥有一个或多个属性,因此不要放置"多个作业"对于你刚从属性表中输入id的每个工作。
@comments 但是,如果"工作数量"是一个字段,而不仅仅是要显示的文本,它不应该作为行值在SpecificProperties中。相反,它应该作为列名称,但不与合同信息一起。 例: 鲍勃是多媒体设计师,从某个日期开始工作直到某个其他日期,在x类型的合同上工作,等等。 具有列(id,user_id,job_id,start_date,end_date,salary)的表合同(或就业)可以保存有关该信息的信息,但由于更多人可以完全相同以避免存储冗余数据,因此我们可以将外键job_id用于作业带有列的表(id,group_id,job_name,number_available)。所以我们知道,无论他们实际签订什么合同,我们都可以让10名设计师从事多媒体工作。