SQL SERVER 数据库主键和外键的思考

什么是主键: 主键是指表中一个列或者列的组合,其值能够唯一的标识表中的每一个行。这样的一列或者多列成为表的主键,通过它可以强制表的实体完整性。当创建或者更改表时可以通过定义PRIMARY KEY约束来创建主键,一个表只能有一个主键约束,而且主键约束中

什么是主键:

主键是指表中一个列或者列的组合,其值能够唯一的标识表中的每一个行。这样的一列或者多列成为表的主键,通过它可以强制表的实体完整性。当创建或者更改表时可以通过定义PRIMARY KEY约束来创建主键,一个表只能有一个主键约束,而且主键约束中的列不能是空值,由于主键约束确保唯一数据,所一经常来定义标识列。

每一个表都必须定义一个主键吗?

我个人认为这个问题要看我们的表的功能,利用来存储大量数据,并需要经常查询的,建立主键可以加快查询效率,从而降低服务器的负担,但是如果没有这样的需求,建立主键反而消耗资源,所以这种情况下就没有必要建立主键了。

有些人认为:虽然在有些数据库中,主键不是必须的,但是最好为每个表都设置一个主键,不管是但主键还是复合主键,它存在代表着表结构的完整性,表的记录必须得有唯一区分的字段,主键主要是用于其他表的外键关联,以及本记录的修改与删除。

主键的作用:

1、  从上面的定义可以看出,主键是用于唯一标识数据库表中一行数据的。

2、  作为一个可以被外键有效引用的对象。

主键的设计原则:

1、  主键应当是对用户没有意义的,比如说用户登陆一个系统的时候的登录id;而这种情况就不可能了:“学生表”需要支持这样的需求“学生注销后,可以重新激活自己的信息,而且还要保持自己的号码跟原来的一直”,这样的话主键就不能满足要求了。

2、  唯一性,这个原则就不用多说了。

3、  非空性:主键的值是不可重复的,也不可以为空。

什么是外键:

外键是建立于表与表之间的联系,方便程序的编写。

外键的特点:

1、  外键保证了数据的完整性

2、  使用外键,简单直观,可以直接在数据模型中体现,无论是设计、维护等等。

3、  外键在调试程序的时候可能会带来一些麻烦。

如何插入外键:

如上图所示,数据库中有三个表,下面我们给news和category表设置关系

如图所示,邮件单击“数据库关系图”,选择“新建数据库关系图”

出现上面的“添加表”

选择要添加的表的名称,将这三个表全部添加到里面去(如下图所示)

我们将news的categoryId设置为category的Id的外键

单击添加按钮

选择上边的“表和列规范”左边的三个小点号的按钮,点开后如下图所示

SQL SERVER 数据库主键和外键的思考相关推荐

  1. sql数据迁移到oracle数据库,从Oracle到SQL Server数据库主键的迁移

    由于项目需要要将以前Oracle的数据库转化为SQL Server,今天利用SQL Server的DTD进行数据库的迁移,但导入以后发现只导入了表结构和数据,而表的一些主键约束都没导过来,感觉很郁闷, ...

  2. 在SQL Server Management Studio 中建立外键约束

    1.要建立外键关系,首先要保证用来建立外键关系的列具有唯一性,即具有 UNIQUE 约束 通常是某表的主键作为另外一个表的外键 2.打开数据库表,找到要建立外键的表.并确保其中要建立外键关系的列与主键 ...

  3. SQL SERVER 数据库清空语句 忽略外键 触发器 等

    1 USE ClothesShop 2 EXECUTE sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL' 3 EXECUTE sp_MS ...

  4. (转)关于数据库主键和外键(终于弄懂啦)

    一.什么是主键.外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键  比如   学生表(学号,姓名,性别,班级)  其中每个学 ...

  5. 关于数据库主键和外键

    一.什么是主键.外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键  比如   学生表(学号,姓名,性别,班级)  其中每个学 ...

  6. 关于数据库主键和外键,索引

    一.什么是主键.外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键 比如 学生表(学号,姓名,性别,班级) 其中每个学生的学号 ...

  7. 关于数据库主键和外键的作用与区别

    一.什么是主键.外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键  比如   学生表(学号,姓名,性别,班级)  其中每个学 ...

  8. 数据库原理与应用(SQL Server)教程 主键、外键以及联合主键、复合主键和设置种子数目和增量

    文章目录 前言 一.主键.联合主键和复合主键 (一)主键 (二)联合主键 (三)复合主键 二.外键.设置种子数目和增量 (一)外键的概念 (二)添加外键 (三)设置种子数目和增量 结语 前言 这篇文章 ...

  9. SQL Server的主键与外键约束

    SQL Server的主键与外键约束SQL Server有许多的重要知识,开始也说过许多的SQL知识了.SQL Server中的约束也是一个重要性的知识,下面我来说说关于SQL Server约束的知识 ...

最新文章

  1. 基于.Net Core开发现代化Web应用程序系列课程和文章
  2. Android Studio2.2.3 通过JNI引用ffmpeg库小结
  3. 数据结构值排序算法(三)-快速排序
  4. 如何从服务器导出文件,如何从云服务器导出文件
  5. yum安装本地rpm包_在 Fedora 中安装替代版本的 RPM 包
  6. 动手学PaddlePaddle(1):线性回归
  7. mysql 主从热备份 5.6 参数_MySQL主从热备份
  8. Hibernate (load PK get and list PK iterator )
  9. 自学TP5源码(一)
  10. iPhone12 系列机型详细配置对比,iPhone 12mini\12\12Pro\12ProMax
  11. 服务器c盘有个inetpub文件夹,inetpub是什么文件夹
  12. mysql timeout的详细介绍
  13. 前端灰度发布 你知多少?
  14. [我教你学]四步解决微软鼠标单击变双击问题
  15. 概率论知识回顾(十):二维连续随机变量分布函数和联合密度函数
  16. 【Agni-s Philosophy】使用的图形技术解说(后篇)Volume渲染和粒子处理
  17. (C语言)用函数实现求三个数最大值
  18. 动态SQL的 if 条件判断
  19. c语言signal函数详细说明
  20. JavaScript百炼成仙 1.18 函数七重关之一 (函数定义)

热门文章

  1. 微信小程序销毁某一注册函数_微信小程序云开发API 删除一条记录
  2. 里氏替换原则_代码需要有单一职责,还要开闭,里氏替换又是什么鬼?
  3. c++如何将int数组中的值取出*号运算符_如何用动态规划巧妙解决 “双十一” 购物时的凑单问题?羊毛薅起来!!!...
  4. a4988 脉宽要求_Allegro MicroSystems - A4988: 带转换器和过流保护的 DMOS 微步驱动器
  5. RS-232/E1协议转换器产品介绍
  6. 工业交换机和商用交换机对比
  7. [渝粤教育] 西南科技大学 动态网页设计(JSP) 在线考试复习资料
  8. 【渝粤教育】电大中专Office办公软件 (4)作业 题库
  9. ida调试linux程序,MAC使用IDA PRO远程调试LINUX程序
  10. assertionerror python_Python成为专业人士笔记–内置模块Modules和函数Functions