【问题标题】:Best OOP Practices PHP/MySQL最佳 OOP 实践 PHP/MySQL
【发布时间】:2011-04-27 19:15:28
【问题描述】:

我正在创建一个单词老师:

我创建了一个包含多个表的数据库:

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

所以 themeIdFK、groupIdFK 和 weekIdFK 是外键。

在 PHP 中,我想显示所有主题。如果按下主题,则显示所有组等。 我应该创建什么类。 (如课程主题、小组、周和单词) 以及在不使数据库过载的情况下检索数据的最佳方法是什么?

【问题讨论】:

    标签: php mysql oop structure overloading


    【解决方案1】:

    首先,如果列包含相同的数据,那么它应该具有相同的名称:

    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 模型
    • Word - 模型使用,包含每日单词和一些关于它的附加信息
    • WordMapper - 负责存储和检索 Word 类的实例

    基本上这个设置会实现DataMapper pattern

    为每个表创建一个类是没有意义的,因为附加的表只包含有关单词的信息。至少我是这么看的。

    不过,我不太确定你是否需要制作一个复杂的应用程序,只是为了制作日常用品..也许只是作为练习。

    【讨论】:

    • 很清楚,这将是一个相当复杂的应用程序。那你说词类中最好存储主题、组和周数据?谢谢!
    • 数据库存储和应用逻辑是完全不同的系统。从应用程序的角度来看,“主题”、“组”和“天”只是选择单词 [$word = new Word; $mapper = new WordMapper; $mapper-&gt;had_group('foobar')-&gt;load( $word );] 的约束。它们的行为不像完整的实体。
    • 亲爱的人,投了反对票,但没有足够的勇气发表评论:请您解释一下,这个答案有什么问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 2011-03-29
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多