web-dev-qa-db-fra.com

Créer des relations entre les tables qui ne sont pas spécifiées dans le diagramme UML donné

Bonsoir!

Je travaille sur la conception de ma toute première base de données réelle du diagramme de classe UML suivant (malheureusement en français):

UML description of the database

Je suis au point de créer le croquis relationnel de celui-ci que j'ai créé de cette façon:

RelationalScheme

Pourtant, cela crée des problèmes lorsque vous essayez de demander à la base de données quels sont les clients qui n'ont jamais commandé le produit numéro un ?

En effet, je ne sais pas comment le faire dans SQL en ce qui semble qu'il n'y ait aucune relation entre le client , Commande et PRODUIT . Il a givé le code SQL suivant:

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)
);

En algèbre relationnelle et en calcul, il donne:

Relational algebra and calculus

Le fait que je ne puisse pas l'expliquer dans des calculs relationnels, laissez-moi penser que j'ai fait une erreur.

Modifier avec les nouvelles tables

J'ai lu tous les liens que vous avez fournis et il a donc ajouté quelques commentaires et changements sur mes tables, pouvez-vous me dire si je suis juste sur mes hypothèses?

The new relational scheme

mais les derniers ont la même clé primaire. est-ce un problème?

5

UML Classe Les diagrammes n'incluent pas les relations dans une liste d'attributs de classe ', donc lors de la création de tables de base de données représentant ces classes, le concepteur de base de données doit l'identifier et les spécifier, Tout comme le développeur de logiciels doit créer les pointeurs et les listes afin de prendre en charge les objets associés.

Dans votre diagramme, Commande concerne Client mais ne spécifie pas explicitement un attribut IDClient. Lors de la création de la table Commande, vous devez inclure cet attribut avec une clé étrangère à Client.

Vous pouvez trouver des informations complémentaires à ce sujet dans conception de la base de données - UML/SQL :

La représentation UML de la classe d'ordre ne contient que ses propres attributs descriptifs. L'association UML indique à quel client a passé une commande. Dans la base de données, nous aurons besoin d'une manière différente d'identifier le client. Cela fera partie du régime de relation (ci-dessous).

En plus de la réponse ziggy, si vous souhaitez effectuer ce diagramme, vous devez le modifier, par exemple, vous devez créer une troisième table appelée cleint_order Et cette table a une clé primaire de Client table et idproduct de product Tableau puisqu'un client peut avoir un ou plusieurs produits et un produit peut être commandé auprès de nombreux clients.

lien utile : https://stackoverflow.com/questions/7296846/how-a-implément-one-a -one-one-a-many-and-many-a-many-relationships-que-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de-de

1
Ahmad Abuhasna