Rev*_*ica 5 postgresql database-design relational-theory relational-algebra relational-calculus
晚上好!
我正在从以下 UML 类图(不幸的是法语)设计我的第一个实际数据库:
我正在创建它的关系草图,我是这样创建的:
然而,当试图向数据库询问哪些客户从未订购过第一产品时,它会产生一些问题?
确实,我不知道如何在 SQL 中做到这一点,因为Client,Commande和Produit之间似乎没有关系。它给出了以下sql代码:
CREATE TABLE Client (
IDClient INT NOT NULL,
AdresseClient VARCHAR(255)NOT NULL ,
NomContact VARCHAR(255)NOT NULL,
NumeroSIRET VARCHAR(14) NOT NULL,
CONSTRAINT cclient PRIMARY KEY (IDClient)
);
CREATE TABLE Produit (
IDProduit INT NOT NULL ,
PrixVente INT NOT NULL ,
QuantiteEnStock INT NOT NULL ,
CONSTRAiNT cproduit PRIMARY KEY (IDProduit)
) ;
CREATE TABLE Commande (
IDNumeroCde INT NOT NULL ,
Date DATE NOT NULL ,
CONSTRAINT ccommande PRIMARY KEY (IDNumeroCde)
);
Run Code Online (Sandbox Code Playgroud)
在关系代数和微积分中,它给出:
我无法在关系演算中解释它这一事实让我认为我犯了一个错误。
我阅读了您提供的所有链接,因此在我的表格上添加了一些评论和更改,您能告诉我我的假设是否正确吗?
但是最后一个具有相同的主键。这是个问题吗?
UML类图不包括类属性列表中的关系,因此在创建表示这些类的数据库表时,数据库设计者必须识别并指定它们,就像软件开发人员必须创建指针和列表来支持相关对象一样。
在您的图中,Commande
涉及Client
但未明确指定IDClient
属性。创建Commande
表时,必须包含此属性以及 的外键Client
。
您可以在数据库设计 - UML/SQL中找到有关此内容的更多信息:
Order 类的 UML 表示仅包含其自己的描述性属性。UML 关联告诉哪个客户下了订单。在数据库中,我们将需要一种不同的方式来识别客户;这将是关系方案的一部分(如下)。
归档时间: |
|
查看次数: |
1997 次 |
最近记录: |