Les meilleures pratiques pour la colonne de nommage dans Sql [fermé]

disons que j'ai une table appelée Student. Laquelle des conventions de nommage suivantes préférez-vous pour les colonnes? Vous pouvez également suggérer votre propre.

Student
-------
StudentID
StudentName
MentorID

Student
-------
StudentID
Name
MentorID

Student
-------
ID
Name
MentorID
20
sql
demandé sur EvilTeach 2009-03-19 23:55:07

19 réponses

je voudrais aller avec le second.

Student
-------
StudentID
Name
MentorID

j'aime avoir le nom de la table dans la clé Primaire, mais il n'a pas besoin d'être sur tous les domaines. Aussi MentorID serait comment je nommerais une clé étrangère aussi bien (en supposant Mentor est le nom de la table qu'il pointe à).

de cette façon le champ MentorID dans la table Student a le même nom que le champ MentorID dans la table Mentor. Certaines personnes ne l'aiment pas parce que cela peut être un peu confus en rejoignant des tables, mais je préférons de toute façon nommer explicitement les tables des champs dans joins,

19
répondu Ray 2009-03-19 20:57:16

puisque les RDBM réguliers sont en quelque sorte hiérarchiques, un SGBD contient une base de données - une base de données contient une table - une table contient une colonne - une colonne contient une valeur, je n'aime pas l'utilisation itérative des noms de table dans les noms de colonne.

Mon vote va à:

Student
--------
id (pk)
name
mentor (fk) (alt. mentorId)

il est assez facile de sélectionner les bons champs, et en cas de jointures entre les tables Je renommerai souvent les noms de colonne, I. e:

SELECT s.id AS StudentID, s.name AS StudentName, m.id AS MentorId, m.name AS MentorName
FROM Studens AS s
INNER JOIN Mentors AS m ON m.id=s.mentor
19
répondu Björn 2009-03-19 20:59:18

depuis quelques formats sql en majuscules, je vais avec le suivant:

student
-------
id
name
mentor_id

de cette façon je peux garder la séparation des mots dans le db.

OO-code que j'utilise le correspondant de chameau cas, les noms de

mentorId, getMentorId ()

8
répondu Andreas Petersson 2009-03-19 21:02:37

je préfère la dernière, de sorte qu'une jointure entre les tables ressembler à ça:

 SELECT blah blah blah
 FROM Student INNER JOIN Mentor
      ON Student.MentorID = Mentor.ID

mais c'est presque aussi subjectif que "aimez-vous l'affaire camel?": P

l'essentiel est d'être cohérent. J'ai eu affaire dans le passé à des bases de données où ils ne pouvaient jamais décider d'un standard. Ainsi, dans certaines tables, le PK serait StudentID, D'autres Student_ID et D'autres ID. Ou ils n'ont pas été utilisés de façon uniforme nom lorsqu'ils sont utilisés comme des clés étrangères. Oy, je commence à diatribe...

6
répondu Dana 2009-03-19 20:59:44

je dirais personnellement:

Students
--------
student_id
first_name
last_name
mentor_id

je préfère utiliser les caractères soulignés parce que des études ont montré qu'ils améliorent énormément la lisibilité du code par rapport à la notation camel-back.

je peux aussi comprendre les arguments pour juste utiliser " id "plutôt que" student_id", donc je ne suis pas opposé à cela.

6
répondu Tom H 2009-03-19 21:07:39

j'préférez la seconde:

Students
-------
StudentID
Name
MentorID

Où:

  • Toutes les clés étrangères sont identifiés avec ID à la fin de columnname.
  • Le reste des colonnes sont nommées avec facile à comprendre.
  • utilisez aussi EndDate, BeginDate pour les dates.
4
répondu FerranB 2009-03-19 20:57:14

je préfère le premier.

en donnant aux champs un nom plus spécifique que juste Id ou Name, il est plus facile de voir que vous rejoignez correctement, et vous n'avez pas à utiliser d'Alias pour les champs si vous sélectionnez des champs à partir de plus d'une table:

select s.StudentId, s.StudentName, m.MentorId, m.MentorName
from Student s
inner join Mentor m on m.MentorId = s.MentorId

vs.

select s.Id as StudentId, s.Name as StudentName, m.Id as MentorId, m.Name as MentorName
from Student s
inner join Mentor m on m.Id = s.MentorId

aussi, le mot Name est un mot-clé réservé dans certaines bases de données (par exemple SQL Server), il n'est donc pas toujours pratique d'utiliser comme nom de champ.

4
répondu Guffa 2009-03-19 21:18:29

même si je déteste ça, J'opterais pour L'Option 1:

Student
-------
StudentID
StudentName
MentorID

La raison pour cela est lorsque vous rejoignez avec d'autres tables avec la colonne "Nom", disons cours ou degré ou quelque chose, joindre nécessite que vous renommez les colonnes pour éviter des noms ambigus. Traiter avec de longs Noms qui ont le nom de la table est ennuyeux, mais il peut vous sauver le travail sur le long terme.

