私はデータベース設計に若干新しかったので、現在のテーブルをどのように最適にレイアウトするかについてのいくつかの指針を示したいと思います。データベース設計:ネストされたオブジェクトには独自のテーブルが必要ですか?
私はさまざまな仕事を保持するテーブルJobs
を持っています。ユーザーはSubjobs
を作成できます。 Subjob
は、親としてJob
を有する。 Subjob
はすべてJob
と同じプロパティを持ちますが、一部は読み取り専用ですが、すべてJob
の読み取り/書き込みです。 Job
は、多くの場合、Subjobs
を持つことができます。現時点では、1つのサブジョブ層しか存在しないかもしれませんが、将来はSubjobs
という無限のネストを可能にする柔軟性が欲しいと思います。オブジェクトは、MVC Webアプリケーションを介して対話されます。
私は、レイアウトのための2つの選択肢と考えられてきました:
Jobs
とSubjobs
それぞれ独自のテーブルを持っています。Job
に列を導入していないため、これは「良いデザイン」のように思えます。Job
とSubjob
は、プロパティが同じでも、2つの別々のコントローラ/ビューセットを持つ必要があるため、Webアプリケーションのコーディングには少し苦労します。- 無限のネストが導入されていると、設計の観点からはあまり意味がありません。
Jobs
とSubjobs
は同じテーブルにあります。Jobs
は、Subjob
の場合はnull以外のnull可能なparent_job_id
プロパティが与えられているだけです。- 無限のネスティングに適しています。
- ウェブアプリケーションをコーディングするための苦痛が少なくなります。
Job
の実際のプロパティとは関係のないJob
テーブルに、奇妙なネスティングプロパティが導入されています。
これを処理する方法についてのアドバイスはありますか?私が考慮していない追加のデザインパターンはありますか?私がEntity Framework 6 Code Firstを使用しています。
よくやった。私は同じことにコメントを書いていましたが、これは私がリストするよりはるかに堅牢です。 :) –
@SeanLangeありがとう!いくつかの一般的な見解では、https://stackoverflow.com/q/4048151/2333499へのソフト紹介。 – SqlZim