Précédent   Forum des professionnels en informatique > Général Développement > Conception > Modélisation
Modélisation Forum d'entraide pour les diagrammes UML et les MCD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/11/2011, 14h17   #1
Membre du Club
 
Inscription : novembre 2006
Messages : 233
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 233
Points : 45
Points : 45
Par défaut question sur nommage des champs

Bonjour,

Au sein des entités est-il préférable d'avoir le même nom d'un champ ou faut-il différencier.


Ex
Table1
idTable1
Table1id

Table2
idTable2
Table2id


car quand je vais vouloir insérer un lien vers l'autre table je dois mettre Table2_lienidtable1 ??
altair8080 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2011, 15h06   #2
ego
Rédacteur
 
Homme
Inscription : juillet 2004
Messages : 1 785
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 43
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : juillet 2004
Messages : 1 785
Points : 2 513
Points : 2 513
Envoyer un message via ICQ à ego
Rien ne t'empêche de mettre id dans Table1 et Table2 et ensuite d'avoir une clé étrangère fk_table1 dans Table2
__________________
http://ego.developpez.com
ego est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 14h07   #3
Expert Confirmé Sénior

 
Avatar de fsmrel
 
Spécialiste en bases de données
Inscription : septembre 2006
Messages : 2 884
Détails du profil
Informations professionnelles :
Activité : Spécialiste en bases de données
Secteur : Conseil

Informations forums :
Inscription : septembre 2006
Messages : 2 884
Points : 5 125
Points : 5 125
Bonjour,

Je confirme. Si on examine la contrainte NOMENCLATURE_PARENT_FK ci-dessous : la colonne PieceParenteId de la table NOMENCLATURE fait référence à la colonne PieceId de la table PIECE :

Code SQL :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CREATE TABLE PIECE (
       PieceId            INT                  NOT NULL
     , pieceLibelle       VARCHAR(64)          NOT NULL
   , CONSTRAINT PIECE_PK PRIMARY KEY  (PieceId)
) ;
 
CREATE TABLE NOMENCLATURE (
       PieceId           INT       NOT NULL     
     , PieceParenteId    INT       NOT NULL     
   , CONSTRAINT NOMENCLATURE_PK PRIMARY KEY (PieceId)  
   , CONSTRAINT NOMENCLATURE_IS_PIECE_ENFANT_FK FOREIGN KEY (PieceId)
                REFERENCES PIECE (PieceId) ON DELETE CASCADE
   , CONSTRAINT NOMENCLATURE_PARENT_FK FOREIGN KEY (PieceParenteId)
                REFERENCES PIECE (PieceId) ON DELETE NO ACTION  
) ;

Bref, si on veut faire participer des colonnes à une opération de jointure, il n’y a aucune contrainte de nommage.
__________________
_
Faites simple, mais pas plus simple ! (A. Einstein)
E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
=> La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

__________________

Bases de données relationnelles et normalisation : de la première à la sixième forme normale (Bonne lecture !)
fsmrel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 14h52   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 328
Points : 18 328
Envoyer un message via MSN à CinePhil
D'abord, les champs sont à la campagne ou dans les formulaires, pas des entités d'un MCD ni dans les tables SQL !

Ensuite, il y a deux écoles :
1) Ceux qui considèrent qu'une chose doit avoir un nom unique et que donc une colonne porteuse d'une clé étrangère doit avoir le même nom que la colonne référencée.

2) Ceux qui considèrent que deux objets e la BDD ne peuvent avoir le même nom.

Avant de décider, juste une remarque aux partisans du premier groupe :
Si une table B référence deux fois la table A, on se retrouverait avec deux colonnes ayant le même nom, ce qui est impossible !

Vous l'aurez compris, je fais partie du second groupe !
En fait, je ne me pose même pas la question car j'ai une norme de nommage qui est inspirée de celle de SQLPro (lequel ferait plutôt partie du premier groupe si j'ai bien lu certains de ses écrits) et qui interdit naturellement d'avoir deux objets portant le même nom.

Exemple de MCD :
personne -0,n----diriger----1,1- projet
|---------------0,n----travailler----0,n---|

Tables qui en découlent :
te_personne_prs (prs_id, prs_nom, prs_prenom...)
te_projet_prj (prj_id, prj_id_chef, prj_nom, prj_date_debut...)
tj_prs_travailler_prj_ptp (ptp_id_personne, ptp_id_projet)
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/11/2011, 16h22   #5
Expert Confirmé Sénior

 
Avatar de fsmrel
 
Spécialiste en bases de données
Inscription : septembre 2006
Messages : 2 884
Détails du profil
Informations professionnelles :
Activité : Spécialiste en bases de données
Secteur : Conseil

