2010-12-28 6 views
1

"ステータスコレクション"の一環として "ツイート"と "Facebookステータス"をアプリケーションに保存したいので、すべてのステータスコレクションにはたくさんのツイートやFacebookステータス。 Facebookのためだけに私はテキストに興味があるので、今はビデオ/写真を保存しません。2つの類似したオブジェクトの2つのテーブルを別々にする必要があります

私はDB設計のベストプラクティスに関して疑問を抱いていました。 1つのテーブル(FacebookとTwitterの両方の制限を含むようにステータスを420に設定してください)を持つ方が良いですか?それはどのタイプのステータスであるかを判断する "タイプ"の列か、なぜ?

答えて

1

厳密に言えば、ツイートはFBアップデートと同じではありません。今のところ非テキストを無視しているかもしれませんが、後で気が変わり、うまくいかないモデルにぶつかってしまうかもしれません。原則として、オブジェクトは、実際にそうでないかぎり互換性のあるものとして扱われるべきではありません。それらが単に類似している場合は、別々のテーブルを2つ使用するか、必要に応じて追加の列を使用する必要があります。

本当に単なるテキストであれば、おそらく1つのテーブルから離れてしまう可能性があります。しかし、これは意見の問題であり、おそらく多くの答えを得るでしょう。

+0

あなたは良い点を作っています。私が言うことは、あなたのビジネスオブジェクトが実際のオブジェクトとは違うものに基づいてDBを設計すべきであるということだけです。彼がSocialMediaMessagesやツイートやFBの投稿を気にしていると思うと... ... –

+0

これは意味があります。要件は今後も通常どおり変更され、今後各タイプごとに追加情報が必要になる可能性があります。 – Tam

1

私は1つのテーブルにメッセージを入れて、タイプを定義する別のものを持っているでしょう:

SocialMediaMessage 
------------------ 
id 
SocialMediaTypeId 
Message 

SocialMediaType 
--------------- 
Id 
Name 

彼らはそれらを分離するためにはポイントがないことを十分に似ているようです。両方のソーシャルネットワーキングサイトを照会したい場合は、あなたの人生を楽にします。

1

おそらくテーブルと使用タイプで識別するのが簡単です。複数の表がある場合は、各タイプごとに1つの問合せではなく、データにアクセスするために問合せ/ストアド・プロシージャが1つだけ必要です。

関連する問題