举一个实际的例子,让我们考虑尝试在 SQL 中对 Pokemon 元素进行建模。
一种元素有许多优点和缺点,但它们本身也是类型元素。您将如何在数据库中对其建模?
我相信解决方案是创建一个额外的 2 个表,也许 element_strength 和 element_weakness 就像在多对多关系中加入表一样。这是正确的吗?
是的,就是这样,但您可以简化:
表元素idElement | 姓名
表弱点 idRow | 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'