2011-10-01 11 views
0

ブログ、記事、プロフィールのコメント表があります。コメント表はスーパータイプであり、comments_blog、comments_article、comments_profileはサブタイプである可能性があります。サブタイプ/スーパータイプはデータベースで使用する必要がありますか?

オブジェクト指向設計または3つの異なる表を持つ必要があるため、スーパータイプ/サブタイプをデータベース設計で使用する必要がありますか?

答えて

1

詳細によります。それぞれのアプローチには議論があります。基本的に、テーブル間で共有されるデータが多いほど、データを「正規化」し、「スーパータイプ/サブタイプ」を使用する方が意味があります。この方法をとると、SQLがかなり複雑になり、テーブル間で結合する必要があることに注意してください。

もう1つの方法は、テーブルを1つ使用し、ブログ、記事、またはプロフィールであるかどうかを区別するために 'comment_type'のような単純な列を使用することです。そのアプローチのためのsqlも本当にシンプルであり、ちょうどa where comment_type = 'whatever'です。 'comment_type'列は必ず索引付けしてください。この方法は、テーブルの列が大幅に異なる場合はあまり意味がありません。

+0

合意。これらのさまざまなタイプのコメントにアクセスして変更するために使用する共通コードの量によって異なります。あなたのコードがスーパータイプ/サブタイプクラスを使用している場合、データストアは同様の構造を持つことにより恩恵を受ける可能性が高くなります。 –

関連する問題