好的,所以我的网站以大量动态用户输入图像为中心,用于不同的用户定义对象。所以我有很多对象,这些对象有图像。
由于“图像名称”和“图像字节”列重复多次,因此将图像视为对象是否是一种好习惯?或者将这两列包含在每个对象的表中是否更明智。
我想我是在打字时回答自己的问题......我正在创建一个额外的连接和一个额外的列(每个表上会有三个名称、ID 和 ImageId)
但是,有几个表,每个对象都有多个图像......所以我想它会更好????意见?
我通常有一个文件表,可以更通用地存储文件。然后在您的其他表中,您可以为每个图像(文件)设置一个列,这只是对文件表的引用。
您的文件表将包含所有正常的东西,如 ID、文件名、大小、类型等。然后是的,您只需加入它即可获得您正在运行的任何查询所需的内容。
如果有任何疑问 - 我强烈建议您不要将文件直接存储在数据库中。我不认为那是你的追求,但如果其他人有这个想法 - 只是不要这样做!
要问的问题是“我是否有多个具有相同图像的对象”。如果是这样,那么您可能需要考虑冗余。另外,您使用的数据库是否能很好地处理“blob”?还是保留图像的文件路径并单独存储图像会更好>
直觉上,我会发现将图像和对象作为单独的概念处理更容易。只是感觉更灵活。
如果您需要将除图像之外的其他内容附加到特定对象,则只需将对象表条目与“其他事物”表条目相关联即可,尽管您可能必须交换外键指向的方式。它还使您能够在其他用户对象中使用这些图像,或者允许用户借用其他用户的图像。
这种方法的缺点是你会因为需要将一个或多个表连接在一起而付出一些性能损失。但是,如果您的数据库查询分析器相当聪明,那么这可能不是最大的交易。