【发布时间】:2010-10-29 07:26:11
【问题描述】:
我只做过没有关系的数据库,但现在我需要做一些更严肃更正确的事情。
- 昆德 = 客户
- Vare = 产品
- Ordre = 订单(阅读:我要下订单)
- VareGruppe = ehm..type? (阅读:汽车、椅子、壁橱等)
- 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)
【问题讨论】:
-
您是否考虑过研究第三方数据库工具?我不确定您使用的是什么语言,但 .NET 使用 LINQ,Java 使用 Hibernate / OpenJPA / 许多其他语言。许多程序员正在放弃编写 SQL 来支持操作对象。
-
是的,我真的很喜欢 LINQ-TO-SQL。可悲的是,我在一个团队中工作,他们只对 SQL 感到满意——我似乎无法让他们学习数据库方面的新工具
标签: sql foreign-keys primary-key entity-relationship