数据库主键和外键的作用

合集下载

数据库的几个概念:主键,外键,索引,唯一索引

数据库的几个概念:主键,外键,索引,唯一索引

数据库的几个概念:主键,外键,索引,唯一索引主键:主键是数据表的唯一索引,比如学生表里有学号和姓名,姓名可能有重名的,但学号确是唯一的,你要从学生表中搜索一条纪录如查找一个人,就只能根据学号去查找,这才能找出唯一的一个,这就是主键;如:id int(10) not null primary key auto_increment ;自增长的类型;外键:定义数据表假如某个电脑生产商,它的数据库中保存着整机和配件的产品信息。

用来保存整机产品信息的表叫做 Pc;用来保存配件供货信息的表叫做Parts。

在Pc表中有一个字段,用来描述这款电脑所使用的CPU型号;在Parts 表中相应有一个字段,描述的正是CPU的型号,我们可以把它想成是全部CPU的型号列表。

很显然,这个厂家生产的电脑,其使用的CPU一定是供货信息表(parts)中存在的型号。

这时,两个表中就存在一种约束关系(constraint)——Pc表中的CPU型号受到Parts 表中型号的约束。

首先我们来创建 parts 表:CREATE TABLE parts (... 字段定义 ...,model VARCHAR(20) NOT NULL,... 字段定义 ...);接下来是Pc表:CREATE TABLE pc (... 字段定义 ...,cpumodel VARCHAR(20) NOT NULL,... 字段定义 ...};设置索引若要设置外键,在参照表(referencing table,即Pc表) 和被参照表(referenced table,即parts表) 中,相对应的两个字段必须都设置索引(index)。

对Parts表:ALTER TABLE parts ADD INDEX idx_model (model);这句话的意思是,为 parts 表增加一个索引,索引建立在 model 字段上,给这个索引起个名字叫idx_model。

对Pc表也类似:ALTER TABLE pc ADD INDEX idx_cpumodel (cpumodel);事实上这两个索引可以在创建表的时候就设置。

数据库中的主键与外键介绍

数据库中的主键与外键介绍

2手动增长型字段既然自动增长型字段会带来如此的麻烦,我们不妨考虑使用手动增长型的字段,也就是说主键的值需要自己维护,通常情况下需要建立一张单独的表存储当前主键键值。还用上面的例子来说,这次我们新建一张表叫IntKey,包含两个字段,KeyName以及KeyValue。就像一个HashTable,给一个KeyName,就可以知道目前的KeyValue是什么,然后手工实现键值数据递增。在SQL
Server中可以编写这样一个存储过程,让取键值的过程自动进行。代码如下:
CREATE PROCEDURE[GetKey]
@KeyNamechar(10),
@KeyValue intOUTPUT AS UPDATE IntKey SET @KeyValue =KeyValue = KeyValue + 1
定义主键和外键主要是为了维护关系数据库的完整性,总结一下:
主键是能确定一条记录的唯一标识,比如,一条记录包括身份证号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。
外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。
COMB数据类型的基本设计思路是这样的:既然UniqueIdentifier数据因毫无规律可言造成索引效率低下,影响了系统的性能,那么我们能不能通过组合的方式,保留UniqueIdentifier的前10个字节,用后6个字节表示GUID生成的时间(DateTime),这样我们将时间信息与UniqueIdentifier组合起来,在保留UniqueIdentifier的唯一性的同时增加了有序性,以此来提高索引效率。也许有人会担心UniqueIdentifier减少到10字节会造成数据出现重复,其实不用担心,后6字节的时间精度可以达到1/300秒,两个COMB类型数据完全相同的可能性是在这1/300秒内生成的两个GUID前10个字节完全相同,这几乎是不可能的!在SQL

主键和外键

主键和外键

主键和外键
主键:
能够唯一表示数据表中的每个记录的字段或者字段的组合就称为主键。

