Postgresql
在給定 UML 圖中未指定的表之間創建關係
晚上好!
我正在根據以下 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) );
在關係代數和微積分中,它給出:
我無法在關係微積分中解釋它的事實讓我認為我犯了一個錯誤。
使用新表進行編輯
我閱讀了您提供的所有連結,因此在我的表格上添加了一些評論和更改,您能告訴我我的假設是否正確嗎?
但是最後一個具有相同的主鍵。這是個問題嗎?
UML類圖在類的屬性列表中不包含關係,因此在創建表示這些類的數據庫表時,數據庫設計者必須辨識和指定它們,就像軟體開發人員必須創建指針和列表以支持相關對像一樣。
在您的圖表中,
Commande
與屬性相關Client
但未明確指定。IDClient
創建Commande
表時,您必須包含此屬性以及Client
.您可以在Database Design - UML/SQL中找到有關此的更多資訊:
Order 類的 UML 表示只包含它自己的描述性屬性。UML 關聯告訴哪個客戶下了訂單。在數據庫中,我們將需要一種不同的方式來辨識客戶;這將是關係方案的一部分(如下)。