2
répondu achinda99 2009-03-19 21:01:35

je voudrais aller avec le Nombre 1:

éviter les noms de réserve comme"name". donnez aux champs des noms distinctifs. Je vous avoir à répéter le nom de la table, ainsi soit-il, bien que je n'aime pas voir le nom de la table dans tous les domaines.

évitez simplement D'utiliser ID car alors vous N'avez aucune idée de ce que ID est à quelle table. Faites-le sans ambiguïté et vous devez ensuite le qualifier de toute façon. student_ID = mentor_ID est beaucoup plus lisible que A. id = B. id. Ce n'est pas utile, difficile à lire, doivent alors comprendre A et b est et N'est pas une pratique agile. Le Code / SQL doit être facilement lisible avec les commentaires.

L'utilisateur de underscore aide à la lisibilité, cas de chameau mis à part (car c'est ce que J'utilise dans C#) J'ai toujours mis le PK comme premier nom de champ et le FK associé comme 2nd, 3rd, etc champs.

ne terminez pas un nom de champ avec _s ou _d pour délinier la chaîne ou la date.

j'aime les choses propres et sans ambiguïté parce que je veux être attentionné envers les autres qui viennent derrière moi qui doivent faire maint sur le DB. Trop de gens traînent de mauvaises habitudes de L'accès dans SQL. Surtout parce qu'ils n'avaient pas de mentor pour les aider à apprendre! : -)

rappelez-vous, l'entretien continu est toujours une tâche plus importante que le développement initial.

2
répondu JoeInthefalls 2011-09-17 13:03:54

I utilisez StudentName au lieu de Name car cela facilitera les jointures. Souvent, je trouve que j'ai beaucoup, beaucoup de tables avec une colonne "Nom" et "description".

1
répondu Jonathan Allen 2009-03-19 20:59:48

Et je voudrais aller avec presque la troisième:

Student
-------
Id
Name
Mentor_Id

SELECT Student.Name, 
  Student_Mentor.Name
FROM Student
  INNER JOIN Mentor AS Student_Mentor ON Student.Mentor_Id = Student_Mentor.Id
1
répondu svinto 2009-03-19 21:00:44

j'ai l'habitude de faire le numéro 3

Student-------
ID
Name
MentorID
1
répondu erikkallen 2009-03-19 21:03:02

en guise de note d'accompagnement, comme le raccourcissement de mots comme Company, Brother et Number à Co, Bro et No, je recommanderais que L'identité soit raccourcie à " Id "au lieu de "ID", car la majuscule de la lettre " d "suggère que" Id " est un acronyme au lieu d'une abréviation.

1
répondu Adrian Thompson Phillips 2012-01-13 09:51:32

nom est probablement un mot réservé, Je ne l'utiliserais jamais comme nom de colonne. Je n'envisagerais pas non plus de stocker des noms dans un seul champ. Vous avez vraiment besoin de prenom, Middle_name, last_name, Suffixe (III, Jr, etc.). Considérez ce que vous devez faire pour interroger un champ de nom quand vous voulez tous les clients nommés 'Smith'.

Je ne nommerais jamais un ID de champ ID. Je préfère mes champs id pour avoir le même nom dans toutes les tables d'enfant car il rend beaucoup plus facile de voir ce que vous parlez à propos surtout quand vous avez une requête complexe impliquant de nombreux identifiants différents.

une seule personne peut-elle servir de mentor? Unikely. Mentors devrait être une table séparée et il devrait y avoir une table de jonction avec StudentID et mentorID

0
répondu HLGEM 2009-03-19 21:21:21

Il n'y a pas de "bonne" réponse. Il suffit de choisir une convention de nommage que vous aimez (et tous les autres qui utiliseront votre base de données) et de s'y tenir. Il existe de nombreuses conventions de nommage bien conçues sur internet. Il suffit de rechercher Google sur "conventions de nommage SQL".

d'après mon expérience, les gens utilisent des styles totalement différents, mais C'est OK tant que l'ensemble de l'application (ou tous les projets dans la même organisation) utilisent les mêmes conventions.

0
répondu Sergej Andrejev 2009-03-20 00:25:43

je préfère l'utilisation de ce modèle:

student
-------
id
name
mentor_id

_id for foreign keys
0
répondu Anton Kuzmin 2009-03-22 19:01:06

j'ai fait comme ceci:

Student
-------
Id
Name
IdMentor

je suppose que ça imite la notation hongroise. Il y a aussi plus d'une différence visuelle entre IdMentor et et Mentor.Id.

0
répondu Blorgbeard 2009-04-06 20:45:16
Student
-------
Id
Name
MentorId

cela marcherait pour moi.

0
répondu Dillorscroft 2011-11-04 21:12:05
Student
-------
Id
Name
Mentor_Id

inner join Mentor m on m.Id = s.Mentor_Id
  • facile à voir quelle touche est l'étrangère
  • requêtes plus Courts
  • Pas besoin de alias
0
répondu Brice 2012-08-10 12:15:08