Informations forums :
Inscription : septembre 2006
Messages : 2 884
Points : 5 125
Points : 5 125
Citation:
Envoyé par CinePhil Voir le message
il y a deux écoles :
1) Ceux qui considèrent qu'une chose doit avoir un nom unique et que donc une colonne porteuse d'une clé étrangère doit avoir le même nom que la colonne référencée.
2) Ceux qui considèrent que deux objets e la BDD ne peuvent avoir le même nom.
Euh... Il y a au moins une 3e école, dont je fais partie et selon laquelle il n’y a pas ... d’école en ce qui concerne le nom des attributs (colonnes, propriétés, ...) Ainsi, dans le Relationland où je vis, chacun est libre de faire comme il l’entend s'il estime que des règles de nommage des attributs méritent d'être érigées. La seule contrainte y est que dans les opérations relationnelles telles que la jointure et l’union, les opérandes aient même nom, d’où l’existence de l’opérateur RENAME inconnu dans le SQLland, le Meriseland, etc.
__________________
_
Faites simple, mais pas plus simple ! (A. Einstein)
E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
=> La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

__________________

Bases de données relationnelles et normalisation : de la première à la sixième forme normale (Bonne lecture !)
fsmrel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 16h57   #6
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 328
Points : 18 328
Envoyer un message via MSN à CinePhil
Si je comprends bien la relationlang, en ajoutant à mon MCD l'association "vendre" suivante :
personne -0,n----diriger----1,1- projet
|---------------0,n----travailler----0,n---|
|---------------0,n----vendre----1,1------|

Il deviendrait obligatoire de faire un RENAME pour produire une relation joignant personne et projet selon les associations diriger et vendre ?

En SQL, ma table des projets deviendrait :
te_projet_prj (prj_id, prj_id_chef, prj_id_vendeur, prj_nom, prj_date_debut...)

J'ai renommé prs_id en prj_id_chef et en prj_id_vendeur

Et pour donner la liste des projets avec le nom du vendeur et le nom du chef de projet, j'aurais cette requête :
Code :
1
2
3
4
5
6
7
8
SELECT j.prj_nom AS nom_projet,
	p1.prs_nom AS nom_chef_de_projet,
	p1.prs_prenom AS prenom_chef_de_projet,
	p2.prs_nom AS nom_vendeur,
	p2.prs_prenom AS prenom_vendeur
FROM te_projet_prj j
INNER JOIN te_personne_prs p1 ON p1.prs_id = j.prj_id_chef
INNER JOIN te_personne_prs p2 ON p2.prs_id = j.prj_id_vendeur
Et j'ai encore fait du rename pour distinguer les différents noms.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 02h53   #7
Expert Confirmé Sénior

 
Avatar de fsmrel
 
Spécialiste en bases de données
Inscription : septembre 2006
Messages : 2 884
Détails du profil
Informations professionnelles :
Activité : Spécialiste en bases de données
Secteur : Conseil

Informations forums :
Inscription : septembre 2006
Messages : 2 884
Points : 5 125
Points : 5 125
Par défaut Comme on cause dans le Relationland

Bonsoir,

En détaillant les opérations, la requête SQL proposée s’écrit ainsi en relationlang (j’ajoute ce terme à mon dictionnaire de slang ) :

Code :
1
2
3
4
5
6
7
8
9
WITH te_personne_prs RENAME (prs_id AS prj_id_chef, 
                             prs_nom AS nom_chef_projet, 
                             prs_prenom AS prenom_chef_projet) AS CHEF, 
     te_personne_prs RENAME (prs_id AS prj_id_vendeur, 
                             prs_nom AS nom_vendeur,
                             prs_prenom AS prenom_vendeur) AS VENDEUR,
     JOIN {te_projet_prj, CHEF, VENDEUR} AS J, 
     J RENAME (prj_nom AS nom_projet) AS R :
     R { nom_projet, nom_chef_projet, prenom_chef_projet, nom_vendeur, prenom_vendeur } ;
« WITH » permet d’aérer les instructions : il s’agit d’une construction syntaxique permettant de donner un nom aux sous-expressions : CHEF, VENDEUR, J, R.

Lignes 1-3 : on nomme la variable te_personne_prs en CHEF (tout en renommant certains attributs) ;

Lignes 4-6 : on nomme la variable te_personne_prs en VENDEUR (tout en renommant certains attributs) ;

Ligne 7 : double jointure (le Modèle Relationnel de Données permet de mettre entre les accolades autant d’expressions que l’on veut, c’est la jointure n-adique) ;

Ligne 8 : on finit de renommer les attributs.

Ligne 9 : opération de projection finale : liste entre accolades des noms d’attributs.


