2011-01-25 9 views
0

私は一度に2つのウェブサイトプロジェクトに取り組んでいます。ただし、2つのWebサイトが相互に接続され、同じデータベースを共有しています。同じ名前の2つのテーブルが必要 - このデザインに何が問題なのですか?

最初のサイトでは、それを車のサイトと呼ぶことにしましょう。ここでタグシステムと同じように、エントリに割り当てられるタグ/ラベル/カテゴリを保持する「タグ」というテーブルを作成しました。今では車とは無関係に、別のタイプのエントリーのタグを保持するために別のテーブルが必要になります。たとえば、服にタグを付けるとしましょう。

私はすでに車でタグをつけているcar_tagというテーブルを持っています。

2つの異なるタイプの「製品」のタグを同じテーブルに格納する必要がありますか?私はネストされたセットモデルを使用しています。これはかなり混乱する可能性があり、Webサイトのユーザーが非常に混乱しているエントリで何かが壊れてしまう日があると思います。

提案がありますか?タグ1とタグ2?私は同じWebサイト上の異なるが関連するプロジェクトのために、後でさらに多くのタグを必要とするかもしれないと思う。

+0

私は車と服をモデル化するつもりなら、私はタグをモデリングしません。私がTシャツのタグを見ると、サイズ、価格、メーカーなどがわかります。私にとっては、これはタグの特性ではなく、シャツの特性です。あなたが私に正しいものをモデリングしているようには見えません。一般に、データベースモデルは実際のオブジェクトに基づいている必要があります。タグはちょうど間違った焦点のように思えます。 – David

+0

デビッド、申し訳ありませんが、あなたが冗談を言っていないのなら、あなたは完全にその点を見逃していました。この場合の「タグ」は、特定の項目またはエンティティを複数の「カテゴリ」に割り当てる方法です。たとえば、ビジネスのデータベースでは、ビジネスをそれがカバーするカテゴリに割り当てることができます。ハードウェアの店舗には、ハードウェア、芝生、庭、家庭、産業などが割り当てられます。タグ/ラベルはこれを効果的に行う唯一の方法です。 – HK1

答えて

3

タグが同じ意味的目的を果たす限り、私はそれらを1つのテーブルに結合することに問題は見られません。 TagType/TagTypeIdフィールドを追加して、格納しているタグの種類(車、名前のないエンティティ)を明示する必要があります。

パフォーマンス上の理由から必要な場合は、別のテーブルに分割することができます。

+0

私は、混乱と腐敗の可能性を減らすためだけにそれらを分割することを好むと思います。クエリがすでに複雑なので、ほとんどの場合私の頭の中ではかなり複雑です。 :)私はちょうどあまりにも混乱していないタグテーブルの命名規則に取り組まなければならないと思います。おそらく私は大会のルールの1つに違反し、それらを "car_tag"や "clothing_tag"と区別するために "cartags"や "clothingtags"のようなものと呼ぶでしょう。しかし、それを読んだだけでは混乱しますね。 – HK1

+0

データが壊れてしまう(混在していると思いますが)危険性はありませんが、どちらかというと非常に小さな問題ですので、安心していただけます。また、それらを1つのテーブルに保持し、2つのビューを公開し、それらのビューをクエリに使用することも検討できます。 – jlnorsworthy

2

同意する - 同じテーブルに座っても大丈夫です。

実際、それらが同じオブジェクト/コンセプトを表す場合、それらを別々のテーブルに入れるのは間違いでしょう。

また、タグを「分割」する必要はありません。 red台の車とredの衣服がある場合、両方とも同じredタグにリンクされていれば、どんな害がありますか?あなたはいつかredタグを持つすべてを見つける必要があるかもしれません。全く害はありません。

関連する問題