如何避免重复 table 名称和 SQL 中的字段
How to avoid duplicating a table name and a field in SQL
这是一个关于 SQL 中的命名约定的问题。
当您的 table 和您的字段都由相同的词或短语描述时,您应该如何命名它们。两人同名可以吗
我的例子:
我正在创建一个问题,每个问题都可以有一对多的答案,所以我认为最好的方法是采用这样的结构:
CREATE TABLE question
(
id INT NOT NULL IDENTITY(1,1),
question VARCHAR(250) NOT NULL
)
CREATE TABLE answer
(
id INT NOT NULL IDENTITY(1,1),
question_id INT NOT NULL,
answer VARCHAR(50) NOT NULL
)
(两个table不是那么小,但为了简单起见,我删除了一些列)
问题是我不认为与 table 同名的字段不遵循正确的命名约定。
我考虑过将问题和答案列更改为文本之类的内容,但不幸的是,这是一个保留字,并且违反了标准命名约定,除此之外我还必须使用 []
标签指的是他们。
关于如何命名列或 table 有什么建议吗?
在这种情况下,我更喜欢将问题作为 table 名称,将问题作为列名称。
select 来自 id=x 有意义的问题。代替
select 问题描述或 select 问题文本或 select 问题问题。
查看 advantureworks 数据库,获取键列的命名约定
您会得到 "ID" 字段的命名约定是 "TableNameID"
关注下一个link了解更多详情Database, Table and Column Naming Conventions?
我知道这个答案应该输入为评论而不是答案,但我没有 50 的评论评论。
首先:TEXT
不是保留关键字SQL。 (至少在 SQL 2003 年的草案中没有,我刚刚在那里查了一下)。
它虽然是 SQL 服务器中的一种数据类型,而且正如您所说的列名称的括号,我想这就是您正在使用的。 (括号也是非标准的。标准 SQL 使用双引号表示不可用的列名。)我不会使用需要使用括号或引号的列名。不过,我认为 TEXT
不应该造成麻烦。 SQL 服务器已经宣布他们将在未来的版本中删除该类型:https://msdn.microsoft.com/fi-fi/library/ms187993(v=sql.105).aspx
ntext, text, and image data types will be removed in a future version
of Microsoft SQL Server.
无论如何,我经常看到的解决命名冗余的一种方法是给 tables 复数名称,所以你的 table answers
会有一列 answer
.另一种选择是 answertext
或 answer_text
。然而,你甚至可以坚持你所拥有的。有一个 table answer
包含一个列 answer
是不错的,它不会引起问题。
这是一个关于 SQL 中的命名约定的问题。
当您的 table 和您的字段都由相同的词或短语描述时,您应该如何命名它们。两人同名可以吗
我的例子:
我正在创建一个问题,每个问题都可以有一对多的答案,所以我认为最好的方法是采用这样的结构:
CREATE TABLE question
(
id INT NOT NULL IDENTITY(1,1),
question VARCHAR(250) NOT NULL
)
CREATE TABLE answer
(
id INT NOT NULL IDENTITY(1,1),
question_id INT NOT NULL,
answer VARCHAR(50) NOT NULL
)
(两个table不是那么小,但为了简单起见,我删除了一些列)
问题是我不认为与 table 同名的字段不遵循正确的命名约定。
我考虑过将问题和答案列更改为文本之类的内容,但不幸的是,这是一个保留字,并且违反了标准命名约定,除此之外我还必须使用 []
标签指的是他们。
关于如何命名列或 table 有什么建议吗?
在这种情况下,我更喜欢将问题作为 table 名称,将问题作为列名称。 select 来自 id=x 有意义的问题。代替 select 问题描述或 select 问题文本或 select 问题问题。
查看 advantureworks 数据库,获取键列的命名约定
您会得到 "ID" 字段的命名约定是 "TableNameID"
关注下一个link了解更多详情Database, Table and Column Naming Conventions?
我知道这个答案应该输入为评论而不是答案,但我没有 50 的评论评论。
首先:TEXT
不是保留关键字SQL。 (至少在 SQL 2003 年的草案中没有,我刚刚在那里查了一下)。
它虽然是 SQL 服务器中的一种数据类型,而且正如您所说的列名称的括号,我想这就是您正在使用的。 (括号也是非标准的。标准 SQL 使用双引号表示不可用的列名。)我不会使用需要使用括号或引号的列名。不过,我认为 TEXT
不应该造成麻烦。 SQL 服务器已经宣布他们将在未来的版本中删除该类型:https://msdn.microsoft.com/fi-fi/library/ms187993(v=sql.105).aspx
ntext, text, and image data types will be removed in a future version of Microsoft SQL Server.
无论如何,我经常看到的解决命名冗余的一种方法是给 tables 复数名称,所以你的 table answers
会有一列 answer
.另一种选择是 answertext
或 answer_text
。然而,你甚至可以坚持你所拥有的。有一个 table answer
包含一个列 answer
是不错的,它不会引起问题。