说我有一张叫做学生的桌子。您更喜欢哪些列的命名约定?你也可以推荐自己的。
Student
-------
StudentID
StudentName
MentorID
Student
-------
StudentID
Name
MentorID
Student
-------
ID
Name
MentorID
答案 0 :(得分:19)
我会选择第二个。
Student
-------
StudentID
Name
MentorID
我喜欢在主键中使用表的名称,但它不需要在每个字段上。另外MentorID也就是我如何命名外键(假设Mentor是它所指向的表的名称)。
这样,Student表中的MentorID字段与Mentor表中的MentorID字段具有相同的名称。有些人不喜欢它,因为在连接表时可能会有点混乱,但我更喜欢在连接中明确命名字段的表格,
答案 1 :(得分:19)
由于常规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
答案 2 :(得分:9)
因为一些sql格式化程序大写的东西,我跟着下面的内容:
student
-------
id
name
mentor_id
这样我就可以在db中保持单词分离。
在OO代码中的我使用相应的驼峰名称
mentorId,getMentorId()
答案 3 :(得分:7)
我个人会选择:
Students
--------
student_id
first_name
last_name
mentor_id
我更喜欢使用下划线,因为研究表明它们与骆驼符号相比极大地提高了代码的可读性。
我也可以理解只使用“id”而不是“student_id”的论据,所以我不反对。
答案 4 :(得分:6)
我更喜欢最后一个,以便表之间的连接看起来像:
SELECT blah blah blah
FROM Student INNER JOIN Mentor
ON Student.MentorID = Mentor.ID
但这几乎与“你喜欢骆驼案吗?”一样主观。 :P
最重要的是要保持一致。我不得不在过去处理一些他们无法决定标准的数据库。因此在某些表中,PK将是StudentID,其他是Student_ID和其他ID。或者,当用作外键时,它们并未使用一致的名称。哦,我开始咆哮......
答案 5 :(得分:4)
我喜欢第二个:
Students
-------
StudentID
Name
MentorID
其中:
ID
。EndDate
,BeginDate
作为日期。答案 6 :(得分:4)
我更喜欢第一个。
通过为字段提供比Id
或Name
更具体的名称,可以更容易地看到您正确加入,如果选择,则不必为字段使用别名来自多个表的字段:
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
此外,单词Name
在某些数据库(例如SQL Server)中是保留关键字,因此使用字段名称并不总是切实可行。
答案 7 :(得分:2)
尽管我讨厌它,但我会选择选项1:
Student
-------
StudentID
StudentName
MentorID
这样做的原因是当使用“名称”列连接其他表时,比如说课程或学位等,加入要求您重命名列以避免使用含糊不清的名称。处理包含表名的长名称很烦人,但从长远来看,它可以为您节省工作。
答案 8 :(得分:2)
我会选择1号:
避免使用“名称”之类的保留名称。给字段带来与众不同我必须重复表名,所以就这样吧,虽然我不喜欢在所有字段中看到表名。
避免使用ID,因为你不知道什么ID是什么表。让它毫无价值,然后你必须要有资格。 student_ID = mentor_ID是一个更可读的整体 比a.id = b.id.这没用,难以阅读,必须弄清楚a和b是什么,而不是敏捷实践。代码/ SQL应该易于阅读,无需评论。
下划线用户有助于提高可读性,骆驼案例(因为这是我在C#中使用的) 我总是将PK作为第一个字段名称,将相关的FK作为第二,第三等字段。
不要使用_s或_d结束字段名称以删除字符串或日期。
我喜欢整洁而且毫不含糊的东西,因为我想要体谅那些不得不在我身后的人。太多人将不良习惯从Access拖入SQL。 主要是因为他们没有导师帮助他们学习! : - )
请记住,正在进行的维护工作总是比原始开发更大。
答案 9 :(得分:1)
我可能使用StudentName而不是Name,因为它会使连接更容易。我经常发现我有很多很多表都带有“名称”和“描述”栏目。
答案 10 :(得分:1)
我几乎和第三个一起去了:
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
答案 11 :(得分:1)
我通常做3号
Student-------
ID
Name
MentorID
答案 12 :(得分:1)
作为旁注,如缩短公司,兄弟和数字对公司,兄弟和否的话,我会建议将身份缩短为'Id'而不是'ID',作为字母'd'的大写字母'建议'Id'是缩写而不是缩写。
答案 13 :(得分:0)
名称可能是保留字,我永远不会将其用作列名。 我也不会考虑在一个字段中存储名称。你真的需要first_name,Middle_name,last_name,Suffix(对于III,Jr等)。当您希望所有名为“Smith”的客户时,请考虑在查询名称字段时需要执行的操作。
我也永远不会命名id字段ID。我更喜欢我的id字段在所有子表中具有相同的名称,因为它使得更容易看到你在说什么,特别是当你有一个涉及许多不同id的复杂查询时。
只有一个人可以担任导师吗? Unikely。导师应该是一个单独的表,并且应该有一个包含StudentID和mentorID的连接表
答案 14 :(得分:0)
对此没有“正确”的答案。只需选择您喜欢的任何命名约定(以及将使用您的数据库的所有其他人)并坚持使用它。互联网上有很多精心设计的命名约定。只需在Google上搜索“SQL命名约定”。
根据我的经验,人们使用完全不同的样式,但只要整个应用程序(或同一组织中的所有项目)使用相同的约定就可以。
答案 15 :(得分:0)
我更喜欢使用这种模式:
student
-------
id
name
mentor_id
_id for foreign keys
答案 16 :(得分:0)
我其实喜欢:
Student
-------
Id
Name
IdMentor
我猜这有点模仿匈牙利的符号。 IdMentor
和Mentor.Id
之间的视觉差异也大于MentorId
和Mentor.Id
之间的视觉差异。
答案 17 :(得分:0)
Student
-------
Id
Name
MentorId
这对我有用。
答案 18 :(得分:0)
Student
-------
Id
Name
Mentor_Id
inner join Mentor m on m.Id = s.Mentor_Id