2010-12-04 11 views
0

異なるタイプのコンテンツを表すデータベースを設定しています。私は時間の経過とともにさまざまな種類のデータ、例えば電話番号、電子メールアドレス、またはWebページを指すことができるリンク(URLと考える)を持っています。類似のテーブルを使用したデザイン

私はのように、私はテーブルになるだろう考え出し

:私も、コンテンツの特定のタイプを指す必要がリンクテーブルを持っている

  • content_phone
  • content_email content_url

リンクは時間の経過とともに変化を指すことができますコンテンツ(それは、電話番号などを指しX + 1 URLの時間を指し時間X ...)

は、コンテンツタイプはにはフィールドを持っていません私は彼らがこれからどうなるかは期待していません(違いがあるかどうかは分かりません)。

私は、リンクとコンテンツタイプを一緒にフックするのに便利です。

EDIT:

コンテンツタイプの無関係なテーブルが多数あります。一部の表には10個のフィールドがあります。

答えて

1

としてテーブルから引き出すことができますが

create table contact 
    person_id 
    phone .. 
    email .. 
    url .. 
    updated_at 
) 

に改訂フィールドを持つようにしたいように見えます他のコンテンツテーブルからのキーを有する、例えば、「コンテンツ」と呼ばれる)。そうすれば、複数の異なる可能性の代わりにいつでもそのテーブルを参照することができます。これにより、NULL可能な列が不要になります。例:

http://consultingblogs.emc.com/davidportas/archive/2007/01/08/Distributed-Keys-and-Disjoint-Subtypes.aspx

0

あなたは(1つの親テーブルを作成し、あなたがそのような

SELECT * FROM person JOIN contact ON (person.id = contact.person_id) ORDER BY contact.updated_at DESC LIMIT 1 

-daniel

+0

私は本当にすべてのnull値を持っている必要はありませんでも...それは本当に連絡先情報ではない、そういうものがあるかもしれない、ナンバープレートやジェノロケーション(議論の目的で重要ではない)などがあります。 – TofuBeer

1

スーパータイプ/サブタイプは、エンティティ間のいくつかの一般的なフィールドがある場合、通常は推奨されますが、あなたの例では、それはとにかく有用である可能性があります。ここで

は、同様の質問・回答のいくつかの例は以下のとおりです。

関連する問題