postgresql - 如何创建用于存储产品信息的表 (SQL)
问题描述
我一直在做很多教程,比如SqlBOLT,我一直在尝试学习更多关于 SQL 的知识。我已经问过我的一些朋友,他们在哪里建议我检查“JOIN”以了解我的情况,即使我认为它不适合我的目的。
我的想法是存储产品信息,即标题、图像和 url,我得出的结论是:
CREATE TABLE products (
id INTEGER PRIMARY KEY,
title TEXT,
image TEXT,
url TEXT UNIQUE,
added_date DATE
);
URL 是唯一的原因是因为我们在数据库中不能有相同的 URL,因为它会被重复,这是我们不想要的,但是我仍然不明白为什么以及如何在我的情况下使用 JOIN。
所以我的问题是,我存储产品信息的最佳方式是什么?哪种方式将是最有利的以及最好的性能明智的?如果您打算使用 JOIN,我很乐意获得更多信息,为什么在这种情况下。(可能会出现超时插入超过 4000 行的情况。)
我希望所有正在阅读这篇文章的人都会有一个美好的一天!:)
解决方案
使用商店的解决方案。
CREATE TABLE stores (
id SERIAL PRIMARY KEY,
store_name TEXT
-- add more fields if needed
);
CREATE TABLE products (
id SERIAL,
store_id INTEGER NOT NULL,
title TEXT,
image TEXT,
url TEXT UNIQUE,
added_date timestamp without time zone NOT NULL DEFAULT NOW(),
PRIMARY KEY(id, store_id)
);
ALTER TABLE products
ADD CONSTRAINT "FK_products_stores" FOREIGN KEY ("store_id")
REFERENCES stores (id) MATCH SIMPLE
ON UPDATE NO ACTION
ON DELETE RESTRICT;
推荐阅读
- java - 带有@Query 的 Spring Data Jpa Projection 返回未找到转换器
- google-app-engine - 谷歌云上的 https 间歇性工作
- c# - 无法使用 AngulaJS 和 MVC C# 在服务器上重定向
- javascript - 为什么使用 mock json 的浅渲染组件似乎会导致声明异常?
- matlab - 如何避免此 Matlab 代码中的 for 循环?
- c# - httpRuntime targetFramework 和依赖于更高版本的 .net 框架的 dll
- javascript - 在 Google 地球引擎中使用遮罩
- matlab - 计算立方体内空心倾斜圆柱体的体积,没有网格
- r - 将列添加到表中,其值取决于日期
- javascript - jQuery:动画同时发生而不是与.each()迭代背靠背