【发布时间】:2021-08-31 08:03:36
【问题描述】:
我正在尝试退回每个产品可以包含三张图片的产品。 像这样:
{
product_id: 1,
product_name:"test",
category_id_fk: 1,
product_price: 12,
product_desc:"lorem-ipsum",
product_images:[path1, path2, path3]
}
这是我到目前为止所得到的,
create table product(
product_id serial not null primary key,
category_id_fk int not null references category(category_id) ,
product_image_fk int not null references product_images(product_images_id),
product_name varchar(50) not null,
product_price int not null,
product_desc varchar(200) not null);
create table product_images(
product_images_id serial not null primary key,
product_image_one varchar(150) not null,
product_image_two varchar(150) not null,
product_image_three varchar(150) not null);
这是我用于产品详细信息页面的查询
SELECT * FROM product WHERE category_id_fk = ? AND product_id = ?;
我是 SQL 新手,特别是在这方面真的很艰难,我会 如果有人能向我解释我做错了什么或者你有什么建议给我,我将不胜感激。
【问题讨论】:
-
向 INSERT INTO 提供必须生成所需 JSON 的示例数据。
-
通常创建 JSON 字符串不是数据库任务。即使可能有一些黑客攻击,这通常也应该由您的后端代码完成。您应该将图像表的设计更改为每行只有一张图像。
-
@ClausBönnhoff 通常创建 JSON 字符串不是数据库任务。 ??通常数据处理是 DBMS 任务。如果处理结果必须是 JSON 格式,那么 DBMS 必须是 JSON。 MySQL 拥有完成这项任务所需的所有工具。
-
附言。
column_fk int not null references table (column_id)不创建外键!!! -references子句被解析但被忽略。要创建外键关系,请使用单独的 FK 定义。 -
@Akina 我不喜欢这种将程序 Logik 放入 DBMS 的新浪潮。这会降低您更改数据库类型的灵活性,并增加对 dB 服务器的硬件性能的需求。对我来说,数据库应该是一个数据提供者,不多也不少。但我知道我很孤单:)