在两个表中使相同的列始终具有相同的数据?

时间:2013-06-18 08:19:38

标签: php mysql database username

我的PHP / MySQL数据库中有两个表。在存储用户详细信息用户名等的表上,以及存储用户上传的图像以及上载该图像的用户名的表。但是,如果用户更改了用户名,则会在用户详细信息表中更改,但不会在图像上载表中更改。所以我可以在用户详细信息表中使用一个用户名,例如tom12,但在图像上传表中,我将拥有tom12以及他上传图像的所有先前用户名,例如Tom34,TMan等。

如何制作它,以便当用户详细信息表中的用户名更改时,它将在图像上传表中更改?

2 个答案:

答案 0 :(得分:3)

处理此问题的最佳方法是让用户通过密钥(如数字)进行标识,并将该数字存储在图像表中。这样,当用户更改其名称时,密钥可以保持不变并且不会中断链接。

示例用户表 id - int name - 字符串 电子邮件 - 字符串

示例图像表 id - int user - int image_url - string

USERS
===================
ID  NAME   EMAIL
1   joe    joe@joe.com
2   ben    ben@somesite.ru
3   jerry  jk@yahoo.xj

IMAGES
===================
ID   USER  IMAGE_URL
1    1     http://somesite.com/images/mypic.jpg
2    1     http://somesite.com/images/myotherpic.jpg
3    1     http://somesite.com/images/funny.gif
4    3     http://yahoo.xj/users/jk/personal/holiday.jpg

答案 1 :(得分:0)

首先:无需在图像表上获取用户名的引用。您需要在图像表中将ID字段的引用作为user_id。

如果您不想更改您的approch,那么您可以在更新时对用户名进行大小写。