SQL SERVER 数据库主键和外键的思考
SQL SERVER 数据库主键和外键的思考
什么是主键:
主键是指表中一个列或者列的组合,其值能够唯一的标识表中的每一个行。这样的一列或者多列成为表的主键,通过它可以强制表的实体完整性。当创建或者更改表时可以通过定义PRIMARY KEY约束来创建主键,一个表只能有一个主键约束,而且主键约束中的列不能是空值,由于主键约束确保唯一数据,所一经常来定义标识列。
每一个表都必须定义一个主键吗?
我个人认为这个问题要看我们的表的功能,利用来存储大量数据,并需要经常查询的,建立主键可以加快查询效率,从而降低服务器的负担,但是如果没有这样的需求,建立主键反而消耗资源,所以这种情况下就没有必要建立主键了。
有些人认为:虽然在有些数据库中,主键不是必须的,但是最好为每个表都设置一个主键,不管是但主键还是复合主键,它存在代表着表结构的完整性,表的记录必须得有唯一区分的字段,主键主要是用于其他表的外键关联,以及本记录的修改与删除。
主键的作用:
1、 从上面的定义可以看出,主键是用于唯一标识数据库表中一行数据的。
2、 作为一个可以被外键有效引用的对象。
主键的设计原则:
1、 主键应当是对用户没有意义的,比如说用户登陆一个系统的时候的登录id;而这种情况就不可能了:“学生表”需要支持这样的需求“学生注销后,可以重新激活自己的信息,而且还要保持自己的号码跟原来的一直”,这样的话主键就不能满足要求了。
2、 唯一性,这个原则就不用多说了。
3、 非空性:主键的值是不可重复的,也不可以为空。
什么是外键:
外键是建立于表与表之间的联系,方便程序的编写。
外键的特点:
1、 外键保证了数据的完整性
2、 使用外键,简单直观,可以直接在数据模型中体现,无论是设计、维护等等。
3、 外键在调试程序的时候可能会带来一些麻烦。
如何插入外键:
如上图所示,数据库中有三个表,下面我们给news和category表设置关系
如图所示,邮件单击“数据库关系图”,选择“新建数据库关系图”
出现上面的“添加表”
选择要添加的表的名称,将这三个表全部添加到里面去(如下图所示)
我们将news的categoryId设置为category的Id的外键
单击添加按钮
选择上边的“表和列规范”左边的三个小点号的按钮,点开后如下图所示
SQL SERVER 数据库主键和外键的思考相关推荐
- sql数据迁移到oracle数据库,从Oracle到SQL Server数据库主键的迁移
由于项目需要要将以前Oracle的数据库转化为SQL Server,今天利用SQL Server的DTD进行数据库的迁移,但导入以后发现只导入了表结构和数据,而表的一些主键约束都没导过来,感觉很郁闷, ...
- 在SQL Server Management Studio 中建立外键约束
1.要建立外键关系,首先要保证用来建立外键关系的列具有唯一性,即具有 UNIQUE 约束 通常是某表的主键作为另外一个表的外键 2.打开数据库表,找到要建立外键的表.并确保其中要建立外键关系的列与主键 ...
- SQL SERVER 数据库清空语句 忽略外键 触发器 等
1 USE ClothesShop 2 EXECUTE sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL' 3 EXECUTE sp_MS ...
- (转)关于数据库主键和外键(终于弄懂啦)
一.什么是主键.外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键 比如 学生表(学号,姓名,性别,班级) 其中每个学 ...
- 关于数据库主键和外键
一.什么是主键.外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键 比如 学生表(学号,姓名,性别,班级) 其中每个学 ...
- 关于数据库主键和外键,索引
一.什么是主键.外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键 比如 学生表(学号,姓名,性别,班级) 其中每个学生的学号 ...
- 关于数据库主键和外键的作用与区别
一.什么是主键.外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键 比如 学生表(学号,姓名,性别,班级) 其中每个学 ...
- 数据库原理与应用(SQL Server)教程 主键、外键以及联合主键、复合主键和设置种子数目和增量
文章目录 前言 一.主键.联合主键和复合主键 (一)主键 (二)联合主键 (三)复合主键 二.外键.设置种子数目和增量 (一)外键的概念 (二)添加外键 (三)设置种子数目和增量 结语 前言 这篇文章 ...
- SQL Server的主键与外键约束
SQL Server的主键与外键约束SQL Server有许多的重要知识,开始也说过许多的SQL知识了.SQL Server中的约束也是一个重要性的知识,下面我来说说关于SQL Server约束的知识 ...
最新文章
- 基于.Net Core开发现代化Web应用程序系列课程和文章
- Android Studio2.2.3 通过JNI引用ffmpeg库小结
- 数据结构值排序算法(三)-快速排序
- 如何从服务器导出文件,如何从云服务器导出文件
- yum安装本地rpm包_在 Fedora 中安装替代版本的 RPM 包
- 动手学PaddlePaddle(1):线性回归
- mysql 主从热备份 5.6 参数_MySQL主从热备份
- Hibernate (load PK get and list PK iterator )
- 自学TP5源码(一)
- iPhone12 系列机型详细配置对比,iPhone 12mini\12\12Pro\12ProMax
- 服务器c盘有个inetpub文件夹,inetpub是什么文件夹
- mysql timeout的详细介绍
- 前端灰度发布 你知多少?
- [我教你学]四步解决微软鼠标单击变双击问题
- 概率论知识回顾(十):二维连续随机变量分布函数和联合密度函数
- 【Agni-s Philosophy】使用的图形技术解说(后篇)Volume渲染和粒子处理
- (C语言)用函数实现求三个数最大值
- 动态SQL的 if 条件判断
- c语言signal函数详细说明
- JavaScript百炼成仙 1.18 函数七重关之一 (函数定义)
热门文章
- 微信小程序销毁某一注册函数_微信小程序云开发API 删除一条记录
- 里氏替换原则_代码需要有单一职责,还要开闭,里氏替换又是什么鬼?
- c++如何将int数组中的值取出*号运算符_如何用动态规划巧妙解决 “双十一” 购物时的凑单问题?羊毛薅起来!!!...
- a4988 脉宽要求_Allegro MicroSystems - A4988: 带转换器和过流保护的 DMOS 微步驱动器
- RS-232/E1协议转换器产品介绍
- 工业交换机和商用交换机对比
- [渝粤教育] 西南科技大学 动态网页设计(JSP) 在线考试复习资料
- 【渝粤教育】电大中专Office办公软件 (4)作业 题库
- ida调试linux程序,MAC使用IDA PRO远程调试LINUX程序
- assertionerror python_Python成为专业人士笔记–内置模块Modules和函数Functions