我需要将一个表中的一行或多行记录或匹配到另一个表中的一行或多行。我认为这适用于第三个表(联结表),但不确定。 不关心速度或任何类似于atm的东西,只是一个可靠的桌面设计。这里有两个重要的报告要素:
以下是一个例子:
" HOURS TABLE"记录工作时间。 Fred和Joe每天在第1天工作8小时 - 所以这是db中的两行 弗兰克在第二天工作了8个小时
"HOURS TABLE"
eeid hours junction
1 8 1
2 8 1
3 8 2
第二个表记录了所处理的内容(被叫单位表,但实际上想要记录任务的小时数)。
第1天,弗雷德和乔建造了一个长凳(12小时),开车(3小时)并清理了商店(1小时) - 所以这是表中的三排"任务表"
第2天,玛丽莲在同一条长凳上度过了8个小时,在#34; TASK TABLE"
"TASK TABLE"
ItemID hours junction
1 12 1
2 3 1
3 1 1
1 8 2
第三个表是" JUNCTION TABLE",除了将它们全部绑定在一起之外没有任何其他用途,这是联结表
"JUNCTION TABLE"
ID
1
2
问题:
我想我可以建议我们强制员工分别提供时间表,这样可以消除所有这些挑战,因为一条记录可以记录每个任务的小时数,这些记录可以按天计算得到每天的小时数。 - 不知道联结表有多糟糕,知道是否应该这样做。
答案 0 :(得分:0)
SQL中的多对多关系需要JOIN表。外键约束只能模拟一对多关系,因此每侧需要一个。
您的要求令人困惑,但这是一个简单的示例,可以将一个或多个USER分配给一个或多个UNIT:
create table user (
id int not null auto_increment,
primary key(id)
);
create table unit (
id int not null auto_increment,
primary key(id)
);
create table user_unit (
user_id int,
unit_id int,
primary key(user_id, unit_id),
foreign key user_id references user(id),
foreign key unit_id references unit(id)
);