1

ユーザーが次のリソース/コンテンツを作成できる Web アプリケーションを開発しています。

Events | Music | Posts | Classifieds

次のような多くの共通フィールドがあります。

created_date | title | desc | user_id

ここで、コンテンツごとに個別のテーブルを作成するか、テーブルtype_idを指す外部キーを使用してすべてを 1 つのテーブルに保存するかを考えていcontent_typeます。もちろん、特定のコンテンツ タイプでのみ使用される個別のフィールドがいくつかあります。これらのフィールドを使用しない場合は、空白のままにします。

コンテンツ タイプごとに個別のテーブルを使用すると、データはより整理されたように見えますが、すべてのテーブルでキーワードを検索するのは悪夢になりつつあります (結合、ユニオンなどを使用)。単一のテーブルであれば、検索は非常に簡単です。

ユーザーがキーワードですべてのコンテンツを検索できるようにする必要があります。彼は特定のコンテンツを検索することもできます。WHEREそのために、フィールドで条項を作成しtype_idます。

各方法の長所/短所をすべて認識しているわけではありませんが、間違った決定を下さず、すべてを最初からやり直さなければならないので、アドバイスをいただければ幸いです。

4

2 に答える 2

1

「has a」関係を使用することを考えてみてください。たとえば、イベントには「Web アイテム ハンドル」が関連付けられており、「Web アイテム ハンドル」とは、説明、作成日、タイトル、「所有者」などを含むものです。

于 2013-04-02T22:02:15.213 に答える
0

本当に同一のデータがない限り、別のテーブルを使用します。特定のコンテンツ タイプだけが使用するいくつかのフィールドを持つ 1 つのテーブルを持つことは、実際にはあまり良いデータベース設計ではありません。

基本データを含む1つのテーブルが本当に必要な場合は、content_typeと共通フィールドで提案したように1つ作成し、タイプごとに他の個別のフィールドを持つ4つの個別のテーブルを作成してから、内部結合を行うことができますそのタイプのフィールドを選択します。しかし、個人的には、4 つのテーブルを作成した方がよいと思います。

于 2013-04-02T21:42:06.613 に答える