2011-04-27 60 views
1

我創建一個字老師:OOP最佳實踐的PHP/MySQL

我創建了一個數據庫,多個表:

TblTheme (themeId, name);<br> 
TblGroup (groupId, name, themeIdFK);<br> 
TblWeek (weekId, week, groupIdFK);<br> 
tblWord (wordId, word, weekIdFK);<br> 

所以themeIdFK,groupIdFK和weekIdFK外鍵。

在PHP中,我想顯示所有的主題。如果一個主題被按下,顯示所有的組等。 我應該創建什麼類。 (如類主題,組,周和字) 什麼是檢索數據的最佳方式,而不會重載數據庫?

回答

0

首先,如果列包含相同的數據,那麼它應該有相同的名字:

Themes (theme_id, name); 
Groups (group_id, name, theme_id); 

然後當你創建JOIN,你可以把它寫成

SELECT 
    Themes.name AS theme, 
    Groups.name AS group 
FROM Themes 
LEFT JOIN Groups USING theme_id 

至於你原來的問題: 我會去上課:

  • 教師 - 這將是你的MVC模式
  • 字 - 通過模型使用,持有你的日常單詞和一些關於它的其他信息
  • WordMapper - 負責文字類的存儲和檢索實例

基本上此設置將執行DataMapper pattern

由於附加表只保存關於單詞的信息,因此每個表都有一個類沒有意義。爲了免得這是我的看法。

雖然,我不確定你是否需要製作一個複雜的應用程序,只是爲了製作每日一詞的事情..也許只是作爲練習。

+0

這很清楚,它將是一個相當複雜的應用程序。那麼你說什麼最好把這個主題,分組和星期數據存儲在單詞類中? 謝謝! – Oritm 2011-04-27 20:32:51

+0

數據庫存儲和應用程序邏輯是完全不同的系統。從應用程序的角度來看,「主題」,「組」和「日期」僅僅是用於選擇單詞['$ word = new Word; $ mapper = new WordMapper; $ mapper-> had_group('foobar') - > load($ word);']。他們不像完整的實體。 – 2011-04-28 01:16:38

+0

親愛的人downvoted,但沒有足夠的膽量留下評論:請你解釋一下,這個答案有什麼不對? – 2013-09-16 22:49:43