レコードを複数まとめて意味を持たせるようなデータベース設計について

前提

多対多のデータを作る設計について実現を悩んでいます。
何かご助言いただけますと幸いです。

実現したいこと

ここに実現したいことを箇条書きで書いてください。
以下のようなステータスと効果が定義されている場合に、

ステータス
status1
status2
status3
status4
効果
効果A
効果B
効果C

以下のようなステータスの保持状態と効果のマッピング設定に従い、現在のステータスに適した効果を取得したいです。

ステータスの状態 効果
status1, status2 を保持 効果A
status1, status3 を保持 効果B
status1, status3, status4 を保持 効果C, D

(入力値:status1, status2  出力:効果A  としたい。)

ステータスの状態として組み合わせの数は可変で、
付与される効果もいくつかある場合があります。
最も多く条件を満たすステータスの状態を適用しようと思っています。
ex→
status1, status3, status4 を保持していた場合は、
効果Bではなく 効果C, D を付与する。

このような、レコードを複数まとめて1つの意味を持たせるような形は、どのようにデータベース設計するのもでしょうか。

考えていること

現状では、ステータスを複数まとめるようの中間テーブル?を作り、
そこで
ステータス状態セット1=status1
ステータス状態セット1=status2
ステータス状態セット2=status1
ステータス状態セット2=status3
ステータス状態セット3=status1
ステータス状態セット3=status3
ステータス状態セット3=status4
というようにレコードを複数まとめ、
また別のテーブルでこのステータス状態セットがそれぞれどの効果と関連づいているかの関係性を持たせるなどを考えています。

他に何か参考になるものがありましたらお教えください。

補足情報(FW/ツールのバージョンなど)

Oracle 12.1.0.1

コメントを投稿

0 コメント