首页 > 解决方案 > 如何从sql中的另一个表中引用未知数量的行?

问题描述

我正在为我父母的比萨店开发一个系统。我的编程经验很少,我想做一个像样的 SQL 数据库,这样当我在编码方面变得更好时,它会更容易维护和改进。

到目前为止,我已经想出了以下内容(使用 db 浏览器帮助我进行可视化):

CREATE TABLE IF NOT EXISTS "client" (
        "id"    INTEGER,
        "name"  TEXT,
        "phone" TEXT,
        "neighborhood"  TEXT,
        "address"       TEXT,
        PRIMARY KEY("id")
);
CREATE TABLE IF NOT EXISTS "product" (
        "id"    INTEGER,
        "type"  TEXT,
        "flavour"       TEXT,
        "ingredients"   TEXT,
        "price" REAL,
        PRIMARY KEY("id")
);

我将创建第三个表,并且想知道当客户订购多个产品时"order"如何引用多个表?product.id

标签: sqlsqlitedatabase-designddlcreate-table

解决方案


教科书的解决方案是创建一个映射表来关联产品和订单。

CREATE TABLE IF NOT EXISTS "orders" (
        "id"         INTEGER,
        "order_date" DATETIME,
        -- Any other columns you may need
        PRIMARY KEY("id")
);

CREATE TABLE IF NOT EXISTS "order_products" (
        "product_id" INTEGER,
        "order_id"   INTEGER,
        FOREIGN KEY("product_id") REFERENCES product("id"),
        FOREIGN KEY("order_id")   REFERENCES orders("id"),
        PRIMARY KEY("product_id", "order_id")
);

推荐阅读