说我有一张叫做学生的桌子.您更喜欢哪些列的命名约定?你也可以推荐自己的.
Student ------- StudentID StudentName MentorID Student ------- StudentID Name MentorID Student ------- ID Name MentorID
Ray.. 19
我会选择第二个.
Student ------- StudentID Name MentorID
我喜欢在主键中使用表的名称,但它不需要在每个字段上.另外MentorID也就是我如何命名外键(假设Mentor是它所指向的表的名称).
这样,Student表中的MentorID字段与Mentor表中的MentorID字段具有相同的名称.有些人不喜欢它,因为在连接表时可能会有点混乱,但我更喜欢在连接中明确命名字段的表,
我会选择第二个.
Student ------- StudentID Name MentorID
我喜欢在主键中使用表的名称,但它不需要在每个字段上.另外MentorID也就是我如何命名外键(假设Mentor是它所指向的表的名称).
这样,Student表中的MentorID字段与Mentor表中的MentorID字段具有相同的名称.有些人不喜欢它,因为在连接表时可能会有点混乱,但我更喜欢在连接中明确命名字段的表,
由于常规RDBMS是一种层次结构,DBMS包含一个数据库 - 一个数据库包含一个表 - 一个表包含一个列 - 一个列包含一个值,我不喜欢在列名中迭代使用表名.
我的投票结果如下:
Student -------- id (pk) name mentor (fk) (alt. mentorId)
选择正确的字段相当容易,如果表之间有连接,我经常重命名列名,即:
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
由于一些sql格式化程序大写的东西,我跟随下面:
student ------- id name mentor_id
这样我就可以在db中保持单词分离.
在OO代码中,我使用相应的驼峰名称
mentorId,getMentorId()
我会亲自去:
Students -------- student_id first_name last_name mentor_id
我更喜欢使用下划线,因为研究表明它们与骆驼符号相比极大地提高了代码的可读性.
我也可以理解只使用"id"而不是"student_id"的论据,所以我并不反对.
我更喜欢最后一个,以便表之间的连接看起来像:
SELECT blah blah blah FROM Student INNER JOIN Mentor ON Student.MentorID = Mentor.ID
但这几乎与"你喜欢骆驼案吗?"一样主观.:P
最重要的是要保持一致.我不得不在过去处理一些他们无法决定标准的数据库.因此在某些表中,PK将是StudentID,其他是Student_ID和其他ID.或者,当用作外键时,它们并未使用一致的名称.哦,我开始咆哮......