数据库设计,在单个字段中存储10多个图像路径

时间:2017-12-29 11:20:19

标签: sql database database-normalization

您好,

我的原创设计:

create table product (
product_id
... ...
);

create table image (
image_id,
path,
product_id
... ...
);

但是,我的同事认为创建一个表就足够了

create table product (
product_id,
images_paths,
... ...
);

images_paths因此存储多个图像'路径。例如,01.jpg,02.jpg,03.jpg ......

哪种方式更好?

1 个答案:

答案 0 :(得分:1)

单个表最有可能是更差的选项。原因是它代表非标准化数据。在单表设计中,您将在单个列中存储多个数据点。这将使得难以在查询中单独分开图像路径。

这两个表的方法是正确的,但这里的正确解决方案实际上可能是表方法:

product (product_id, ...)
image (image_id, path, ...)
product_image (product_id, image_id)

product表基本保持不变。 image表已经过重构,每行只记录一个图像及其路径。模式的新功能是联结product_image,它跟踪哪些图像与哪些产品相关联。

这种方法可以最大限度地减少数据重复,并且通过适当的索引设置,连接应该可以很好地执行。