一个主键是唯一识别一个表的每一行记录,但这只是其作用的一疗分,主键的主要作用是将记录和存放在其他表中的数据进行关联,在这一点上,主键是不同表中各记录间的简单指针,主键约整就是确定表中的每一条记录,主键不能是空值,唯一约束是用于指定一个或多个列的组合值具有唯一性,以防止在列中输入重复的值,所以,主键的值对用户而言是没有什么意义,并且和它赋予的值也没有什么特别联系。

外键:
若有两个表A,B,C是A的主键,而B中也有C字段,则C就是表B的外键,外键约束主要用来维护两个表之间数据的一致性。

A为基本表,B为信息表。

在数据库中,常常不只是一个表,这些表之间也不是相互独立的,不同的表之间需要建立一种关系,才能将它们的数据相互沟通,而在这个沟通过程中,就需要表中有一个字段作为标志,不同的记录对应的字段取值不能相同,也不能是空白的,通过这个字段中不同的值可以区别各条记录,就像我们区别不同的人,每个人都有名字,但它却不能作为主键,因为人名很容易出现重复,而身份证号是每个人都不同的,所以可以根据它来区别不同的人,数据库的表中作为主键的段段就要像人的身份证号一样,必须是每个记录的值都不同,这才能根
据主键的值来确定不同的记录。

关系:外键一定是另外某个表的主键。

数据库中的主键与外键的关系,通俗易懂

数据库中的主键与外键的关系,通俗易懂

数据库中的主键与外键的关系,通俗易懂在设计关系型数据库时,主键和外键是两个非常重要的概念。

主键和外键之间有密切的关系,它们在数据库中起着至关重要的作用。

本文将介绍主键和外键及其之间的关系,旨在让读者更好地理解这些概念。

一、主键的定义主键是指在关系数据库中唯一标识一条记录的字段或一组字段。

它能够保证数据库表中每个元素的唯一性,即每个元素都有其独特的主键值。

主键通常包括表中的一个或多个列,能够帮助我们更快速地搜索、更新、删除数据。

例如,在一个存储学生信息的表中,每个学生都有唯一的学号,因此可以将学号设为主键。

二、外键的定义外键是指在关系数据库中链接两个表之间关系的一列或多列。

它指向另一个表的主键,并且其值必须与那个主键相对应。

外键可用于保证数据完整性,例如在一个课程表和学生信息表中,课程表中可以使用学生信息表的学号列作为外键,以表现学生和其所选课程之间的关系。

三、主键和外键的关系在关系型数据库中,主键和外键之间的关系非常密切。

通过主键和外键的链接,我们可以建立不同表之间的关系,实现数据的连接和共享。

具体地说,主键和外键之间可以建立如下关系:1.主键可以作为外键的来源在关系型数据库中,可以将一个表的主键列引用另一个表的主键,以此建立两个表之间的关系。

这是一种非常常见的操作,例如在一个数据仓库中,可能有多个维度表与事实表共同工作,维度表中的主键被用作事实表的外键。

2.外键引用主键外键是通过引用另一个表的主键来建立的。

当在外键上插入新值时,系统会检查该值是否存在于关联的主键中。

如果值不存在,则插入操作将失败,从而保证了数据表之间的关联性和完整性。

3.主键和外键可以形成复合键在有些情况下,一个表不仅有一个主键,还有多个列,可以用这些列来联合参加主键的建立,这就是复合键。

同样,一个外键可以由多列来共同构成。

复合键的优势在于提供更严格的数据完整性约束,防止了重复数据和非法数据的产生。

总之,主键和外键是关系型数据库设计中最基本的概念之一。

主键和外键的作用

主键和外键的作用

主键和外键的作用1.主键的作用:主键是一种用于唯一标识表中每一行记录的字段或字段组合。

主键具有以下几个作用:1.1唯一标识记录:主键字段的值在表中必须是唯一的,不可重复。

通过主键,可以在表中快速准确地定位和识别特定的记录。

1.2确保数据完整性:主键的存在可以确保数据的完整性。

