当前位置: 首页 > 面试题库 >

您最有用的数据库标准是什么?

裴姚石
2023-03-14
问题内容

已锁定 。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。

我有一些想法,随着时间的推移我已经积累了一些想法,但是我真的很想知道是什么使您在对数据库建模时使事情顺利进行:

  1. 表名称与主键名称和描述键匹配
  2. 模式按功能区域划分
  3. 尽可能避免使用复合主键(使用唯一约束)
  4. 骆驼案例表名称和字段名称
  5. 不要在表前加上tbl_前缀,也不要在proc时加上SP_(无匈牙利符号)
  6. OLTP数据库应至少为BCNF / 4NF

问题答案:

将每个人的意见汇总到一个列表中。

命名标准

  • 模式按功能区域(产品,订单,运输)命名

  • 没有匈牙利语符号:对象名称中没有类型名称(没有strFirstName)

  • 不要使用注册关键字作为对象名称

  • 对象名称中没有空格或任何特殊字符(仅允许使用字母数字和下划线)

  • 以自然方式命名对象(用FirstName代替NameFirst)

  • 表名称应与主键名称和描述字段匹配(SalesType ― SalesTypeId,SalesTypeDescription)

  • 不要以tbl_或sp_作为前缀

  • 按对象名称的名称代码(CustomerSearch,CustomerGetBalance)

  • CamelCase数据库对象名称

  • 列名应为单数

  • 表名可以是复数

  • 为所有限制提供公司名称(MustEnterFirstName)

资料类型

  • 在表之间使用相同的变量类型(在一个表中使用邮政编码-数字,在另一个表中使用varchar并不是一个好主意)

  • 使用nNVarChar获取客户信息(名称,地址)等,您永远不知道何时会跨国公司

在代码中

  • 关键字始终大写

  • 从不使用隐式联接(逗号语法)-始终使用显式的INNER JOIN / OUTER JOIN

  • 每行一个JOIN

  • 每行一个WHERE子句

  • 没有循环-替换为基于集合的逻辑

  • 对别名使用简短的表名形式,而不是A,B,C

  • 除非没有追索权,否则避免触发

  • 避免像瘟疫这样的游标(请阅读http://www.sqlservercentral.com/articles/T-SQL/66097/)

文献资料

  • 创建数据库图

  • 创建数据字典

规范化和参照完整性

  • 尽可能使用单列主键。在需要时使用唯一约束。

  • 参照完整性将始终得到执行

  • 避免ON DELETE CASCADE

  • OLTP必须至少为4NF

  • 将每个一对多关系评估为潜在的多对多关系

  • 非用户生成的主键

  • 构建基于插入的模型,而不是基于更新的模型

  • PK到FK的名称必须相同(Employee.EmployeeId与EmployeeSalary.EmployeeId相同的字段)

  • 除非有双重联接(Person.PersonId联接到PersonRelation.PersonId_Parent和PersonRelation.PersonId_Child)

维护:运行定期脚本以查找

  • 不含表的架构

  • 孤记录

  • 没有主键的表

  • 没有索引的表

  • 非确定性UDF

  • 备份,备份,备份

做个好人

  • 始终如一

  • 修正错误, 现在

  • 阅读Joe Celko的SQL编程样式(ISBN 978-0120887972)



 类似资料:
  • 本文向大家介绍什么是数据标准化,为什么要进行数据标准化?相关面试题,主要包含被问及什么是数据标准化,为什么要进行数据标准化?时的应答技巧和注意事项,需要的朋友参考一下 数据标准化是预处理步骤,将数据标准化到一个特定的范围能够在反向传播中保证更好的收敛。一般来说,是将该值将去平均值后再除以标准差。如果不进行数据标准化,有些特征(值很大)将会对损失函数影响更大(就算这个特别大的特征只是改变了1%,但是

  • 我有一个存储库层,有许多方法组合,以匹配搜索标准…重用这个标准的最佳方法是什么?我认为像FindByNameAndidandBirthdayandAccouncAnumber这样的方法名称不是一个好主意!谢了! }

  • 问题内容: 我知道有些人可能会回答这个问题,但是我的问题来自于您和您的答案。我正在阅读有关SQL注入以及如何保护数据库的过去两个小时的问答。我看到的大量网页和教程也是如此。 我发现有一半人声称prepare语句确实可以保护您的数据库,而另外50人则声称不是。 另一方面,我读到mysql_real_escape_string可以完成这项工作,而其他人则说不行。 我的问题是谁相信? 另外,这是适当的准

  • Python自带一个轻量级的关系型数据库SQLite。这一数据库使用SQL语言。SQLite作为后端数据库,可以搭配Python建网站,或者制作有数据存储需求的工具。SQLite还在其它领域有广泛的应用,比如HTML5和移动端。Python标准库中的sqlite3提供该数据库的接口。 我将创建一个简单的关系型数据库,为一个书店存储书的分类和价格。数据库中包含两个表:category用于记录分类,b

  • 问题内容: 我们有很多对象,我们希望为其实现简单的输出对象属性的对象。其中一些属性可能是复杂的对象本身。 是否有任何标准,或者仅仅是样式的最佳实践?我在想类似的东西: 在这种情况下,嵌套值将如下所示: 我们正在使用Java,但是我发现自己在大多数语言中都在问同样的问题! 问题答案: 就我个人而言,我发现混合使用它并不太容易立即获得层次结构的视图。 我喜欢这种格式(并且已经在很多地方看到它使用过):

  • 问题内容: 您使用的最常见的SQL优化是什么? 问题答案: 通过仅返回所需的字段并仅返回所需的行来减少返回的数据量。这是最常见的情况,因为您对返回数据的每个查询都执行此操作。 添加索引。这样做的频率不高,因为某些表除了为主键创建的索引外,不需要任何其他索引。