我只做过没有关系的数据库,但现在我需要做一些更严肃和正确的事情。
- 昆德=客户
- Vare = 产品
- Ordre = 订单(阅读:我要下订单)
- VareGruppe = 嗯..类型? (阅读:汽车、椅子、壁橱等)
- VareOrdre = Product_Orders
这是我的 SQL (SQLite) 架构:
CREATE TABLE Post (
Postnr INTEGER NOT NULL PRIMARY KEY,
Bynavn VARCHAR(50) NOT NULL
);
CREATE TABLE Kunde (
CPR INTEGER NOT NULL PRIMARY KEY,
Navn VARCHAR(50) NOT NULL,
Tlf INTEGER NOT NULL,
Adresse VARCHAR(50) NOT NULL,
Postnr INTEGER NOT NULL
CONSTRAINT fk_postnr_post REFERENCES Post(Postnr)
);
CREATE TABLE Varegruppe (
VGnr INTEGER PRIMARY KEY,
Typenavn VARCHAR(50) NOT NULL
);
CREATE TABLE Vare (
Vnr INTEGER PRIMARY KEY,
Navn VARCHAR(50) NOT NULL,
Pris DEC NOT NULL,
Beholdning INTEGER NOT NULL,
VGnr INTEGER NOT NULL
CONSTRAINT fk_varegruppevgnr_vgnr REFERENCES Varegruppe(VGnr)
);
CREATE TABLE Ordre (
Onr INTEGER PRIMARY KEY,
CPR INTEGER NOT NULL
CONSTRAINT fk_kundecpr_cpr REFERENCES Kunde(CPR),
Dato DATETIME NOT NULL,
SamletPris DEC NOT NULL
);
CREATE TABLE VareOrdre (
VareOrdreID INTEGER PRIMARY KEY,
Onr INTEGER NOT NULL
CONSTRAINT fk_ordrenr_onr REFERENCES Ordre(Onr),
Vnr INTEGER NOT NULL
CONSTRAINT fk_varevnr_vnr REFERENCES Vare(Vnr),
Antal INTEGER NOT NULL
);
它应该可以正常工作。
但我对 Product_Orders
感到困惑。
如何创建订单?例如,2 个产品使用 SQL INSERT INTO
?
我什么也得不到工作。
到目前为止:
仅当我手动将产品和数据插入到 Product_Orders
中,然后将该数据添加到 Orders =
时才完成。或者反过来(使用 1 个 SQL 创建订单,然后手动将产品插入到 Product_orders - 1
每个条目的 SQL)
最佳答案
您应该首先创建一个订单,然后将产品插入到表 Product_Orders 中。这是必要的,因为您需要一个带有 ID 的实际订单以将其与表 Product_Orders 相关联。
在能够在当前表中创建记录之前,您始终应该在外键表中创建记录。这样您应该创建一个“帖子”、客户、类型、产品、订单和产品订单。
关于sql - 如何插入具有关系的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/916228/