每一行记录都必须有一个主键值,如果一些记录没有主键值,则违反了数据完整性的原则。

主键可以避免数据的冗余和重复,保证数据的一致性。

1.3帮助建立表之间的关系:主键可以用来建立表与表之间的关联关系。

在多表查询或者数据检索时,可以通过主键关联两个或多个表的记录,实现表之间的数据一致性和准确性。

1.4作为外键的参照对象:主键可以被其他表中的字段引用作为外键,用于建立表之间的关联关系。

在外键关系中,主键扮演着被引用的角色,提供数据一致性和数据完整性的保证。

2.外键的作用:外键是一种存在于一个表中,但是指向其他表中主键的字段。

外键的作用如下:2.1建立表之间的关系:外键可以用来建立表与表之间的关联关系。

通过外键,可以将多个表中的数据关联起来,为数据库的设计提供了一种有效的方式。

2.2提供数据一致性和完整性的保证:通过外键,在多表操作或者数据检索时,可以确保数据的一致性和完整性。

外键可以限制在一个表中插入、更新或删除数据的操作,保证了数据的准确性和一致性。

2.3实现数据级联操作:外键可以实现数据级联操作。

当主表中的记录被删除或者更新时,通过外键的约束关系,会自动触发对应的从表中的记录的删除或更新操作,保证数据的完整性和一致性。

2.4处理表之间的关系:外键可以处理表之间的关系,如一对多关系、多对多关系等。

通过外键,可以实现表之间的连接、关联和查询,提供了数据的灵活性和可扩展性。

综上所述,主键和外键在关系数据库中发挥着重要的作用,不仅可以确保数据的完整性和一致性,还可以建立表与表之间的关联关系。

主键用于唯一标识记录,保证数据的完整性和准确性,同时用作外键的参照对象。

数据库设计中的主键和外键使用准则(八)

数据库设计中的主键和外键使用准则(八)

数据库设计中的主键和外键使用准则在数据库设计中,主键和外键是两个重要的概念。

它们用于建立数据表之间的关系,确保数据的完整性和一致性。

然而,在实际的设计过程中,很多人在使用主键和外键时存在一些困惑和误解。

本文将探讨主键和外键的使用准则,帮助读者更好地理解和应用它们。

1. 主键主键是用于唯一标识数据表中的每一行记录的字段或字段组合。

它具有以下几个特点:(1)主键的值在整个数据表中必须是唯一的,不能重复。

(2)主键的值不能为空,即不能为NULL。

(3)主键的值是不可变的,一旦确定就不能再修改。

在选择主键时,应注意以下几点:(1)选择唯一标识一行记录的字段或字段组合作为主键。

(2)尽量选择较短的字段作为主键,可以提高查询效率。

(3)避免选择经常变化的字段作为主键,这样可以减少更新操作的开销。

(4)考虑使用自增长字段作为主键,可以简化插入操作。

(5)不要使用业务相关的字段作为主键,以防止将来需求变化导致主键变化。

2. 外键外键用于建立不同数据表之间的关系,确保数据之间的一致性。

它具有以下几个特点:(1)外键是一个指向另一个数据表主键的字段。

(2)外键的值可以为NULL,表示该记录与其他记录没有关联。

(3)外键的值必须是在被关联表的主键值中存在的。

在使用外键时,应注意以下几点:(1)外键的命名应该具有描述性,清楚表示它与所关联表的关系。

(2)尽量限制外键字段的数据类型与长度与所关联表主键字段一致,以避免数据类型不匹配的错误。

(3)在创建外键时,应设定合适的级联操作,如级联更新或级联删除,以确保关联关系的完整性。

(4)外键的使用应尽量遵循数据库设计规范,避免滥用或误用。

3. 主键与外键的关系主键和外键是数据库设计中密不可分的概念。

它们之间的关系可以总结为以下几点:(1)主键可以作为外键的参照对象,即一个数据表的主键可以作为其他表的外键。

