将单个wiki表用于多个主题表

时间:2009-12-05 00:06:03

标签: mysql database wiki

我想知道是否有人可以帮助理解我是否使用包含多个主题的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表用于两个不同的表吗?我可以在这个数据库设计解决方案上遇到问题吗?

3 个答案:

答案 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'
;