数据库列类型前缀

2024-01-07

我已经开发数据库解决方案超过 11 年了,似乎我已经“开发”了一个关于命名表中列的相当有争议的观点:我总是给它们一个 3 或 4 个字符的类型前缀,即 intGroupID, nvcTitle、dtmCreated、bitPlayerHater 等。我曾与其他几位开发人员合作过,他们都绝对鄙视老式的前缀约定。

(是的,我知道,我在这里没有发明任何东西,我只是拒绝放弃:)

我的主要理由是,当我的开发人员同事尝试理解数据结构时,为他们提供尽可能多的信息。了解列的类型可以立即让您(或至少是我)对正在处理的内容有更好的心理印象。与使用 C# 或 VB.NET 相比,在编写查询时,IDE 通常无法提供相同的智能感知支持。

到目前为止,没有人能够提出致命的论点来改变我对这个特定话题的看法。我还有其他一些同样有争议的命名约定,它们可以提高清晰度,但列前缀似乎会激怒更多的人。

为什么给数据库列添加前缀被认为是一种不好的做法?


它的名字叫“匈牙利表示法 http://en.wikipedia.org/wiki/Hungarian_notation".

作为一名开发人员(和数据架构师),我发现它毫无价值。它没有提供太多信息。

  1. 它仅提供对部分类型信息的快速、不准确的注释。例如,它省略了长度。

    在更复杂的数据库环境中,对象是 BLOB,它根本不提供有关 Blob 中对象类型的信息。

  2. 它使更改数据类型变得痛苦。

  3. 有必要记住一个晦涩的前缀。是吗vcName, strName or uniName?

  4. SQL 自动处理类型转换,使得繁琐的特定于类型的命名在很大程度上变得无关紧要。

  5. 最重要的是:它没有提供任何有用的文档meaning的数据。我的经验是,人们几乎总是会歪曲含义。他们很少(如果有的话)对它是 int 还是 string 感到困惑;当他们想知道时,他们只是使用 TOAD 或其他给出实际类型的工具来描述该表,而不是预期类型的​​部分摘要。

