首页 > 解决方案 > 如何创建用于存储产品信息的表 (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 行的情况。)

我希望所有正在阅读这篇文章的人都会有一个美好的一天!:)

标签: postgresql

解决方案


使用商店的解决方案。

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;

推荐阅读