PHP/MySQL关系表建议
我只是想知道我是否可以从以下方面得到一些建议: 我正在CodeIgniter中构建一个站点,其中存在一个内容类型“公文包\项目”。 通过复选框控件,可以在3个位置显示相同的投资组合项目: 主页、会员页面和客户端页面 我只是想知道在数据库中实现这种关系的最佳方法是什么。我可以为上面的每一个场景设置3个关系表,但对我来说,这似乎有些过分(这个站点非常小) 我正在考虑使用一个包含以下字段的关系表:PHP/MySQL关系表建议,php,mysql,codeigniter,Php,Mysql,Codeigniter,我只是想知道我是否可以从以下方面得到一些建议: 我正在CodeIgniter中构建一个站点,其中存在一个内容类型“公文包\项目”。 通过复选框控件,可以在3个位置显示相同的投资组合项目: 主页、会员页面和客户端页面 我只是想知道在数据库中实现这种关系的最佳方法是什么。我可以为上面的每一个场景设置3个关系表,但对我来说,这似乎有些过分(这个站点非常小) 我正在考虑使用一个包含以下字段的关系表: type (homepage, client or member) show_on_id portfol
type (homepage, client or member)
show_on_id
portfolio_id
类型字段的目的是确定从哪个表(客户端或成员)检索“show_on_id”,如果类型是homepage,则不需要show_on_id
这样做有什么明显的缺点吗?每个地点可以有一个或多个投资组合项目吗 如果有多个,则使用链接表,如果只有一个使用直接外键字段链接到公文包
我会建议不要使用一个链接表为所有三个基于个人经验,正是这样的设计和问题,可能会出现以后 是的,有一点缺点。对于同一设置,您可能会得到多个行,每个行可能相互矛盾。因此,如何在这个表中插入行是非常重要的 如果您不想再添加任何部分,那么最好使用portfolio表:
CREATE TABLE `portfolio`
(`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`content` TEXT NULL,
`showHome` BOOLEAN NULL,
`showClient` BOOLEAN NULL,
`showMember` BOOLEAN NULL)
然后是将用户链接到其公文包的表格
CREATE TABLE `portfolio_user`
(`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`portfolio` INT NOT NULL,
`user` INT NOT NULL)
如果您打算添加更多的位置,以便稍后可以显示投资组合,或者如果这些位置是动态的,那么您的方法将起作用。我只需要将“type”更改为“place”,因为这样更容易理解,然后使用ENUM或其他表来定义公文包可以显示的位置