0

我使用简单的 php MVC 框架和简单的 CRUD 模型。

任何方法都可以添加到模型中,所以我可以使用joinsql-logic 添加复杂的方法,但我想只尝试 CRUD 方法,而不需要连接。

因此,例如,我想添加将照片添加到用户个人资料的功能。

我建议 2 (+1) = 3 种变化:

1 . 将照片的 ID 保存在用户表中:

User型号和users表格:

编号 | 登录 | 电子邮件 | 照片 |

  • photos 是一组照片的 ID。

Photo型号和photos表格:

编号 | 源代码

  • 在 photos 表中我们只保留图片的 id 和 src,不知道它是谁的图片

2.在照片表中保存用户的ID(作为照片所在用户的ID)

型号Userusers表:

编号 | 登录 | 电子邮件

  • 此表中没有有关照片的信息

型号Photophotos表:

编号 | 源代码 | 用户身份

  • 保留拥有这张照片的用户信息,如果用户有 3 张照片,则此表中将有 3 条记录

3. 3表方式:

桌子users

编号 | 登录 | 电子邮件(* 此表中没有有关照片的信息)

桌子photos

编号 | src (* 没有关于谁的照片的信息)

桌子user-photo

编号 | 用户 ID | photo_id (* 照片关系表)

我认为,第二种方式更简单,因为我们不应该解析 SQL 数组,它只是简单的 CRUD 操作。

但是第一种方法更快吗?第一种方式,当我们要获取用户信息时,我们知道照片的id,并通过-主键从photos表中获取照片。id但是在第二种方式中,我们从photos表中获取照片user_id- 不是主键,所以它应该更慢。

你有什么建议吗?对于这样的问题,绝对有另一种解决方案吗?

PS对不起,解释混乱,我有一段时间没有用英语提问,所以欢迎您纠正我的英语不好;)

更新:我添加了第三个变体。它是最好的吗?

4

1 回答 1

1

好吧,您似乎已经知道,不要使用第一个选项,它不能很好地与 SQL 配合使用。

在选项 2 和 3 之间,请考虑以下事项:

  • 如果每张图片仅与单个用户相关,则选项 2 就足够了。选项 3 只是增加了不必要的复杂性。

  • 如果每张图片可以与多个用户相关,那么您必须使用选项 3。

因此,据我所知,您正在寻找选项 2。

于 2012-04-16T00:17:30.953 回答