2009-12-05 36 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