(2)外键必须引用主键,确保引用的数据是有效的。

(3)外键的引用关系可以建立多对一、一对一、多对多等多种关系。

说明超键候选键主键外键的联系和区别

说明超键候选键主键外键的联系和区别

说明超键候选键主键外键的联系和区别超键、候选键、主键和外键是关系数据库中常用的概念,它们用于定义和约束数据实体之间的关系以及数据的完整性。

以下将详细说明超键、候选键、主键和外键之间的联系和区别。

一、超键超键是指可以唯一标识关系模式中的元组(数据记录)的一个或多个属性的集合。

简单来说,超键是在给定关系模式中,能够唯一标识一个元组的属性集合。

超键中的属性可以是关系模式中的任意属性,它可以是单个属性或多个属性的组合。

举例来说,对于一个关系模式R(A,B,C,D),其中A、B、C、D为属性,(A, B)、(A, C)、(A, B, C)、(A, D)、(B, D)等都是R的超键,它们都能够唯一标识R中的元组。

超键可以作为候选键和主键的基础,它们之间没有直接的联系和区别。

二、候选键候选键是指能够唯一标识一个关系模式中元组的属性集合。

简单来说,候选键是超键的子集,它们的属性组合能够唯一标识一个元组。

在一个关系模式中,可能存在多个候选键。

候选键必须满足两个条件:唯一性和最小性。

唯一性指候选键的属性组合能够唯一标识一个元组,即不存在重复的元组。

最小性指候选键的属性组合中任何一个属性去掉后,就不能唯一标识一个元组。

举例来说,对于一个关系模式R(A,B,C,D),其中A、B、C、D为属性,(A, B)、(A, C)、(A, B, C)都是R的候选键,它们的属性组合能够唯一标识R中的元组,并且不能再去掉任何一个属性。

候选键可以作为主键的候选,主键的选择一般是从候选键中选取的。

候选键也可以作为外键的参照。

三、主键主键是在关系模式中选择的一个候选键,用来唯一标识关系模式中的元组。

简单来说,主键是一个关系模式中能够唯一标识一个元组的属性组合。

主键必须满足两个条件:唯一性和非空性。

唯一性指主键的属性组合能够唯一标识一个元组,即不存在重复的元组。

非空性指主键的属性组合中的任何一个属性都不能为空。

根据实际需求和关系模式的特点,可以选择一个或多个属性作为主键,但主键值必须在整个关系模式中是唯一的。

sqlite数据库外键详解

sqlite数据库外键详解

sqlite数据库外键详解Sqlite数据库外键是指在一个表中,通过引用另一个表中的列来约束数据完整性。

外键主要用于确保数据的参照完整性,防止数据在两个表之间的不一致。

Sqlite支持两种类型的外键约束:主键(PRIMARY KEY)和外键(FOREIGN KEY)。

以下是Sqlite数据库外键的详细解释:1. 主键(PRIMARY KEY):主键是表中唯一的一列或几列,用于唯一标识表中的每一行数据。

在一个表中,只能有一个主键。

主键列不能包含空值(NULL)。

创建主键的语法如下:```CREATE TABLE table_name (column1 data_type,column2 data_type,...,PRIMARY KEY (column1, column2, ...));```2. 外键(FOREIGN KEY):外键是表中的一列或几列,用于引用另一个表中的列。

外键约束规定,表中的数据在插入或更新时,必须满足参照关系。

外键可以包含空值(NULL),但引用的目标列不能包含空值。

创建外键的语法如下:```CREATE TABLE table_name (column1 data_type,column2 data_type,...,FOREIGN KEY (column1, column2, ...) REFERENCES another_table(column1, column2, ...));```其中,`another_table`是引用的目标表,`column1, column2, ...`表示目标表中的列。

3. 外键约束的作用:外键约束有助于维护数据的一致性和完整性。

当尝试插入或更新数据时,Sqlite会检查外键约束是否满足。

