2009-12-05 32 views
0

我不知道到知道,如果有人可以帮助理解,如果我做得很好使用单个表与维基上的内容多学科单一维基表,所以:使用了多个主题表

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 

但我没有经验的数据库。

维基结构在这两种情况下基本相同,所以,我错误地使用一个维基表格来处理两个不同的表格吗?这个db设计解决方案将来会遇到问题吗?

回答

1

如果wiki信息与房屋和建筑师直接相关,那么我将它们与外键链接没有问题。这只是多个实体之间的一对多关系。只要这些相关,那么链接它们就可以了。

这可能只是一个数据完整性问题,如果与房屋相关的维基集与完全独立于与建筑师有关的维基,因为您的外键约束不能确保始终为真。

1

如果你在同一个wiki中处理房屋和建筑师,我会认为你会这样做。

您拥有它的方式可以查看哪些房屋(以及哪些建筑师)与某个wiki相关联。将事情分成两个维基表将表明它们不是真正属于同一维基的一部分,这可能表明您的维基与您的房屋和建筑师过于“紧密结合”。

+0

感谢这两个为类似的答案,对不起,我不能给两次答案的问!两张桌子的一个维基,一个阿克斯的两个答案! – vitto 2009-12-05 00:29:30

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' 
; 
+0

谢谢,我强烈需要练习查询优化,并查询可能性 – vitto 2009-12-05 13:24:57