1. 主键应当是对用户没有意义的。如果用户看到了一个表示多对多关系的连接表中的数据,并抱怨它没有什么用处,那就证明它的主键设计地很好。
2. 永远也不要更新主键。实际上,因为主键除了唯一地标识一行之外,再没有其他的用途了,所以也就没有理由去对它更新。如果主键需要更新,则说明主键应对用户无意义的原则被违反了。
注:这项原则对于那些经常需要在数据转换或多数据库合并时进行数据整理的数据并不适用。
3. 主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。
4. 主键应当由计算机自动生成。如果由人来对主键的创建进行干预,就会使它带有除了唯一标识一行以外的意义。一旦越过这个界限,就可能产生认为修改主键的动机,这样,这种系统用来链接记录行、管理记录行的关键手段就会落入不了解数据库设计的人的手中。

建立主键应该遵循的原则相关推荐

  1. oracle中主键的建立,oracle 建立主键与索引

    一般的情况下,表的主键是必要的,没有主键的表可以说是不符合设计规范的. SELECT table_name FROM User_tables t WHERE NOT EXISTS (SELECT ta ...

  2. oracle数据库建立主键约束,数据库-Oracle主键约束和唯一索引的黑与白

    1.  分别用两种方法创建主键 create table test1(id number,name varchar2(10)); insert into test1 values(1,'t1'); i ...

  3. MySQL基础教程系列-约束(一)主键约束

    主键是数据库中十分重要的概念,必须要掌握.合理的主键设置十分重要,直接决定着我们整个模型设计的合理性,如果前期设计不合理,在项目后期更改主键,将会带来灾难性的影响. 什么是主键,如何选取主键,主键的特 ...

  4. 如何在sqlserver数据库表中建立复合主键

    主键是数据库表的一个重要属性,建立主键可以避免表中存在完全相同的记录,也就是说主键在一张表中的记录值是唯一的. 建立主键有两种方法:一种是在数据库提供的GUI环境中建立,另一种是通过SQL语句执行建立 ...

  5. MySql基础篇---003 SQL之DDL、DML、DCL使用篇:创建和管理表 ,数据处理之增删改,MySQL数据类型精讲 ,约束:联合主键

    第10章_创建和管理表 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. 基础知识 1.1 一条数据存储的过程 存储数据是处理数据的第一步.只有正确地 ...

  6. 数据库三范式(联合主键)

    数据库设计的三大范式~联合主键 什么是范式 为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中,这种规则就是范式.范式是符合某一种级别的关系模式的集合.关系型数据库中 ...

  7. 数据库模型设计——主键的设计

    在数据库设计时,主要就是对实体和关系的设计,实体表现出来就是表,关系表现出来就是外键.而对于一个表,由两部分组成:主键和属性.主键的简单定义就是表中为每一行数据的唯一标识.其实更准确的说法,每一行数据 ...

  8. 两个主键怎么设置tsql_如何在sql server中设置两个主键?

    展开全部 主键是数据库表的一个重要属性,建立主键可以避免表中存在完全相同的记录,也就是说主键在e68a8462616964757a686964616f31333365633938一张表中的记录值是唯一 ...

  9. MySQL主键(PRIMARY KEY)

    "主键(PRIMARY KEY)"的完整称呼是"主键约束".MySQL 主键约束是一个列或者列的组合,其值能唯一地标识表中的每一行.这样的一列或多列称为表的主键 ...

最新文章

  1. 64位游戏找call_替换Unity可执行文件为64位,改善游戏性能
  2. 全球首个Magic Leap One体验:吓到你不敢进房间
  3. python的gc模块_Python的内存泄漏及gc模块的使用分析
  4. linux apache tomcat php 共用 80,apache与tomcat共用80端口
  5. 工业机器人控制问题---来自睿慕课
  6. 【Flink】Flink 源码阅读笔记(15)- Flink SQL 整体执行框架
  7. C#串口通信工作笔记0001---嵌入式_串口通信_数据发送
  8. linux切换软件版本,使用Linux的alternatives命令替换选择软件的版本方法
  9. oracle数据库脱敏代码
  10. 2011年12月13日 timeout 与 refused windows clipbrd
  11. html+table表头固定,HTML table固定表头,htmltable固定表分享
  12. 利用BS爬取单词音标
  13. matlab绘制roc曲线,手把手画ROC曲线
  14. javawebjsp酒店预订系统 (jsp酒店管理系统jsp民宿预订系统)jsp酒店客房预订系统
  15. 带tan计算机在线,tan等于(万能计算器在线使用)
  16. 计算机应用能力提升研修计划,教师信息技术应用能力提升培训个人研修计划.doc...
  17. Typora使用技巧 | 各种跳转 【必备】
  18. 给chrome浏览器设置壁纸
  19. c语言windows头文件包含,不包含windows.h和window.h内的任何头文件,弹框 “Hello, world!”...
  20. 英飞凌基础学习笔记PSI5(Peripheral Sensor Interface)

热门文章

  1. LeetCode每日一题: 缺失数字(No.268)
  2. Java006-面向对象(继承)
  3. Angular定义服务-Learn By Doing
  4. IOS 实现TXT文本自动识别编码的方法
  5. Android 开发中使用Intent传递数据的方法
  6. 2011-09-07 00:16 ubuntu 如何修改当前用户名
  7. 联想服务器开机自动重启,解决联想电脑开机一半自动重启的方法
  8. tcp假连接_总结的23 个 TCP高频面试问题
  9. Hibernate配置数据源,数据库连接池
  10. python的socket编程执行顺序_Python篇-Socket网络编程