如果不满足,插入或更新操作将失败。

例如,有一个订单表(orders)和用户表(users),订单表中有用户ID(user_id)列,用户表中有主键ID(id)列。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据库主键和外键的作用
首先介绍一下什么是主键、什么是外键。

1 什么是主键外键
学生表(学号,姓名,性别,班级) ? 学号是一个主键
课程表(课程号,课程名,学分) 课程号是一个主键
成绩表(学号,课程号,成绩) 学号和课程号的属性组构成一个主键
成绩表中的学号不是成绩表的主键,不过是学生表的主键,成绩表的外键,同理课程号也是成绩表的外键
定义:如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键
以一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表
2 外键的作用
外键用于保持数据一致性,完整性
主要目的是控制存储在外键表中的数据
3 主键的设计原则
1)主键应当是对用户没有意义的
2)主键应该是单列的,以提高连接和筛选操作的效率
复合键的使用通常出于两点考虑:
a)主键应当具有意义-----这为认为的破坏数据库提供了方便
b)在描述多对多关系的连接表中可以使用两个外部键作为主键------该表可能成为其他从表的主表,并成为从表的主键的一部分,使得之后的从表包含更多的列
3)永远不要更新主键
4)主键不应该包含动态变化的数据(时间戳等)
5)主键应当由计算机自动生成
4 数据库主键选取策略
建立数据库的时候,需要为每张表指定一个主键(一个表只能有一个主键,但是可以有多个候选索引)
常见的主键选取方式有:
1)自动增长型字段
自动增长型主键会省略很多繁琐的工作,但在数据缓冲模式下,不能预先填写主键与外键的值
Order(OrderID,OrderDate)? //主键OrderID是自动增长型字段
OrderDetail(OrderID,LineNum,ProductID,Price)
如果要在Order表中插入一条记录,在OrderDetail表中插入若干条记录,为了能在OrderDetail表中插入正确的OrderID字段,必须先更新Order表以获得系统系统分配的OrderID,但是为了确保数据一致性,Order表和OrderDetail表必须在事务保护下同时进行更新,这显然是矛盾的
除此之外,当需要在多个数据库之间进行数据复制时,自动增长型字段可能造成主键冲突
2)手动增长型字段
3)使用UniqueIdentifier SQL Server提供一个UniqueIdentifier数据类型(16字节),并提供一个生成函数NEWID(),生成一个唯一的UniqueIdentifier
4)使用COMB类型
保留UniqueIdentifier的前10字节,后6字节表示生成时间
----------------------------------------------------------------------------------------------------------------------
1 外键
外键(FK)是用于建立或加强两个表数据之间的链接的一列或多列。

通过将表中主键值的一列或多列添加到另一个表中,可创建两个表之间的连接,这个列就成为第二个表的外键
FK约束的目的是控制存储在外表中的数据,同时可以控制对主键表中数据的修改
例如:publishers表中记录出版商的信息,titles表中记录书的信息,如果在publishers的表中删除一个出版商,而这个出版商的ID在titles表中记录书的信息时被使用了,则这两个表之间关联的完整性将被破坏,即titles表中该出版商的书籍因为与publisher表中的数据没有链接而变的孤立。

FK约束可以防止这种情况的发生,如果主键表中数据的更改使得与外键表中数据的链接失效,则这种更改是不能实现的;如果试图删除主键表中的行或试图修改主键值,而该主键值与另一个表的FK约束值相关,则该操作不可实现。

若要成功的更改或删除FK约束的行,可以现在外键表中删除外键数据或更改外键数据,然后将外键连接到不同的主键数据上去
外键主要是用来控制数据库中的数据完整性的,当对一个表的数据进行操作时,和他有关联的一个表或多个表的数据能够同时发生改变
例子:
A(a,b) :a为主键,b为外键(来自于
B(b,c,d) :b为主键
A中的b字段要么为空,要么为B 表中存在的b值。

相关文档
最新文档