【问题标题】:MySQL - Linking employee(s) to invoice #MySQL - 将员工链接到发票 #
【发布时间】:2017-12-12 20:37:38
【问题描述】:

一家服务公司想要一份关于谁做了什么工作的注册表,在这种情况下,我们有 9 名员工,其中一名或多名员工一次可以开一张发票。

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

到目前为止,主管标记了在每张发票中工作的员工,并且 db 拥有所有 9 名员工,我无法将矩阵存储到列中 - 或者更确切地说是列中的员工列表。

在搜索员工#2 时,员工是否可以在没有找到员工 22 的情况下进行查询?

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

谢谢

【问题讨论】:

  • 这是一个非常基本的数据库问题——你读过关系数据库的入门教程吗?如果是这样,您能否了解如何改进您的数据库设计以使这项任务变得更加容易?
  • 显然我在设置关系数据库时遇到了麻烦,您在这里说明了这一点。
  • 现在@koryakinp 已经为您设置了表格,请在 Google 上搜索“SQL JOIN”以了解如何检索您想要的数据。还需要一些时间来阅读外键,这是 EmployeeInvoice 表中发生的事情。假设您没有让我们为您做作业,还请阅读有关交易的信息,这将有助于您数据的完整性。

标签: mysql list storage


【解决方案1】:
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])
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多