祝所有读到这篇文章的人节日快乐。我确实需要一个我正在做的项目的建议。
我对PHP和MySQL编程还比较陌生,我听说在项目上工作是提高我技能的最好方法。
该项目是一个简单的公告项目,用户可以登录注册新的公告。
现在,每个公告都基于一个类别,例如生日、婚礼、社交活动、法庭听证等。
我目前正在研究的一件事是MYSQL表结构的外观。
例如,如果用户想要发布生日帖子,那么所有用户单击的都是生日,并用相关信息填写表单。如果用户想要制作一个婚礼帖子,用户点击weddings并填写一个包含相关信息的表单。
但是,按照我的设置方式,每次发布都有不同的数据表。
也就是说,每种公告类型都存储在自己的表中。
例如,对于生日,我用生日控制器创建了一个生日模型
对于婚礼,我创建了一个带有婚礼控制器的婚礼模型。
为了毕业,我用毕业控制器创建了一个毕业模型。
但有些公告的名称、标题等属性相似。
但这意味着要重复很多代码,因为它们具有相似的属性,例如生日公告很可能与毕业公告相似。
我的第一个问题是如何限制必须创建的表的数量,并减少代码,使其看起来不重复。
在我看来,我有太多的模型和控制器。更重要的是,我发现我在重复代码,在拉腊卡斯特的“面向对象的新兵训练营”中,我能清楚地记得杰夫说过这是一个糟糕的做法。
所以我真的在寻找一个更好的方法。
我知道这件事很长,但我确实需要帮助。
谢谢。
最佳答案
就我个人而言,我会利用MySQL的关系功能(它是一个关系数据库)。
如果可以为每个公告类型标识属性的超集(即所有公告类型的所有属性合并到一个唯一列表中),则将此设置为公告表。
例如
announcement_id: a unique id for each announcement. can just be an auto incremented number
announcement_date: date
announcement_type: (see below)
announcement_title: the announcement headline / title
announcement_detail: the detail text for the announcement
announcement_user: name of the person adding the announcement (think about user lists and authentication and things for this as well...)
然后添加一个announcements_type表,其中包含您在announcements表中允许的不同类型的通知:
announcement_type_id: a type id could just be a single letter, e.g B=Birthday, G=Graduation,W=Wedding.
announcement_type_description: a user friendly name for the announcement type, e.g Birthday, Graduation, Wedding
因此,您的两个表中的记录可以是:
类型表:
id description
W Wedding
B Birthday
G Graduation
公告表:
id date type title detail user
1 18090212 B Abe Lincoln's birthday Birthday of the 16th US president John Doe
2 19810729 W Royal Wedding Wedding of Prince Charles and Diana Spencer in London Fred Bloggs
这不是一个完整的解决方案,但希望能给你一些想法。。。