如何在SQL中建模自引用实体

时间:2013-08-23 10:13:19

标签: sql erd

对于一个实际例子,我们考虑尝试在SQL中对Pokemon元素进行建模。

一个元素有许多优点和缺点,但它们本身也是类型元素。你会如何在数据库中建模?

我相信解决方案是创建一个额外的2个表,也许是element_strength和element_weakness,它们就像在多对多关系中连接表一样。这是对的吗?

1 个答案:

答案 0 :(得分:1)

是的,就是这样,但你可以简化:

表格元素 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'