system-sekkei/isolating-the-domain

給与.時給契約に時給IDは必要ないですか?

Closed this issue · 1 comments

いつも参考にさせてもらっています。
表題の通りです。

他のテーブルとは違うので疑問に思い、issue投稿しました。

CREATE TABLE 給与.時給契約履歴 (
時給ID INTEGER NOT NULL PRIMARY KEY,
従業員ID INTEGER NOT NULL,
時給 INTEGER NOT NULL,
時間外割増率 INTEGER NOT NULL,
深夜割増率 INTEGER NOT NULL,
適用開始日 DATE NOT NULL,
登録日時 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
,FOREIGN KEY (従業員ID) REFERENCES 給与.従業員(従業員ID)
);

CREATE SEQUENCE 給与.時給ID;

CREATE TABLE 給与.時給契約 (
従業員ID INTEGER NOT NULL,
時給 INTEGER NOT NULL,
時間外割増率 INTEGER NOT NULL,
深夜割増率 INTEGER NOT NULL,
適用開始日 DATE NOT NULL,
登録日時 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
,PRIMARY KEY (従業員ID, 適用開始日)
,FOREIGN KEY (従業員ID) REFERENCES 給与.従業員(従業員ID)
);

@SpaceNet

主キーとして、従業員ID+適用開始日で識別しています。
それとは別に、ID は特に必要ない、ということですね。

他のテーブルのIDは、基本的に主キーになっているはずです。