この単純なデータベース モデリングでよろしいかと思います。特に請求テーブル。皆さん、ご意見いただけますか?
2 に答える
外部キー列をテーブルの主キーの一部にすることはまったく問題ありません。これは、たとえば、多対多の関係を実装する交差テーブルで頻繁に発生します。
複合キーの代わりに代理キーを使用する方が望ましいと考える人もいます。外部キー列を主キーとして使用する場合、ほとんどの場合、複合キーを使用することになり、複合キーが大きく複雑になる可能性があります。
ここ StackOverflow や他の場所で検索すると、自然キー、複合キー、代理キーの相対的なメリットに関する広範で熱心な議論を見つけることができます。これらを読むと、モデルで主キーを定義した方法を支持する人がたくさんいることがわかります。
EmployeeProject の主キーが 2 つの外部キーで構成されてもよいかどうかを尋ねていると思います。私があなたの質問を正しく理解していれば、それで問題ありません。
Billing では、EmployeeProject を参照する 2 つの列で構成される外部キーを使用しても問題はありません。(SQL では、 .)ここで Employee と Project を参照する 2 つの個別の外部キーはforeign key (empNo, projectNo) references EmployeeProject (empNo, projectNo)
ほぼ確実に必要ありません。
Billing (SQL, primary key (billingNo, empNo, projectNo)
) の 3 列の主キーは、このようなデータを許可します。
billingNo empNo projectNo hoursBilled
--
1003 13 7 3
1003 13 6 2
1003 17 7 8
1004 13 7 3
1004 13 6 2
それがあなたの意図なら、あなたは正しい方向に進んでいます。