MySQL - 将员工链接到发票#

时间:2017-12-12 20:37:38

标签: mysql list storage

一家服务公司想要一个完全由哪个人完成工作的注册表,在这种情况下,我们有9名员工,其中一个或多个员工一次可以开一张发票。

问题是:为了使管理层获得每个员工(工资单)完成的工作的查询,数据库应该如何存储员工已完成的发票?

到目前为止,主管标记了每个发票中工作的员工,并且数据库中包含所有9名员工,我在将列存储到列中时遇到了问题 - 或者更确切地说是列中的员工列表。

在搜索员工#2时,员工是否可以查询说员工22?

Invoice #                   List of Employees
 1                        3, 5
 2                        8, 1, 4
 3                        6
 4                        7, 2, 9, 3...

由于

1 个答案:

答案 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])
)