Logo du forum
 

Forum TTH-News

| Inscription | | Recherche | | FAQ | | Accueil | | Liste des membres |
| Calendrier |
 
Vous n'êtes pas identifié! [Connexion] ou [Inscription] Forum » Programmation » [SQL / PL-SQL / SGBD] » MCD : Contraintes
Login Mot de passe

1 visiteurs sur ce topic (0 membre(s), 1 invité(s) )


Auteur
Sujet : MCD : Contraintes
Kwazulu
Sage
Membre # 26345

 Avatar du membre
Lieu : Auvergne

Messages :
1887 (0.42 par jour)




Message du 08-06-2008 @ 14:37   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   


Salut,

j'ai 3 tables reliés entre elles de manière "circulaire". On m'a dit qu'il était possible de faire une contrainte entre ces tables, du genre : un client ne peut pas effectuer un virement sur un compte qui n'est pas le sien.

Je ne vois pas trop à quoi ça correspond.

Si quelqu'un pouvait m'aiguiller...

Merci :)


----------
He that won't be consll'd, can't be help'd
- Haut de page -
Kwazulu
Sage
Membre # 26345

 Avatar du membre
Lieu : Auvergne

Messages :
1887 (0.42 par jour)




Message du 09-06-2008 @ 0:06   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

C'est peut être mieux comme ça non ?


----------
He that won't be consll'd, can't be help'd
- Haut de page -
Finch
Sage
Membre # 5042

 Avatar du membre
Lieu : belgique, Liège

Messages :
1772 (0.3 par jour)




Message du 09-06-2008 @ 8:29   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

A première vue, en l'ayant vite refais au réveil (aïe) juste avant d'aller bosser (ouuille)

j'aurais plutôt fait 2 associations entre les deux entités:

Code :


CLIENT -0-N---- virement (somme, date) ---1-1-- COMPTE
......-0-N----- possede ---------------------1-1--



En maj: entité
En min: associations
Entre parenthèse: attributs des associations
Les petits points sont juste la pour l'indentation :D

Edit: Je viens de remarquer qu'on aurait aussi pu faire une triple-association.
Tu a 3 entités: CLIENT, COMPTE, VIREMENT et tu a une association relié au 3.
Pour les contraintes que tu cites, je pense pas que ce soit directement modélisable dans le MCD.



[message édité le 09-06-2008 @ 8:37 Par Finch]
----------
Qui prête à rire n'est jamais sûr d'être remboursé... [R. Devos]
- Haut de page -
Kwazulu
Sage
Membre # 26345

 Avatar du membre
Lieu : Auvergne

Messages :
1887 (0.42 par jour)




Message du 09-06-2008 @ 11:42   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

C'est pour faire sur SQL Server après.
----------
He that won't be consll'd, can't be help'd
- Haut de page -
Kwazulu
Sage
Membre # 26345

 Avatar du membre
Lieu : Auvergne

Messages :
1887 (0.42 par jour)




Message du 09-06-2008 @ 11:44   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

J'envisage un truc du genre, ça vous semble cohérent ?




----------
He that won't be consll'd, can't be help'd
- Haut de page -
Finch
Sage
Membre # 5042

 Avatar du membre
Lieu : belgique, Liège

Messages :
1772 (0.3 par jour)




Message du 09-06-2008 @ 12:05   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

A première vue: oui.
Le problème c'est que si tu souhaites voir les virements d'un client tu va devoir faire deux jointures (client et compte, compte et virement) ce qui peut être assez lourd.

Sinon je suppose que tu as simplifié la partie des commandes.
Mais ce serait peut être mieux de faire une entité "commande" avec id, date, ... et une entité "ligne_commande" avec idcommande, quantité, idproduit...
Une commande possède 1 ou N "ligne_commande". Une ligne de commande possède 1 et 1 "produit".

Remarque: Dans ton cas, si un client veut passer plusieurs fois des commandes de même produits avec les même quantité, ça va coincer niveau des doublons (sauf si t'ajoute un id dans commande ou une date).
De même si tu veux stocker la date d'une commande ou d'autres infos sur une commande, tu va devoir les mettre dans chaque "tuple" de l'association "commande". Bref de la redondance ce qui n'est pas génial du tout. Il est préférable de faire une entité "commande" et une entité "ligne_commande".

[message édité le 09-06-2008 @ 12:58 Par Finch]
----------
Qui prête à rire n'est jamais sûr d'être remboursé... [R. Devos]
- Haut de page -
Kwazulu
Sage
Membre # 26345

 Avatar du membre
Lieu : Auvergne

Messages :
1887 (0.42 par jour)




Message du 09-06-2008 @ 14:23   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Finch a écrit

A première vue: oui.Remarque: Dans ton cas, si un client veut passer plusieurs fois des commandes de même produits avec les même quantité, ça va coincer niveau des doublons (sauf si t'ajoute un id dans commande ou une date).



Remarque très juste, je m'en suis rendu compte en faisant des tests sur la table.

Sinon je vais essayer de faire ce que tu m'as dit :)
----------
He that won't be consll'd, can't be help'd
- Haut de page -
Kwazulu
Sage
Membre # 26345

 Avatar du membre
Lieu : Auvergne

Messages :
1887 (0.42 par jour)




Message du 09-06-2008 @ 20:24   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Ca irait ainsi ?


----------
He that won't be consll'd, can't be help'd
- Haut de page -
Finch
Sage
Membre # 5042

 Avatar du membre
Lieu : belgique, Liège

Messages :
1772 (0.3 par jour)




Message du 10-06-2008 @ 22:15   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Un produit doit obligatoirement être commandé?

Sinon a première vue, ça a l'air bon.
----------
Qui prête à rire n'est jamais sûr d'être remboursé... [R. Devos]
- Haut de page -
Kwazulu
Sage
Membre # 26345

 Avatar du membre
Lieu : Auvergne

Messages :
1887 (0.42 par jour)




Message du 10-06-2008 @ 22:43   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Yep, 0 ou n.

Sinon merci bien de ton aide :) ;)
----------
He that won't be consll'd, can't be help'd
- Haut de page -
Finch
Sage
Membre # 5042

 Avatar du membre
Lieu : belgique, Liège

Messages :
1772 (0.3 par jour)




Message du 11-06-2008 @ 10:12   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

de rien ;)
Si t'as besoin d'aide pour la conversion vers le modèle relationnel et la création des tables, n'hésites pas :)
----------
Qui prête à rire n'est jamais sûr d'être remboursé... [R. Devos]
- Haut de page -


Aller dans le forum :  

Plan du forum | Contacter l'administrateur

Powered by SoulBB 3.0.1
© Soulmanto, 2003-2010

Valid XHTML 1.0 Transitional

Page générée en 0.042 secondes