2017-12-12 15 views
1

サービス会社は、誰がどのような仕事をしたのかというレジストリを正確に求めています。この場合、一度に1人以上の従業員が1人の従業員を雇用することができます。MySQL - 請求書への従業員のリンク#

質問:管理者が各従業員(給与計算)によって行われたジョブのクエリを取得するために、従業員が行った請求書をデータベースにどのように格納する必要がありますか?

これまでスーパーバイザは各請求書で働いていた従業員をマークしており、dbにはすべて9人の従業員がいます。行列を列に格納することに問題があります。

これは、従業員#2を検索するときに従業員22とは言わずに従業員が問い合わせることができますか?

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

おかげ

+2

これはかなり基本的なデータベースの質問です - あなたは、リレーショナルデータベースに始まるチュートリアルを読みましたか?もしそうなら、あなたのデータベース設計をどのように改善して、この作業をずっと簡単にすることができますか? –

+0

明らかに、私はリレーショナルデータベースの設定に問題があります。ここには明白です。 –

+1

これで@koryakinpがあなたのためにテーブルを設定しました。希望するデータを検索する方法については、Googleの「SQL JOIN」を参照してください。また、EmployeeInvoiceテーブルで行われている外来キーの読み込みに時間を掛けてください。あなたが私たちにあなたの宿題をやってもらわないと仮定して、あなたのデータの完全性を助けるトランザクションについても読んでください。 –

答えて

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]) 
) 
関連する問題