Database design 这些保留字需要其他字段名

Database design 这些保留字需要其他字段名,database-design,reserved-words,Database Design,Reserved Words,在C#和/或Ruby中,“type”和“class”很可能是保留的或有问题的词,这两种语言我将来可能会用来针对我的新数据库模式编程 因此,为了避免与这些语言的潜在冲突,我在表中寻找这些字段名的替代名称 在本例中,它来自我的机器表,其中我有: “类”字段(值可能类似于“手动”或“计算机化”) 及 “类型”字段(值应为“车床”或“铣床”) 我可以调用字段“machineclass”和“machinetype”,但这与我的架构的其余部分中的命名方案不一致(这意味着,我不会在字段中重复使用表名……例如,

在C#和/或Ruby中,“type”和“class”很可能是保留的或有问题的词,这两种语言我将来可能会用来针对我的新数据库模式编程

因此,为了避免与这些语言的潜在冲突,我在表中寻找这些字段名的替代名称

在本例中,它来自我的机器表,其中我有:

“类”字段(值可能类似于“手动”或“计算机化”)

“类型”字段(值应为“车床”或“铣床”)

我可以调用字段“machineclass”和“machinetype”,但这与我的架构的其余部分中的命名方案不一致(这意味着,我不会在字段中重复使用表名……例如,我使用Machine.name,而不是Machine.machinename)


对这种疯狂有什么想法吗?

你可以添加一些冗余,称它们为“type\u id”和“class\u id”,或者“type\u name”和“class\u name”。

Klass是一种常见的类拼写错误,可以使用。 我不确定是否存在一个很好的拼写错误


不过,我不确定RubyonRails可能会使用Klass。在使用klass之前,我会仔细检查一下,因为我不想隐藏它的变量。

这不是一个很好的解决方案,但是C#是区分大小写的。您可以有一个名为class或Type的变量或类,它不会与class或Type保留字冲突。

通常我们通过附加_id来解决它

因此,查找表将具有
Machine\u Types.type\u id,Machine\u Types.name


而且
Machine.type\u id
可以使用(type\u id)

轻松地绑定到
连接机器类型上,至少从C的角度来看,我并不认为数据库字段被称为“type”或“class”有任何问题。大多数ORM映射程序将生成具有名为“type”和“class”的属性的类,这是合法的。如果您使用DataReader,您将使用索引器,字段名将作为字符串传递


我想不出你的数据库字段名会与C#关键字“冲突”的任何情况。

简单。这种情况在SQL中也经常发生。您需要为该特定问题命名,同时不要打破您选择的更大命名约定

我们的命名约定(与您的命名约定有相同的问题,已解决)将规定类似的内容。易于阅读和理解,但也表明我们正在避免保留字Confirct:

类别
类型

我们已经:

Rowss
伯爵


MachineClass和MachineType可能是错误的。

因为我是双语(英语和西班牙语)我使用:clase=class,tipo=type,或者如果我想用英语保存所有内容,我会选择一个同义词,如:category=class,kind=type。我还连接了_v1 _v2 _v3。。。当我对我的应用程序进行修订或新版本时,如果需要新的列来更轻松地记录我的代码,则可以更改列名

恶心?我觉得这有点像克劳斯我非常不同意这个“解决方案”,因为它会在阅读代码时导致混乱。此外,弄乱你的大写方案似乎比在名称中添加_id更糟糕。我想我起初不同意这一点,因此“不是一个很好的解决方案”,但Microsoft已经有一个名为type的类型(在系统名称空间中),所以它不会那么糟糕,但你必须担心名称空间冲突。哦,我也不想搞砸资本化方案,但是属性(有些人可能会说公共字段)应该已经资本化了。为了说明这是一个多么糟糕的想法,这是在一个关于程序员邪恶编码的问题中提出的。Jakub的答案完全可以接受吗?Microsoft有一个名为“type”的类型。如果你认为它很糟糕,那么你可能不应该使用C#,因为它是由糟糕的程序员设计的。好吧,他还提到了ruby,在ruby中,使它成为大写将使它成为常量或类名。有趣的多了。这应该是开着的。有没有一种模式可以让你把哪个字母加倍?@Tyr:是的,结尾的辅音。它跳出来在你作为一个无害的拼写错误的预期术语。而替换词“K”而不是“C”,并且倾向于变粗,而元音的双元音会彻底改变单词:Typee,Roows。