2013-03-14 68 views
0

我目前维护一个单独的数据库表,它具有存储在文件系统中的图像的一些信息。此设置适用于我目前记录的数十万张照片。两个图像表或一个用于存储默认图像?

对于用户默认图像,我维护一个包含照片的单独文件夹,但这已成为维护的噩梦。我应该创建第二张表,存储对表1默认照片的引用,还是在表1中添加一个新字段是一个更好的布尔值,我可以将其设置为指示默认照片?

我的表看起来是这样的:

image_table 
id user_id file_name 
1 6  xvy.jpeg 
2 6  abc.jpeg 
3 6  def.jpeg 

建议解决办法:

image_table 
id user_id file_name default 
1 6  xvy.jpeg 0 
2 6  abc.jpeg 1 
3 6  def.jpeg 0 

在此提出的解决方案就好像我需要做两个SQL调用重置默认,然后第二个电话设置一个新的默认照片,如果用户更改它...

回答

1

如果第二个表具有相同的co,则最好添加新字段而不是添加新表如果你采用这种方法,那么第一列就是第一列。

推理:如果我需要从两个表中获取值,我需要做一个麻烦的UNION。如果你有三张或更多的表都具有相同类型的数据,并且我一次都想要所有这些表?它只是越来越笨重和笨拙,更难以编码。

+0

这很有道理,虽然它似乎像mysql查询可能会得到凌乱的尝试重置值,并将其分配给另一个字段的默认照片... – Paul 2013-03-14 23:58:24

+0

您可以对您所在的同一张表执行外键引用(称为自加入) - 因此您可以拥有您想要的查询结构,而无需创建新表。 – Patashu 2013-03-15 00:00:21

+0

我添加了一个建议的解决方案,据我所知,仍然需要两次SQL调用才能更改默认照片... – Paul 2013-03-15 00:04:52

0

那么我可以看到你正在使用一些SQL数据库,但不要误解我为什么不尝试一个NoSQL数据库,如MongoDB。我知道创造一个领域作为一个标志或创建一个新的表格似乎不是一个好设计。