数据库设计,在单个字段中存储超过 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
,它跟踪哪些图像与哪些产品相关联。
这种方法最大限度地减少了数据的重复,并且通过适当的索引设置,连接应该表现得相当好。
您好,
我的原创设计:
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
,它跟踪哪些图像与哪些产品相关联。
这种方法最大限度地减少了数据的重复,并且通过适当的索引设置,连接应该表现得相当好。