AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 1637
Accepted
Beth Lang
Beth Lang
Asked: 2011-03-09 12:56:34 +0800 CST2011-03-09 12:56:34 +0800 CST 2011-03-09 12:56:34 +0800 CST

命名表和视图时应该遵循什么标准?

  • 772

命名表和视图时应该遵循什么标准?例如,将 tbl_ 之类的内容放在表名的开头是否是个好主意?我是否应该以 ct_、lut_ 或 code_ 之类的方式指定代码/查找表?还有其他的做/不做吗?

我正在使用 MS SQL Server 并且有许多数据库和许多表,所以如果有一些我们可以用作标准的东西并带有一些支持理性,那就太好了。

relational-theory naming-convention
  • 5 5 个回答
  • 10842 Views

5 个回答

  • Voted
  1. Best Answer
    mrdenny
    2011-03-09T13:01:19+08:002011-03-09T13:01:19+08:00

    好的,首先永远不要把 tbl 放在表名的前面。这是一张桌子,我们现在已经这样做了。这就是所谓的匈牙利符号,人们在 5 年前就不再这样做了。

    只需根据它是什么来调用对象。如果一个表包含员工数据,则将其称为“员工”。如果它包含有关计算机的信息,则将其称为“计算机”。如果它将计算机映射到员工,则将其称为“EmployeeComputer”或“ComputerEmployee”(我个人更喜欢“EmployeeComputer”)。

    没有真正正确的命名约定可以使用(除了不使用匈牙利符号)。只要对象名称有意义,它就很重要。

    • 29
  2. gbn
    2011-03-09T13:05:40+08:002011-03-09T13:05:40+08:00

    我们使用模式(可能将它们视为 SQL 中的命名空间)来进行权限和分组。所以我们有而不是“tbl”等

    • 数据.事物
    • 数据.事物历史
    • 数据资料

    没有代码进入数据模式。没有表存在于数据模式之外。如果您愿意,这当然可以扩展为具有查找或暂存模式。

    对于我们使用的视图vw,这是为了将它们与 SQL Server 2000 中的表区分开来,现在它有点旧了

    • 13
  3. bernd_k
    2011-03-09T13:32:28+08:002011-03-09T13:32:28+08:00

    就我个人而言,我是Fanö Bedingung的忠实粉丝,这意味着在这里不允许名称作为另一个有效名称的开头。

    其次,两个名字之间的汉明距离比一个不同的字母要好。

    是的,这是前数字时代的规则,但它们让生活更轻松。

    第三个名字必须是可发音的,否则当语音识别成为现实时,你会发疯的。

    • 5
  4. Matt M
    2011-03-10T05:35:58+08:002011-03-10T05:35:58+08:00

    我不知道那里真的有任何“最佳”命名约定,因为它真的归结为个人喜好和易于开发。我的建议是选择一个命名约定并遵守它。如果您希望用下划线分隔单词,请在所有数据库对象中这样做。如果您希望使用 camelCase,请在所有数据库对象中这样做。

    在我的商店中,我们遵守以下规则:

    我们用下划线分隔单词并使用所有小写字母。
    我们的表名描述了它们是什么:dbo.person、dbo.invoice。
    我们的多对多表名称还描述了它们是什么(添加mm以指示映射的多对多关系:dbo.person_mm_address。我们的用户定义存储过程描述了对象和正在执行的操作:usp_person_select , usp_address_select_by_city 我们的视图和函数遵循与存储过程相同的规则。我们的索引包括表、键列(按顺序)和集群/非集群的指示:ix_person_last_name_first_name_nc

    仅仅因为这是我们在我的商店中使用的,并不意味着这些规则适合您。选择您和您的开发团队一致认为既有用又易于开发的东西,并建立一种了解和使用您决定的任何命名约定的文化。在我们的例子中,这包括对数据库中创建的任何对象的代码审查。随着时间的推移,记录的命名约定和同行代码审查的结合导致与约定的偏差越来越少。

    我希望这个“不回答”在某种程度上有所帮助。

    • 2
  5. Uğur Gümüşhan
    2013-02-15T00:26:36+08:002013-02-15T00:26:36+08:00

    几年前我就满足于这些

    • 表名:小型大写字母和下划线,单数 {customer, product}
    • 多对多关系的表名:tablename1_tablename2: {customer_product}
    • 意见:小型大写字母将 v 添加到末尾 {customerv, productv, product_groupv}
    • 存储过程:表名和函数 {customer_select, customer_insert, customer_delete, customer_update}

    如果您有一个便宜的共享主机包,您需要在所有对象前面使用项目缩写,例如数据库管理员站点、da_users、da_questions

    • 1

相关问题

  • 如何构建模型以正确有效地表示关系数据库上的树状数据?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    您如何显示在 Oracle 数据库上执行的 SQL?

    • 2 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    我可以查看在 SQL Server 数据库上运行的历史查询吗?

    • 6 个回答
  • Marko Smith

    如何在 PostgreSQL 中使用 currval() 来获取最后插入的 id?

    • 10 个回答
  • Marko Smith

    如何在 Mac OS X 上运行 psql?

    • 11 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Marko Smith

    将数组参数传递给存储过程

    • 12 个回答
  • Martin Hope
    Manuel Leduc PostgreSQL 多列唯一约束和 NULL 值 2011-12-28 01:10:21 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Stuart Blackler 什么时候应该将主键声明为非聚集的? 2011-11-11 13:31:59 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    BrunoLM Guid vs INT - 哪个更好作为主键? 2011-01-05 23:46:34 +0800 CST
  • Martin Hope
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +0800 CST
  • Martin Hope
    Patrick 如何优化大型数据库的 mysqldump? 2011-01-04 13:13:48 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve