Chapter 1. 数据库概述、主键、外键

数据库 database:

存储数据的仓库,用表来分类数据

特点:海量存储;查找速度快;并发性问题的控制;安全性;数据完整性(保存在数据库中的数据是正确的真实的)

数据库软件:DBSM   database management system

常见数据库软件:MySQL  MSSQL server  Oracle  Access

SQL:Structured Query Language 结构化查询语言   特点:语言简洁、易学易用。

SQL Server:是一种基于网络的大型数据库软件。主要用SQL语言来管理、修改数据库

数据库的文件组成:

.mdf 主要文件

.ndf 次要文件

.ldf 日志文件

主键 primary key

作用:唯一标识表中的一条记录

特点:不能重复;不能为空(null)

分类:

(根据储存的信息不同)业务主键;逻辑主键

(列数不同)单列主键;多列主键(组合主键、联合主键、复合主键)

选择:

不为空的列;

与实际业务没有关系的列(逻辑主键);

稳定的列(列中保存的数据不经常变化);

最好是单列;

尽量选择数字类型作为主键

注意:

1、        一个表中只能有一个主键,当建立主键后,默认会建立索引,而实际数据在磁盘上存储的顺序和主键列的顺序是一致的,因为实际的物理顺序只能有一种,所以一个表中只能有一个主键。

2、        创建完一个表后,可以不设主键,但是建议每张表都有一个主键。

外键 foreign key

数据冗余的问题:

1、        造成存储空间的浪费

2、        更新异常,删除异常

解决数据冗余的问题:

把原来表中的数据拆分成多个表来存储。使用主键和外键把多个表的数据关联起来。

外键:

当把数据拆分成两张表来存储的时候,每个表都有自己的主键。其中一张表中,除了主键外,又多了一列,这列用来引用另外一张表中的主键,那么这列就是第一张表的“外键列”,有外键列的表就叫做“外键表”,相对来说,主键被引用的那张表就叫做“主键表”。

因为外键列中引用的是另外一张表中的主键列的数据,所以外键列中的数据是不能随便写的,必须是在另外一张表中的主键列中已经存在的数据。

时间: 2024-10-27 09:08:02

Chapter 1. 数据库概述、主键、外键的相关文章

数据库主从表、关系;主、外键关系和作用

从数据库是主数据库的备份,当主数据库变化时从数据库要更新,这些数据库软件可以设计更新周期.这是提高信息安全的手段.主从数据库服务器不在一个地理位置上,当发生意外时数据库可以保存.主外键的关系结构:1,一对一,不用引用主外键,把它们放一个表中即可例如:一个学生只能有一个卡号,那么学生跟卡号放在一个表中即可2,一对多,引用主外键,'一'相当于主键,'多'即是引用主键的外键.例如:一个班级可以有多个学生,并且一个学生只能属于一个班级,这就是一对多的关系:3,多对多关系,需要创建一个表,表中需要两个字段

通过 jdbc 分析数据库中的表结构和主键外键

文章转自:http://ivan4126.blog.163.com/blog/static/20949109220137753214811/ 在某项目中用到了 hibernate ,大家都知道 hibernate 是 ORM 框架,他是有能力根据实体生成数据库表的.我们在单元测试的时候用到了 dbUnit ,dbUnit 可以帮助我们在测试前把数据库的测试数据准备好,然后我们就利用现成的数据库环境测试,测试完成后需将数据库中的所有数据清除(为了不影响其他的单元测试),然后接着下一个测试.虽然已经

Sql Server 主键 外键约束

主键约束 表通常具有包含唯一标识表中每一行的值的一列或一组列. 这样的一列或多列称为表的主键 (PK),用于强制表的实体完整性. 由于主键约束可保证数据的唯一性,因此经常对标识列定义这种约束. 如果为表指定了主键约束, 数据库引擎 将通过为主键列自动创建唯一索引来强制数据的唯一性. 当在查询中使用主键时,此索引还允许对数据进行快速访问. 如果对多列定义了主键约束,则一列中的值可能会重复,但来自主键约束定义中所有列的值的任何组合必须唯一. 如下图所示, Purchasing.ProductVend

数据库系统基础笔记(3)--主键/外键 索引

本文转载自:http://www.cnblogs.com/longyi1234/archive/2010/03/24/1693738.html 作者:蔚蓝色的天空 一.什么是主键.外键 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键 比如 :  学生表 (学号,姓名,性别,班级)  其中每个学生的学号是唯一的,学号就是一个主键  课程表(课程编号,课程名,学分)  其中课程编号是唯一的,课程编号就是一个主键  成绩表(学号,课

SQL主键&外键

SQL的主键和外键约束 SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除. (4)更新主键记录时,同样有级联更新和拒绝执行的选择. 简而言之,SQL的主键和外键就是起约束作用. 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键. 比如: 学

MySQL主键 外键 索引

一.什么是主键.外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键比如 : 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一的,学号就是一个主键 用户表(用户名.密码.登录级别) 其中用户名是唯一的, 用户名就是一个主键 上机记录表(卡号,学号,姓名.序列号) 上机记录表中单一一个属性无法唯一标识一条记录,学号和姓名的组合才可以唯一标识一条记录,所以 学号和姓名的属性组是一个主键 上机记录表中的序列号不是成绩表的

主键外键

主键 外键 唯一键 CHECK约束 主键:是唯一的,不可重复的,它能提高查询效率,但是会减慢新增数据效率 外键:主键是本张表的主键,是唯一且非空的,而外键是另一张表中与这张表的某个字段的类型,字段名相同的字段,一般是用作关联两张或两张以上的数据表时用的. 外间的取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除.(4)更新主键记录时,同样有

数据库到底用不用外键

最近工作中用到powerdesigner ,前期需要通过powerdesigner生成表结构,后来由于负责人员不在,很多表结构的添加没有同步到powerdesigner,一个个核对表结构着实麻烦,于是想到到反向生成模型,但数据库没有外键关系导致生成的模型也没有外键.对项目中不用外键感到好奇于是问了相关人员原因,并简单了解了外键的特点和使用场景.为了进一步了解,在网上找了相关文章以下为转载的原文链接: http://www.cnblogs.com/pengxl/archive/2010/06/11

数据库中创建表(包括创建主键,外键,非空列,唯一)

创建表(包括创建主键,外键,非空列,唯一) - PROS - 博客园 http://www.cnblogs.com/CodingArt/articles/1621921.html **************** 创建主键(三种方法) **************** 创建学生表: 第一种: create table student (sno char(5) primary key,/*学号*/ /*可以直接指定主键*/ sname char(20) not null,/*姓名*/ ssex c

sql数据库删除表的外键约束(INSERT 语句与 FOREIGN KEY 约束"XXX"冲突。该冲突发生于数据库"XXX",表"XXX", column 'XXX)

使用如下SQL语句查询出表中外键约束名称: 1 select name 2 from sys.foreign_key_columns f join sys.objects o on f.constraint_object_id=o.object_id 3 where f.parent_object_id=object_id('表名') 执行如下SQL语句删除即可. 1 alter table 表名 drop constraint 外键约束名 sql数据库删除表的外键约束(INSERT 语句与 F