J'ai détaillé, mais on peut s'amuser à remboîter les expressions. Par exemple, à la ligne 9, à la place de R on peut utiliser une expression. Ainsi les lignes 8 et 9 peuvent être remplacées par :

J RENAME (prj_nom AS nom_projet) { nom_projet, nom_chef_projet, prenom_chef_projet, nom_vendeur, prenom_vendeur }

En y intégrant la jointure à la place de J :

JOIN {te_projet_prj, CHEF, VENDEUR} RENAME (prj_nom AS nom_projet) { nom_projet, nom_chef_projet, prenom_chef_projet, nom_vendeur, prenom_vendeur }

Etc., mais ça devient vite illisible, comme une requête SQL en une ligne.
__________________
_
Faites simple, mais pas plus simple ! (A. Einstein)
E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
=> La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

__________________

Bases de données relationnelles et normalisation : de la première à la sixième forme normale (Bonne lecture !)
fsmrel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 17h51   #8
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 178
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 178
Points : 2 807
Points : 2 807
Bonjour Altair8080, Ego, Fsmrel et CinePhil,

Très intéressante discussion, c'est pourquoi je me permets de m'immiscer ...

Citation:
Envoyé par CinePhil légèrement modifié Richard_35
Ensuite, effectivement, dans les faits, il y a deux écoles :
1) Ceux qui considèrent qu'une chose doit avoir un nom unique et que donc une colonne porteuse d'une clé étrangère doit avoir le même nom que la colonne référencée , sauf quand c'est impossible ;

2) Ceux qui considèrent que deux objets de la BDD ne peuvent avoir le même nom.
==> précision "dans les faits" car, les adeptes de la 3ème école se rangent, plus ou moins, dans l'une des deux écoles.

La 1ère école modifiée ne paraît pas si mauvaise. En effet, le cas
Citation:
Envoyé par CinePhil
Si une table B référence deux fois la table A .../...
arrive, bien entendu, mais n'est pas si fréquent. Du moins, pas au point de se priver du confort d'utilisation des mêmes noms.

Si cela arrive, le suffixe du nom de la colonne par "_" puis la fonctionnalité correspondante assure l'unicité. Exemple :
produit(id_produit, nom, ...) ;
nomenclature(id_produit_composé, id_produit_composant, quantité, ...).
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 22h20   #9
Expert Confirmé Sénior

 
Avatar de fsmrel
 
Spécialiste en bases de données
Inscription : septembre 2006
Messages : 2 884
Détails du profil
Informations professionnelles :
Activité : Spécialiste en bases de données
Secteur : Conseil

Informations forums :
Inscription : septembre 2006
Messages : 2 884
Points : 5 125
Points : 5 125
Citation:
Envoyé par Richard_35 Voir le message
les adeptes de la 3ème école se rangent, plus ou moins, dans l'une des deux écoles.
Je répète sur tous les tons et tous les modes que la 3e école n’est pas concernée par la façon de nommer les colonnes : seul l'intéresse le respect du Modèle Relationnel de Données (structure, algèbre, intégrité), le reste est littérature. Le débat est orthogonal à la modélisation des bases de données. Pour plus d’information, je vous renvoie à Databases, Types and The Relational Model: The Third Manifesto : dans sa BNF, le Modèle Relationnel de Données est totalement muet sur le sujet. Si de son côté le chef de projet se revendique d’une école, on fera comme il le veut (c'est lui qui paye), point barre. S’il s’est planté, il ne pourra s'en prendre qu'à lui-même. Que dire d’autre ?
__________________
_
Faites simple, mais pas plus simple ! (A. Einstein)
E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
=> La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

__________________

Bases de données relationnelles et normalisation : de la première à la sixième forme normale (Bonne lecture !)
fsmrel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 11h08   #10
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 178
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 178
Points : 2 807
Points : 2 807
Bonjour Fsmrel,

Citation:
Envoyé par Fsmrel
Si de son côté le chef de projet se revendique d’une école, on fera comme il le veut (c'est lui qui paye), point barre. S’il s’est planté, il ne pourra s'en prendre qu'à lui-même. Que dire d’autre ?
==> c'est vrai.

Je voulais simplement dire que, en final (donc quand, réellement, il faut affecter un nom aux champs), ce nommage est plus ou moins effectué selon une des deux écoles évoquées. Mais c'est un détail, c'est vrai. Il n'empêche que, si l'on admet cela, bien qu'il n'existe pas de norme, un usage se met en place (que le chef de projet s'appropriera, comme le fait CinePhil qui préfixe/suffixe le nom de ses tables et de ses champs).
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h33.


 
 
 
 
Partenaires

Hébergement Web