我想知道是否有人可以帮助理解我是否使用包含多个主题的wiki内容的单个表格做得很好,所以:
TABLE wiki
==> wiki_id
wiki_content
wiki_language
wiki_user_id
TABLE houses
house_id
house_name
house_year
house_location
==> wiki_id
TABLE architects
arch_id
arch_name
arch_born
arch_died
==> wiki_id
我认为如果我使用它可能是正确的方法:
SELECT * FROM houses WHERE house_id = '123' INNER JOIN wiki ON houses.wiki_id = wiki.wiki_id
但我没有数据库方面的经验。
wiki结构在两种情况下基本相同,所以,我错误地使用一个wiki表用于两个不同的表吗?我可以在这个数据库设计解决方案上遇到问题吗?
答案 0 :(得分:1)
如果维基信息与房屋和建筑师直接相关,那么我认为将它们与外键相关联没有问题。它只是多个实体的一对多关系。只要这些是相关的,就可以链接它们。
如果与房屋相关的wiki集与建筑师相关的wiki完全分开,那么这可能只是一个数据完整性问题,因为您的外键约束不能确保始终为真。
答案 1 :(得分:1)
如果您在同一个维基中处理房屋和建筑师,我认为这就是您想要的方式。
您拥有它的方式,您可以看到哪些房屋(和哪些建筑师)与给定的维基相关联。将事物分成两个wiki表将表明它们并不是同一个wiki的一部分,这可能表明你的wiki与你的房屋和你的建筑师“紧密耦合”。
答案 2 :(得分:1)
SELECT *
FROM wiki AS w
JOIN houses AS h ON w.wiki_id = h.wiki_id
JOIN architects AS a ON w.wiki_id = a.wiki_id
WHERE house_name = 'big tall house'
AND house_location = 'two blocks that way'
;