2

データベースにジョブ (ジョブ) テーブルとツール テーブルがあります。工具テーブルは、最初はカテゴリ(tool_category)、もう 1 つは工具データ(common_tools)の 2 つの部分に分かれています。

ここで質問したいのは、さまざまなカテゴリ (tool_category) のツール (common_tools) からリストされているいくつかのドロップダウン フィールドを選択する必要があるジョブ フォームがあることです。以下に2つのアプローチを示します。どちらが優れているのか、その理由を教えてください。

アプローチ1

3 つのフィールドを含むテーブル「tools_in_jobs」を作成しました。これにより、ジョブ フォームのどのカテゴリに対してどのツール値が選択されているかを知ることができます。

ここに画像の説明を入力

アプローチ 2

別のアプローチは、すべてのツールに共通のテーブルの代わりに、下の図に示すようにツールごとに個別のテーブルを作成することです。ただし、ここで注意すべきことの 1 つは、これら 2 つのテーブル (job_faculty と job_expertise) は、たとえば、異なるカテゴリの 5 ~ 6 個のツールを使用しているため、5 ~ 6 個のテーブルが存在する可能性があることです。

ここに画像の説明を入力

また、他におすすめがあれば教えてください。

4

2 に答える 2

2

あなたが達成しようとしていることはよくわかりませんが、私が言えることは、アプローチ2はまったく良くないということです. 各ツールのテーブル?同じフィールドを持つものはどれですか? ナ!これは巨大なオーバーヘッドであり、プログラムの「重複コード」に匹敵します。保守性、拡張性なども本当に悪いと思います。

次に、1つにアプローチします-「tools_in_job」テーブルがツールおよびカテゴリとの関係を持っている理由がわかりません-ツールへの1つで十分ではないでしょうか?(無駄な冗長のように見えます)またはの意味は何ですか?このカテゴリー?

私が言ったように、あなたは本当にあなたが達成しようとしていることについてより良い説明をする必要があります. それでは編集します。

于 2013-04-11T11:36:45.227 に答える
0

確かにアプローチ 1 が推奨されるアプローチですが、ジョブから tool_category_id を削除し、tools_in_job と tool_category の間の関係も削除して、設計を正規化します。

アプローチ 2 は、新しいツールを追加するたびに新しいテーブルを作成し、より多くのコードを記述して維持し、より多くのテーブルとインデックスを維持し、より多くのストレージを使用することを意味します。

于 2013-04-11T11:51:38.657 に答える