sql - 如何插入具有关系的表?

标签 sql foreign-keys primary-key entity-relationship

我只做过没有关系的数据库,但现在我需要做一些更严肃和正确的事情。

这是我的数据库设计: alt text

  1. 昆德=客户
  2. Vare = 产品
  3. Ordre = 订单(阅读:我要下订单)
  4. VareGruppe = 嗯..类型? (阅读:汽车、椅子、壁橱等)
  5. 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/

相关文章:

mysql - 如果最后一条记录包含相同的值则更新,否则插入

mysql 5.6 外键约束错误; 5.5 没有出现

android - greendao 中主键短时出现 ClassCastException

primary-key - 实体关系——弱实体能否作为 'one to many' 参与 'one' 关系

php - 获取多条记录更新查询根据最后一条记录更新表

mysql - 尝试连接三个表以获得特定结果

mysql - 在 MySQL 表中删除外键时如何修复错误?

mysql - 如何在没有与外键和主键相同字段的两个表之间创建关系

mysql - MySQL 中的主键 : INT(n) or UUID as varchar(36)

sql - 如何将一个数字与另一个表中的数字范围连接起来