[虽然说它几乎没有用,但我意识到这可能不是您正在寻找的“杀手级论点”。如果您可以用您认为匈牙利表示法的价值的实际原因逐点更新您的问题,那么这将会有所帮助,因此可以逐点解决它们。]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库列类型前缀 的相关文章

  • 当基本词以 I 开头时,如何命名接口?

    我想为 Items 创建一个界面 通常 我会通过在基本词中添加 I 前缀来命名接口 但在这种情况下 我的基本词已经以 I 开头 以下是我的一些想法 IItem 两个我 Iitem 情况不同 项目接口 跳过I前缀 写出Interface 什么
  • 在实体框架和 Sql Server 中创建对象计数器

    注 1 我重新表述了问题 它现在由供应商和订单组成 而不是汽车和零件 注 2 此问题是假设的 我的目标是了解如何创建对象计数器 为了满足监管要求 我需要对每个供应商的每个订单进行顺序编号 我在用着 实体框架 与 SQL Server In
  • 得到一个名为保留字的Oracle表,可能会出现哪些问题?

    我们刚刚外包了一个系统 乍一看我可以看到一些名称为 CASE 或 FROM 的表和字段 它是一个 Oracle 10g DB 我们将使用来自 Java Hibernate C C 的这些数据 有什么特别我们应该注意的吗 对于我在其他帖子中看
  • 以适度可扩展的方式交付活动提要项目

    我正在开发的应用程序有一个活动源 每个用户都可以在其中看到他们朋友的活动 很像 Facebook 我正在寻找一种适度可扩展的方式来动态显示给定用户的活动流 我说 适度 是因为我希望只用一个数据库 Postgresql 来做到这一点并且may
  • Javascript 方法命名小写与大写

    我主要是 ASP NET 和 C 的开发人员 我以小写字母开头命名变量 以大写字母开头命名方法 但我研究的大多数 javascript 示例都有以小写字母开头的函数 这是为什么 这很重要吗 function someMethod alert
  • Bash 中常量的命名约定是什么?

    在 shell 脚本中 即使我使用Java or Python样式命名约定 我仍然不清楚命名常量 许多约定建议我使用 大写字母 和 下划线 一起命名常量 例如MY CONSTANT PI 但在Bash 这可能与环境变量 https stac
  • MongoDB 中的双向嵌入与单向嵌入(多对多)

    我想与您讨论一下 在 MongoDB 中建模 N M 关系时 使用双向嵌入而不是单向嵌入是否有意义 假设我们有两个实体 AProduct可以属于许多 少数 类别 and a Category可以有很多 很多 Products 两种方式嵌入
  • FOREIGN KEY 约束的“多态性”

    表中有这样一个字段 room id INT NOT NULL CONSTRAINT room id ref room REFERENCES room 我有三张两张桌子 分为两种房间 standard room and family room
  • 使用 CouchDB 视图替换 SQL 中的多个联接

    我正在为我的应用程序实现过滤功能 但在 CouchDB 上编写视图时遇到问题 在 SQL 中 这将是一个具有多个连接的语句 如何替换 CouchDB 中的多重连接 本文涵盖单连接 http www cmlenz net archives 2
  • 带有 varchar(255) PRIMARY KEY 的表会造成什么损害吗?

    我知道这不是一个好主意 但我想仔细检查一下这不会造成服务器崩溃等疯狂的事情 CREATE TABLE dbo Items Id nvarchar 255 NOT NULL PRIMARY KEY Value nvarchar max NOT
  • 数据库性能:按列过滤与单独表过滤

    我想知道对于以下情况最好的方法是什么 我在数据库中有一个订单表 显然包含所有订单 但这些实际上是所有订单 因此包括刚刚标记为 完成 的完整 完成的订单 我想从所有未结订单中计算一些内容 例如未结金额 未结项目等 什么会更好的性能明智 保留
  • 从 R 中单列中的所有数据中删除前缀

    我会有一个列 其中的数据如下所示 M999 00001 M999 00002 有没有办法删除R中列中的所有 M 我们可以用sub df1 1 lt sub df1 1 Or use substring substring df1 1 2 d
  • 使用 MySQL 实现物化视图(汇总表)的首选方法

    我正在工作中开发一个项目 我需要为其创建和维护汇总表出于性能原因 我相信正确的术语是物化视图 我这样做有两个主要原因 非规范化 我尽可能地规范化表格 因此 在某些情况下 我必须连接许多表才能提取数据 我们使用 MySQL Cluster 它
  • SQLAlchemy 中的复杂外键约束

    我有两张桌子 SystemVariables and VariableOptions SystemVariables应该是不言自明的 并且VariableOptions包含所有变量的所有可能选择 VariableOptions有一个外键 v
  • 两种表结构的区别

    我对这两种结构很困惑 这两个表各有什么优缺点 哪一个更好 为什么 TABLE1 反模式 在常见情况下 第二个表是反模式在数据库设计的背景下 而且 更重要的是 它有特定的名称 实体 属性 值 EAV 在某些情况下 使用这种设计是合理的 但这种
  • 管理数据库更改的最佳方法[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 管理数据库更改的最佳方法是什么 无论数据库客户端的语言如何 我都需要有一个解决方案 另外 我希望能够在这些更改中使用特定的数据库功能
  • 更好的数据库设计是:更多的表还是更多的列?

    一位前同事坚持认为 具有更多表且每个列较少的数据库比具有较少表且每个列较多的数据库更好 例如 您将拥有一个名称表 一个地址表 一个城市表等 而不是包含名称 地址 城市 州 邮政编码等列的客户表 他认为这种设计更加高效和灵活 也许它更灵活 但
  • 数据库查询的内部实现

    根据我的经验 我使用过很多查询 例如select order by wheremysql sql server oracle 等中的子句等 有那么一刻我想 1 内部是如何编写来实现上述查询的 2 他们使用哪种语言 3 那是编程语言吗 如果是
  • 标签系统:Toxi 解决方案问题

    我对标签数据库模式的 Toxi 解决方案感到有点困惑 我正在开发一个系统 用户可以向该系统提交项目 并且这些项目可以具有与其关联的标签 在阅读了 tagchemas 后 我发现 Toxi 解决方案最适合我的需求 但是 我不完全确定我的计划是
  • int i 与 int index 等哪个更好? [复制]

    这个问题在这里已经有答案了 可能的重复 名为 i 的变量是不可接受的吗 https stackoverflow com questions 130775 is a variable named i unacceptable 循环变量的理想变

随机推荐

  • SVG 粘糊糊的效果在最新版本的 FireFox 上不起作用

    我有一个问题 当使用黑色以外的任何其他颜色时 我的 feGuassian 模糊无法正常工作 在 chrome 上它工作得很好 我还没有在 safari 上测试过 我在 jsFiddle 创建了一个示例 HTML div div class
  • 关于 django form.errors 的问题,获取原始错误消息

    django文档说https docs djangoproject com en dev ref forms api django forms Form errors https docs djangoproject com en dev
  • 从代码隐藏中获取多用户控件中的 GridView

    IpInterfaceUC 用户控制 div style height 205px width 550px margin left 5px div
  • 正则表达式 [A-z] 和 [a-zA-Z] 之间的区别

    我正在使用正则表达式为我只需要字母字符的文本框编写输入验证器 我想知道是否 A z and a zA Z 是否相同或性能方面是否存在差异 我继续阅读 a zA Z 在我的搜索中 没有提及 A z 我正在使用java的String match
  • 在android中制作按钮的按下效果

    我创建了一个android应用程序 它动态创建50个按钮 效果很好 但问题是当我动态地为这些按钮添加一些背景颜色时 按钮的按下效果会丢失 谁能告诉我一些保留按钮点击按下效果的解决方案我的代码如下所示 my Android平台是2 3 3 i
  • 流星 / JS 日期

    所以我试图在流星中制作一个时间表应用程序 创建项目并添加时间条目 为什么 这是我能想到的所有测试应用程序 但是 我更习惯于处理 PHP 在 PHP 中我只会存储一个带有时间长度的日期字段 现在 我想知道在 Meteor 中处理日期的最佳方式
  • ElasticSearch进入“只读”模式,节点无法更改

    晚上我的 ES 集群 由 5 个数据节点 3 个主节点组成 发生了一些事情 我不知道发生了什么 但所有索引和数据都被删除 集群进入 只读 模式 可能被黑客攻击了 When trying to get Kibana running I get
  • python:从html获取图像链接

    来自这样的 html rss 片段 div class div p a href alt src http link to image width a span 我想获取图像源链接 http link to image jpg 我怎样才能在
  • jQuery 中窗口调整大小事件触发两次

    我运行了下面的代码 document ready function var ivar 0 window resize function console log window height window height ivar 每当我调整大小
  • 是removeFromSuperview释放了对象吗?

    我在用removeFromSuperview用于从其超级视图中删除视图 我也在使用release after removeFromSuperview在该对象上 有时它工作正常 但有时会提供错误的访问权限 is removeFromSuper
  • BigCommerce webhook 未触发

    我能够成功为我的 BigCommerce 商店设置 Webhook 但是 我没有收到商店的任何请求 当我创建 webhook 时 我收到了以下响应 这让我认为它工作正常 id 437 client id dagb0rxpdd2o3znkeb
  • I18n 停止工作

    我总是使用这个脚本来编译 django po 并且它总是有效 bin sh django admin py makemessages a django admin py compilemessages 突然它停止工作 并出现以下错误 i18
  • Windows Phone 模拟器需要缺少 Hyper-V

    我是 Windows Phone 8 的初学者 我安装了 Windows Phone 8 SDK 当我启动模拟器时 出现此错误消息 Windows Phone 模拟器需要 Hyper V 您的 PC 缺少 运行 Hyper V 需要以下先决
  • 在我的混合模型上使用 lme4 预测函数时遇到问题

    我在尝试在混合模型上使用 lme4 预测函数时遇到了一些困难 在进行预测时 我希望能够将一些解释变量设置为指定水平 但对其他变量进行平均 以下是一些虚构的数据 它们是我的原始数据集的简化版 无意义版本 a lt data frame TLR
  • 设置自定义对话框的内容描述

    我怎样才能设置contentDescription当我的对话框打开时由辅助服务读取 我目前正在使用具有自定义布局的对话框来显示阻塞的加载屏幕和语音contentDescription是 警报 在这种情况下不合适 谢谢 您可以创建子类Dial
  • 从初始化列表转换为“A”将使用显式构造函数“A::A(int)”

    我正在尝试将旧的 C 03 代码库迁移到 C 11 但我无法理解 gcc 在以下情况下警告我的内容 g std c 03 t cxx g std c 11 t cxx t cxx In function int main t cxx 8 2
  • Android Studio 中的 JNI 文件夹

    我正在尝试在 Android Studio 中制作 helloy jni 应用程序 但有例外 06 27 13 17 19 099 12714 12714 com example testjni2 E AndroidRuntime FATA
  • 如何使用 WebClient 以编程方式登录到诸如 codeproject 或 stackoverflow 之类的网站?

    我想从服务器登录 stackoverflow 或 codeproject 等网站 有什么方法可以使用登录到这样的网站WebClient class http code google com p stackexchange api http
  • jqgrid中如何将一个单元格分成2个?

    可以通过 jqgrid 获得此类设计 S N0 order ID Date Amount Location Status 1 45 1 1 11 100 E123 Done
  • 数据库列类型前缀

    我已经开发数据库解决方案超过 11 年了 似乎我已经 开发 了一个关于命名表中列的相当有争议的观点 我总是给它们一个 3 或 4 个字符的类型前缀 即 intGroupID nvcTitle dtmCreated bitPlayerHate