PHP/MySQL的最佳OOP实践

PHP/MySQL的最佳OOP实践,php,mysql,oop,structure,overloading,Php,Mysql,Oop,Structure,Overloading,我正在创造一个单词老师: 我创建了一个包含多个表的数据库: 所以meidfk、groupIdFK和weekIdFK是外键 在PHP中,我想显示所有的主题。如果按下主题,则显示所有组等。。 我应该创建什么类。喜欢课程主题、小组、周和单词 在不重载数据库的情况下,检索数据的最佳方法是什么?首先,如果列包含相同的数据,那么它应该具有相同的名称: Themes (theme_id, name); Groups (group_id, name, theme_id); 然后,当您创建JOIN时,您可以将其

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

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

所以meidfk、groupIdFK和weekIdFK是外键

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

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

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-由模型使用,保存您的每日Word和有关它的一些附加信息 WordMapper-负责存储和检索Word类的实例 基本上,这种设置可以实现

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


尽管如此,我不太确定你是否需要制作一个复杂的应用程序,仅仅是为了制作每日新闻。。可能只是作为锻炼。

很明显,这将是一个相当复杂的应用程序。那么,您认为最好在word类中存储主题、组和周数据吗?谢谢数据库存储和应用程序逻辑是完全不同的系统。从应用程序的主题角度来看,group和day是选择单词[$word=new word;$mapper=new WordMapper;$mapper->had_group'foobar'->load$word;]的唯一约束条件。亲爱的投了否决票的人,但没有足够的勇气留下评论:请你解释一下,这个答案有什么不对吗?
SELECT 
   Themes.name AS theme,
   Groups.name AS group
FROM Themes 
LEFT JOIN Groups USING theme_id