私のデータベースには、親(フィード)とisA関係の子(パブリック・フィード、プライベート・フィード、生成フィード)の7つの表があります。フィードテーブルには外部キーを持つテーブル「サブスクリプション」があります。各ユーザーは任意の種類のフィードを購読できます。問題は、フィードの種類ごとに表示が異なることです。つまり、購読されているフィードの種類ごとに異なるリンクを生成する必要があります。現在のスキームでは、3つのクエリを実行してフィードIDからフィードのタイプを取得する必要があります。この問題の解決策はありますか?Isa関係で型を回復する
0
A
答えて
0
ビューを使用して、子を親に事前結合し、どの子タイプに関係なく一貫した結果を得ることができます。たとえば、次のように
create view feed_links as
select f.feed_name
, case f.feed_type
when 'public' then pub.x + pub.y
when 'private' then pri.z
when 'generated' then gen.v + gen.w
end as link
from feeds f
left outer join public_feeds pub on pub.feed_id = f.feed_id
left outer join private_feeds pri on pri.feed_id = f.feed_id
left outer join generated_feeds gen on gen.feed_id = f.feed_id
where ...;
またはあなたのフィードテーブルはfeed_typeカラム(または同等の)を持っていない場合:
どのような追加情報の子テーブルに格納されcreate view feed_links as
select f.feed_name
, case when pub.feed_id is not null then pub.x + pub.y
when pri.feed_id is not null then pri.z
when gen.feed_id is not null then gen.v + gen.w
end as link
from feeds f
left outer join public_feeds pub on pub.feed_id = f.feed_id
left outer join private_feeds pri on pri.feed_id = f.feed_id
left outer join generated_feeds gen on gen.feed_id = f.feed_id
where ...;
+0
こんにちは、ありがとうございます。しかし、親テーブルにはfeed_typeフィールドがないので、私はそれを持っていません。 –
+0
更新された回答を表示 –
関連する問題
- 1. ISA関係ER図
- 2. 関係モデルのISA関係を表すのは誰ですか?
- 3. エンティティ関係ダイアグラム - ERDでISA方向
- 4. xmlスキーマとisA関係を強制
- 5. 反復関係:反復関係を書く
- 6. 2回目の反復クラッシュ - オーダー無関係
- 7. 反復関係のツリーメソッド
- 8. 反復なしで反復関係を解く
- 9. 反復関数を反復型に変更する
- 10. Laravel関係で2回返す
- 11. 反復関係を解くには?
- 12. データ構造の反復関係
- 13. Laravel関係の復帰は結果
- 14. 反復関係宿題の苦闘
- 15. 反復特定のアルゴリズムとの関係
- 16. 初回コンパイル時の依存関係の依存関係
- 17. .NETで.dllの依存関係を回避する方法
- 18. StructureMapで依存関係を2回デコレートする方法
- 19. ActiveRecord関連するレコードを回復する
- 20. HibernateでmappedByとコレクション型の関係を更新するには?
- 21. 循環依存関係を持つOracleダンプを安全に回復できますか?
- 22. Doctrineはモデルを生成 - 関係型
- 23. Herokuを回避するグローバル依存関係を構築する
- 24. cakePHPモデルデータベースを回復する
- 25. Windows 7を回復する
- 26. パスワードを回復する
- 27. neo4j列挙型ではない動的関係型
- 28. C++:ポインタ型を指定すると、どのようにpointee型を回復できますか?
- 29. ジェンキンスダイヤモンドの依存関係が3回のアップストリームジョブで2回だけ発生する
- 30. 次のアルゴリズムの反復関係はなんですか?
- それは本当にあなたのように私に聞こえますそれらを必要としません。フィードは公開されているかプライベートORであるかfeed_typeを親フィードテーブルに格納して子テーブルを破棄することで、単純化することはできませんか? –
各フィードに固有の制約があります。たとえば、プライベートフィードにはパスワードとユーザー名があり、生成されたフィードはエディタなどに関連付けられます。 –