我使用简单的php MVC Framework,使用简单的CRUD模型。
可以在模型中添加任何方法,因此我可以使用join
sql-logic添加复杂方法,但我想尝试只使用CRUD方法,而不需要连接。
因此,例如,我想添加将照片添加到用户个人资料中的功能。
我建议2(+1)= 3种变化:
1 即可。将照片'ID保存在用户表中:
User
模型和users
表格:
id |登录|电子邮件|照片|
- 照片是一系列照片ID。
Photo
模型和photos
表:
id | SRC
- 在照片表中我们只保留图片的id和src,并且不知道它是谁的图片
2。在照片表中保留用户ID(作为用户的ID)
模型User
和users
表:
id |登录|电子邮件
- 此表中没有关于照片的信息
模型Photo
和photos
表:
id | src | USER_ID
- 保留拥有此照片的用户的信息 因此,如果用户有3张照片,则此表中将有3条记录
3. 3表格方式:
表users
id |登录|电子邮件(*没有关于此表中照片的信息)
表photos
id | src(*没有关于谁的照片的信息)
表user-photo
id | user_id | photo_id(*照片关系表)
我认为,第二种方式更简单,因为我们不应该解析SQL数组,这只是简单的CRUD操作。
但是第一种方式更快吗?首先,当我们想要获取用户的信息时,我们知道照片的ID,并通过photos
- 主键从id
表格获取照片。
但是在第二种方式中,我们从photos
表中获取照片user_id
- 而不是主键,因此它应该更慢。
你推荐什么?对于这样的问题,可能还有另一种解决办法吗?
P.S。对不起凌乱的解释,我有一段时间没有用英语问过问题,所以欢迎你纠正我的坏英语;)
更新:我添加了第三个版本。这是最好的吗?
答案 0 :(得分:1)
好吧,正如您已经知道的那样,不要使用第一个选项,它不适合SQL。
在选项2和3之间,请考虑以下事项:
如果每张图片仅与单个用户相关,则选项2足够好。选项3只会增加不必要的复杂性
如果每张图片都与多个用户相关,则必须使用选项3.
所以,据我所知,你正在寻找选项2。