おそらく、良いリレーショナルデータベースとオブジェクト指向の設計は、おそらくすべてのタイプの投稿で同じ属性と振る舞いを共有する1つのメインポストモデルを持つことになります。これはあなたの "テキスト"タイプの投稿としても機能します。
これはまた、投稿との関係も簡素化することができます(「ユーザーには多くの投稿があります」vs「ユーザーにはテキスト投稿やビデオ投稿などが多数あります」など)。
はその後、添付ファイルの種類を決定する「添付ファイル」の表を結合する、(あなたがポストごとに複数の添付ファイルを持つことができます)の並べ替えています:次に
CREATE TABLE attachments (post_id, media_type, media_id)
は、特定のために各タイプのテーブルとモデルを持っていますビヘイビアとハンドラを使用します。
CREATE TABLE audios (id, transcription, storage);
CREATE TABLE videos (id, location, format, storage);
これはおそらく、あなたが意見を必要と簡単に照会し、整合性を維持するためにトリガーます...議論の余地DB設計することができた、しかし、多型の関係のいくつかの並べ替えが必要になります...しかし、Railsはかなりそれを処理しますよく
ポストモデルが
has_many :attachments
と添付ファイルが
belongs_to :post
belongs_to :media, :polymorphic => true
を持っているでしょうし、メディアモデルのそれぞれが
has_one :attachment, :as => :media
を持っているでしょう、あなたは
経由でメディアにアクセスすることができなければなりません あなたが唯一のポストごとに1つのタイプのメディアが必要な場合は
あなたは
申し訳ありませんが、私は:)
を言うことをするより多くの事を考えておく、編集を続けるの記事テーブルと属性を添付ファイルテーブルをスキップしてマージすることができます
以下の両方の回答は私にとって妥当なものです。私が心に留めておきたいのは、dbとモデルの間にある "魔法"の多くは、次のような規則(設定よりも慣例)と同じで、2つのモデルを同じものあなたはおそらく問題を起こして物事を働かせるでしょう。 – jaydel
私は座っていて、簡単なブログのプラットフォームとその設計方法について考えていました。私はSOを開いて、トップにあなたの質問があります! :) – bassneck