実際の例として、ポケモンの要素を SQL でモデル化することを考えてみましょう。
1 つの要素には多くの長所と短所がありますが、それら自体も型要素です。データベースでそれをどのようにモデル化しますか?
解決策は、多対多の関係でテーブルを結合するように機能する、おそらく element_strength と element_weakness の追加の 2 つのテーブルを作成することだと思います。これは正しいですか?
はい、それだけですが、単純化できます。
テーブル要素 名前
テーブルの弱点 idElement |idElementStrongAgainst
強さの表を追加する必要はありません。別の列に入力されている弱さの表を見るだけです。
だからあなたがする水の強みを見つけるために
SELECT strVS.Name
FROM Element AS el
JOIN Weakness on el.idElement = Weakness.idElement
JOIN Element As strVS on weakness.idElementStrongAgainst= strVS.idElement
WHERE el.Name = 'water'
そして弱点を見つけるために:
SELECT weakVS.Name
FROM Element AS el
JOIN Weakness on el.idElement = Weakness.idElementStrongAgainst
JOIN Element As weakVS on weakness.idElement = weakVS.idElement
WHERE el.Name = 'water'