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

Database design, stores over 10 images paths in a single field

您好,

我的原创设计:

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

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

不过我同事觉得创建一个table就够了

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

images_paths,因此存储了多张图片的路径。例如,01.jpg、02.jpg、03.jpg ... ...

哪种方式更好?

单身 table 很可能是最糟糕的选择。这样做的原因是它代表未规范化的数据。在单个 table 设计中,您将多个数据点存储在单个列中。这将使在查询中单独梳理图像路径变得困难。

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

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

product table 基本保持原样。 image table 已经过重构,每一行只记录一个图像及其路径。该架构的新功能是 junction table product_image,它跟踪哪些图像与哪些产品相关联。

这种方法最大限度地减少了数据的重复,并且通过适当的索引设置,连接应该表现得相当好。