0

履歴および階層 SQL テーブルを作成する場合、開始日と終了日のフィールドを使用するのと、すべての日付に 1 つの日付フィールドを使用するのとではどちらが良いですか? それぞれに長所と短所がありますが、どちらがより最適化され、エレガントで、コーナー ケースを最も効果的に考慮しているかについての証拠を探しています。

例 -

-- Start/Stop
create table roster (
    id bigint identity primary key,
    start_date date not null,
    stop_date date not null,
    employee_id int not null references employee (id),
    supervisor_id int not null references employee (id),
    unique(start_date, stop_date, employee_id)
)

-- Single Date
create table roster (
    id bigint identity primary key,
    row_date date not null,
    employee_id int not null references employee (id),
    supervisor_id int not null references employee (id),
    unique(row_date, employee_id)
)
4

0 に答える 0