ZZ-bb に応えて、明確にしようと思いますが、ZZ は質問にかなり答えたと思います (ZZ-bb に感謝します)...
データベースでクリップボードの内容を表現したい。ユーザーがアイテムをクリップボードに追加し、後で戻ってきてもクリップボードにアクセスできるという考えです。
ユーザーは、画像、ファイル、テキストのチャンクなどをクリップボードに保存できます。
これは私が思ったことです
- 1 ユーザー対 1 クリップボード
- 1 クリップボードから多数へ
cb_items
ここにこすりがあります。cb_item
文字、テキスト、画像の URL、ファイルの場所、おそらくグロブなど、何でも説明したいと思います。
この段階cb_item
で、エントリが必要とする可能性のあるすべての列を含むテーブル行を記述するか、何らかの方法で「ポリモーフィック」FK を作成することができます...
これを行うために私は考えました。
- 1
cb_item
対1type
- 1
cb_item
対1typed_cb_item
次に、型を使用して、検索するテーブルを決定しますtyped_cb_item
。
例えば
cb_item #1 => { IMAGE_TYPE, 1 }
cb_item #2 => { FILE_GLOB, 1 }
テーブルを調べて情報をitem #1
得るtyped_cb_item
id
からです。テーブルを調べて情報を得るからです。cb_image_item
item #2
typed_cb_item
id
cb_fileglob_item
編集- テーブルは次のようになります....
cb_item_tbl
-----------
item_id (PK)
user_id (FK referenceing user)
type_id
typed_item_id >------------+ - - like "typed_cb_item" above
|
cb_image_item_tbl |
----------------- |
img_item_id (PK) <---------+ }
url (string) | }
| } OR based on type_id
cb_file_item_tbl | }
---------------- | }
file_item_id (PK) <--------+ }
file_name
file_size etc etc
maybe a glob
これは、ソフトウェアに関する限り正常に機能しtyped_item_id
ますが、DB の実際の外部キーにすることはできないため、DB の参照整合性を使用できません。それを壊すべきではありません!)そしてクエリをより複雑にします。
誰か提案はありますか?この「ポリモーフィック」な FK のアイデアはおそらく最善の方法ではないと思いますが、その項目に関連する列のみを持つ項目テーブルに対処するために使用できるという事実が気に入っています。
コメントや提案があれば事前に乾杯...