如何在PHP中相对简单的CRUD模型中构建表结构?

时间:2012-04-15 18:35:03

标签: sql database-design model crud

我使用简单的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)

模型Userusers表:

  

id |登录|电子邮件

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

模型Photophotos表:

  

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。对不起凌乱的解释,我有一段时间没有用英语问过问题,所以欢迎你纠正我的坏英语;)

更新:我添加了第三个版本。这是最好的吗?

1 个答案:

答案 0 :(得分:1)

好吧,正如您已经知道的那样,不要使用第一个选项,它不适合SQL。

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

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

  • 如果每张图片都与多个用户相关,则必须使用选项3.

所以,据我所知,你正在寻找选项2。