Postgresql

在給定 UML 圖中未指定的表之間創建關係

  • May 2, 2018

晚上好!

我正在根據以下 UML 類圖(不幸的是法語)設計我的第一個實際數據庫:

數據庫的UML描述

我正在創建我以這種方式創建的關係草圖:

關係模式

然而,當試圖向數據庫詢問哪些客戶從未訂購過第一號產品時,它會產生一些問題?

事實上,我不知道如何在 SQL 中做到這一點,因為ClientCommandeProduit之間似乎沒有關係。它給出了以下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)
);

在關係代數和微積分中,它給出:

關係代數和微積分

我無法在關係微積分中解釋它的事實讓我認為我犯了一個錯誤。

使用新表進行編輯

我閱讀了您提供的所有連結,因此在我的表格上添加了一些評論和更改,您能告訴我我的假設是否正確嗎?

新的關係模式

但是最後一個具有相同的主鍵。這是個問題嗎?

UML圖在類的屬性列表中不包含關係,因此在創建表示這些類的數據庫表時,數據庫設計者必須辨識和指定它們,就像軟體開發人員必須創建指針和列表以支持相關對像一樣。

在您的圖表中,Commande與屬性相關Client但未明確指定。IDClient創建Commande表時,您必須包含此屬性以及Client.

您可以在Database Design - UML/SQL中找到有關此的更多資訊:

Order 類的 UML 表示只包含它自己的描述性屬性。UML 關聯告訴哪個客戶下了訂單。在數據庫中,我們將需要一種不同的方式來辨識客戶;這將是關係方案的一部分(如下)。

引用自:https://dba.stackexchange.com/questions/135504