一家服务公司想要一个完全由哪个人完成工作的注册表,在这种情况下,我们有9名员工,其中一个或多个员工一次可以开一张发票。
问题是:为了使管理层获得每个员工(工资单)完成的工作的查询,数据库应该如何存储员工已完成的发票?
到目前为止,主管标记了每个发票中工作的员工,并且数据库中包含所有9名员工,我在将列存储到列中时遇到了问题 - 或者更确切地说是列中的员工列表。
在搜索员工#2时,员工是否可以查询说员工22?
Invoice # List of Employees
1 3, 5
2 8, 1, 4
3 6
4 7, 2, 9, 3...
由于
答案 0 :(得分:3)
CREATE TABLE Employee
(
[Id] INT NOT NULL PRIMARY KEY
...
)
CREATE TABLE Invoice
(
[Id] INT NOT NULL PRIMARY KEY
...
)
CREATE TABLE EmployeeInvoice
(
[EmployeeId] INT NOT NULL,
[InvoiceId] INT NOT NULL,
PRIMARY KEY ([EmployeeId], [InvoiceId]),
CONSTRAINT [FK_EmployeeInvoice_ToTableEmployee]
FOREIGN KEY ([EmployeeId]) REFERENCES [Employee]([Id]),
CONSTRAINT [FK_EmployeeInvoice_ToTableInvoice]
FOREIGN KEY ([InvoiceId]) REFERENCES [Invoice]([Id])
)