设计问题 - 将图像存储为对象

时间:2009-01-07 01:14:54

标签: oop object

好的,所以我的网站以许多动态用户输入的图像为中心,用于不同的用户定义对象。所以我有很多物体,这些物体都有图像。

将图像视为对象是一种好习惯,因为“图像名称”和“图像字节”列重复多次?或者只是在每个对象的表中包含这两列是更明智的。

我想在输入时我正在回答我自己的问题...我正在创建一个额外的连接和一个额外的列(每个表上会有三个Name,Id和ImageId“

然而,有几个表每个对象有多个图像...所以我想它会更好????意见?

3 个答案:

答案 0 :(得分:4)

我通常有一个文件表,可以更一般地存储文件。然后在其他表中,每个图像(文件)都可以有一列,它只是对文件表的引用。

你的文件表会包含所有正常的东西,如ID,文件名,大小,类型等。然后是的,你只需加入它就可以获得你正在运行的任何查询所需的内容。

如果有任何疑问 - 我强烈建议您不要将文件直接存储在数据库中。我不认为这是你的追求,但如果有其他人得到这个想法 - 只是不要这样做!

答案 1 :(得分:0)

要问的问题是“我有多个具有相同图像的对象吗?”如果是这样,那么您可能想要考虑冗余。此外,您使用的数据库是否处理“斑点”?或者,最好是保留图像的文件路径并单独存储图像>

答案 2 :(得分:0)

直观地说,我会发现将图像和对象作为单独的概念处理更容易。它感觉更灵活。

如果你需要将除图像之外的东西附加到特定对象,它就像将对象表条目与“其他东西”表条目相关联一样简单,尽管你可能必须交换外键指向的方式。它还使您能够在其他用户对象中使用这些图像,或允许用户借用其他用户的图像。

这种方法的缺点是,如果需要将一个或多个表连接在一起,您将需要支付一些性能损失。但是,如果你的数据库查询分析器相当聪明,可能不是最大的交易。