外键一定是另外某个表的主键
- 格式:doc
- 大小:12.50 KB
- 文档页数:2
外键的作用:保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。
使两张表形成关联,外键只能引用外表中的列的值!例如:a b 两个表a表中存有客户号,客户名称b表中存有每个客户的订单有了外键后你只能在确信b 表中没有客户x的订单后,才可以在a表中删除客户x建立外键的前提:本表的列必须与外键类型相同(外键必须是外表主键)。
指定主键关键字: foreign key(列名)引用外键关键字: references <外键表名>(外键列名)事件触发限制: on delete和on update , 可设参数cascade(跟随外键改动), restrict(限制外表中的外键改动),set Null(设空值),set Default(设默认值),[默认]no action例如:outTable表主键 id 类型 int创建含有外键的表:create table temp(id int,name char(20),foreign key(id) references outTable(id) on delete cascade on update cascade);说明:把id列设为外键参照外表outTable的id列当外键的值删除本表中对应的列筛除当外键的值改变本表中对应的列值改变。
今天有朋友问我"外键的作用是什么"当朋友问我外键的作用是什么时,我也愣了一下,平常都是在这么用,还没有真正的总结过,外分键的作用呢.下面,我总结了一下外键的作用:外键 (FK) 是用于建立和加强两个表数据之间的链接的一列或多列。
通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。
这个列就成为第二个表的外键。
FOREIGN KEY 约束的主要目的是控制存储在外键表中的数据,但它还可以控制对主键表中数据的修改。
例如,如果在 publishers 表中删除一个出版商,而这个出版商的 ID 在 titles 表中记录书的信息时使用了,则这两个表之间关联的完整性将被破坏,titles 表中该出版商的书籍因为与 publishers 表中的数据没有链接而变得孤立了。
第一章一、解答题1、解释术语:数据、数据库、数据管理系统、数据库系统、数据库应用系统、视图、数据字典。
P19-20数据:是描述现实世界中各种具体事物或抽象概念的、可存储并具有明确意义的信息。
数据库:是相互关联的数据集合。
数据管理系统:是一个通用的软件系统,由一组计算机程序构成。
数据库系统:是一个用户的应用系统得以顺利运行的环境。
数据库应用系统:主要指实现业务逻辑的应用程序。
视图:指不同的用户对同一数据库的每一种理解称为视图。
数据字典:用于存储数据库的一些说明信息的特殊文件。
2、简述数据抽象、数据模型及数据模式之间的关系P26数据模型是数据抽象的工具,是数据组织和表示的方式;数据模式是数据抽象利用数据模型,将数据组织起来后得到的结果;总而言之,数据模式是数据抽象的结果。
3、DBMS应具备的基本功能有哪些?P9数据独立性、安全性、完整性、故障恢复、并发控制4、数据库中对数据最基本的4种操作是什么?P24增加、删除、修改、查询5、评价数据模型的3个要素是什么?P121)能够真实地描述现实系统2)能够容易为业务用户所理解3)能够容易被计算机实现6、数据模型的3个要素是什么?P24数据结构、数据操作、数据约束7、简述SQL语言的使用方式。
P13一般有两种方式:SQL的交互式使用;用户通过开发应用系统与RDBMS交互。
8、在数据库设计时,为什么涉及到多种数据模型?P12因为目前商用化DBMS没有一个能够同时满足3项要求,为此,人们不得不走折中路线,设计一些中间的数据模型。
9、数据库系统中的用户类型有哪些?P28-29最终用户、数据库应用开发人员、数据库管理员、其他与数据库系统有关的人员。
11、简述OLTP与OLAP间的区别。
P42-43OLTP(联机事务处理)主要面向日常的业务数据管理,完成用户的事务处理,提高业务处理效率,通常要进行大量的更新操作,同时对响应时间要求比较高。
OLAP(联机分析处理)注重数据分析,主要对用户当前及历史数据进行分析,辅助领导决策,通常要进行大量的查询操作,对时间的要求不太严格。
【数据库】主键,外键,主表,从表,关联表,⽗表,⼦表⼀、前⾔在设计中,hibernate,iBatis等ORM框架的使⽤中经常听说主键,外键,主表,从表,关联表,⽗表,⼦表之类的术语,弄懂它们之前的区别与联系对于和ORM框架的学习使⽤是⾮常有必要的。
⼆、概述下⾯从数据库设计⾓度,ORM框架使⽤(以Hibernate为例),PowerDesigner软件以及实际业务⾓度进⾏⼀下介绍。
(1) 数据库⾓度⽽⾔主键:⼀般情况下,满⾜第⼀范式的表都有⼀个主键Primary key,⽤于唯⼀标⽰数据库中的⼀个字段。
外键:外键是相对于数据库设计中的参考完整性⽽⾔,它与主键之间是彼此依赖的关系。
假设现在有两个表,产品分类表ProductCategory(主键CategoryId)和产品信息表Product(主键ProductId),每类产品都属于⼀个分类。
那么如果产品信息表肯定需要参考产品分类表进⾏定义。
因为如果没有产品分类表,⼜何谈产品分类呢。
所以产品信息表Product需要引⽤ProductCategory中的主键CategoryId 进⾏产品分类定义,Product表中引⽤CategoryId的字段就是外键。
在概念模型(Concept Model)中,从产品分类⾓度看,产品分类和产品之间就是⼀对多的关系,⼀个分类下可以有多个产品。
从产品⾓度看,产品和产品分类之间是多对⼀的关系,多种产品属于⼀个分类。
主表:在数据库中建⽴的表格即Table,其中存在主键(primary key)⽤于与其它表相关联,并且作为在主表中的唯⼀性标识。
(摘⾃百度百科)从表:以主表的主键(primary key)值为外键 (Foreign Key)的表,可以通过外键与主表进⾏关联查询。
从表与主表通过外键进⾏关联查询。
(摘⾃百度百科)关联表:两个数据库及其(数据)表之间的数据的相互依赖和影响关系。
⽐如现有某学校三个数据表:学⽣(学号,姓名),课程(课程名,课程编号),选课(学号,课程号,成绩)。
MySQL中的外键配置和使用技巧数据库是现代应用程序不可或缺的一部分,而MySQL作为一种广泛应用的关系型数据库管理系统,在开发中扮演着重要的角色。
其中,外键是MySQL中一个重要而有用的特性,它可以用来建立表与表之间的关系,保证数据的完整性和一致性。
本文将深入探讨MySQL中外键的配置和使用技巧。
1. 外键的概念和作用外键是关系型数据库中关联两个表之间关系的一种方法。
通过外键,我们可以在一个表中引入另一个表的主键或者唯一性约束作为一个字段,从而在这两个表之间建立起关联。
这种关联可以用于多个方面,例如对于关联表的更新、插入和删除操作时,外键可以保证数据的完整性,避免数据的不一致。
2. 外键的配置在MySQL中,配置外键需要遵循一些规定和步骤。
首先,我们需要在创建表时明确外键字段,并设置约束类型。
常见的约束类型有CASCADE、SET NULL、SET DEFAULT和RESTRICT等。
- CASCADE表示当外键表的记录被更新或删除时,引用外键表的对应记录也会被更新或删除。
- SET NULL表示当外键表的记录被更新或删除时,引用外键表的对应字段会被置为NULL。
- SET DEFAULT表示当外键表的记录被更新或删除时,引用外键表的对应字段会被置为默认值。
- RESTRICT表示当外键表的记录被更新或删除时,如果存在引用关系,则不允许进行操作。
示例:```CREATE TABLE orders (id INT PRIMARY KEY,customer_id INT,FOREIGN KEY (customer_id) REFERENCES customers (id) ON DELETE CASCADE);```3. 外键的使用技巧在使用外键时,我们可以遵循一些技巧来提高数据库的性能和效率。
- 合理选择外键字段类型:外键字段的类型应尽量与被引用字段的类型一致,这样可以避免类型转换和性能损耗。
- 创建索引:为外键字段和被引用字段创建索引,可以加快检索和关联操作的速度。
一、概述在关系型数据库中,表与表之间的关系是非常重要的。
在Oracle数据库中,表与表之间的关系常常通过主表和外键来进行关联。
主表和外键的关联原理,是数据库设计中的基础知识,对于数据库开发人员来说是必须要了解透彻的。
二、主表和外键的定义1. 主表:主表是数据库中存储数据的基本单位,通常用来存储某种实体的信息,例如存储员工信息的表、订单信息的表等。
主表中的每一行数据都有一个唯一的标识,即主键。
2. 外键:外键是用来关联两个表之间的关系的字段,通常是主表中的主键在另一个表中的引用。
通过外键,可以实现不同表之间的数据关联和约束。
三、主表和外键的关联原理1. 主表和外键的关系:主表和外键的关系是一种父子关系,主表中的每一条记录可以对应外键表中的多条记录,而外键表中的每条记录只能对应主表中的一条记录。
这种关系可以保证数据的一致性和完整性。
2. 外键约束:在Oracle数据库中,可以通过外键约束来保证主表和外键之间的关系的完整性。
当定义外键约束时,可以指定外键字段的值必须存在于主表的主键中,从而保证了数据的完整性。
3. 关联查询:通过主表和外键的关联,可以实现数据的查询和分析。
在查询时,可以使用关联查询来获取主表和外键表中的相关信息,从而实现数据的关联展示。
四、主表和外键的设计原则1. 唯一性:主表的主键必顶是唯一的,而外键表中的外键字段就是对主表中主键的引用,因此外键字段的值也必须是唯一的。
2. 数据完整性:为了保证数据的完整性,在定义外键约束时,需要确保外键表中的外键字段的值必须存在于主表中的主键中,否则就无法插入或更新数据。
3. 可维护性:在设计主表和外键时,需要考虑数据的维护和管理问题。
主表和外键的设计应该符合实际业务需求,从而方便数据的维护和管理。
五、主表和外键的使用场景1. 数据关联:在实际业务开发中,经常会遇到需要关联不同表之间的数据的情况,这时可以通过主表和外键来实现不同表之间的数据关联。
2. 数据约束:通过外键约束,可以保证不同表之间的数据一致性和完整性,防止数据的错误和不一致。
1.两实体间主外键关系就是一对多的关系。
2.学生和班级之间就是一对多关系。
3.班级是一;学生是多4.班级表包含主键(classpk);学生表包含对班级表的引用(classpk)这个引用关系就是通常说的外键,外键即使其他表的主键,在这里学生表中classpk就是来自于班级表中的主键。
所以说:学生表是外键表,班级表是主键表。
5.外键表和主键表的说法主要是用于说明一对多的关系。
6.外键表和主键表其实是相对的,某个表既可以是其他表的主键表,也可以是另一个或者另一些表的外键表,即某个表既可以是外键表也可以是主键表。
如:a 和 b 是 1对多关系,那么a是主键表,b是外键表。
c 和 a 是 1对多关系,那么c是主键表,a是外键表。
综上可以发现a既可以是主键表,又可以是外键表。
主键表体现了1的关系外键表体现了多的关系。
-------------------------------------------7.在外键表中增加一行时数据,必先保证外键已经存在。
就是说插入数据时,外键必须已经存在于主键表中。
(外键就是来源于主键表的主键嘛)例如:先有班级后有学生,插入一个学生必须保证,班级先存在。
8.删除主键表时,必须首先删除主键表关联的所有外键表中的信息。
例如:删除一个班级之前,必须删除首先删除该班级所有的学生。
9.删除外键表中的数据时,对主键表不会有任何影响。
例如:删除一个学生对班级不会有影响。
10.实体之间的多对多关系,其实就是建立一个中间表,中间表包含多对多实体之间的外键。
例如:a 和b 多对多a主键 apkb主键 bpk建立中间表cc包含外键(apk,bpk)两个外键作为c表的复合主键。
删除中间表c的数据,对a,b表不会有影响。
道理同SQL的主键和外键约束SQL的主键和外键的作用:外键取值规则:空值或参照的主键值。
(1)插入非空值时,如果主键表中没有这个值,则不能插入。
(2)更新时,不能改为主键表中没有的值。
数据库设计中的主键和外键使用准则在数据库设计中,主键和外键是两个重要的概念。
它们不仅能够帮助我们组织数据,还能够确保数据的完整性和准确性。
在设计数据库时,合理使用主键和外键是非常重要的。
本文将探讨主键和外键的使用准则,帮助读者更好地理解和运用它们。
1. 主键的使用准则主键是用来唯一标识一张表中的每一行数据的字段。
在选择主键时,我们需要考虑以下准则:选择唯一性高的字段作为主键主键需要具备唯一性,不能存在重复的值。
因此,我们应该选择那些唯一性高的字段作为主键。
例如,在用户表中,可以选择用户ID 作为主键,因为每个用户的ID都是唯一的。
选择稳定不变的字段作为主键主键应该是一个稳定不变的字段,即它的值在整个数据表的生命周期中保持不变。
这样能够确保主键的稳定性,避免在数据更新时引起主键的变动。
例如,在学生表中,可以选择学生的学号作为主键,因为学号一般不会发生改变。
主键不应包含有意义的信息主键最好不包含有意义的信息,而应当是一个生成的标识符。
这样可以避免主键的含义与业务相关,一旦业务需求改变,主键不需要发生变动。
例如,在订单表中,可以选择自增的订单号作为主键,而不是选择用户手机号等具有特定含义的字段。
2. 外键的使用准则外键是用来建立表与表之间关系的字段。
它可以用来确保数据的一致性和完整性。
在使用外键时,我们需要考虑以下准则:确保外键与主键对应外键需要与其他表的主键对应,以建立表之间的关系。
这样可以确保在数据操作中,外键的引用始终指向正确的数据行。
例如,在订单表中,可以添加一个外键指向用户表的主键,表示该订单属于哪个用户。
设置外键约束设置外键约束可以保证引用的数据的完整性。
外键约束可以指定引用的表和字段,并定义引用关系的各种操作,例如级联更新、级联删除等。
这能够确保数据的一致性,防止数据出现脏数据。
例如,在商品表和订单表之间建立一对多的关系时,可以设置级联更新约束,当商品信息发生变化时,相关的订单信息也会自动更新。
MySQL中的主键与外键关系解析MySQL是一种常用的关系型数据库管理系统,被广泛应用于各种网络应用和企业级系统中。
在MySQL中,主键和外键是两个非常重要的概念。
本文将深入解析MySQL中的主键与外键关系,探讨其作用、用法以及相关注意事项。
一、主键的概念与作用主键(Primary Key)是在表中唯一标识每一条记录的一列或一组列。
它具有以下作用:1. 唯一性约束:主键要求每个记录在主键列上的值都是唯一的,不允许重复。
2. 快速索引:主键列会自动在数据库中创建索引,这使得通过主键进行查询和排序等操作更加高效。
3. 数据完整性保护:主键可以保证数据库中的数据完整性,防止数据重复、数据丢失等问题。
二、主键的定义与使用在MySQL中定义主键有两种常见的方式:1. 在创建表时定义主键:```CREATE TABLE 表名 (列名数据类型 PRIMARY KEY,...);```在创建表的过程中,可以通过在列的定义后添加PRIMARY KEY关键字来指定该列作为主键。
如果一个表中存在多个列,也可以将多个列组合成一个主键。
2. 修改已存在的表添加主键:```ALTER TABLE 表名ADD PRIMARY KEY (列名);```使用ALTER TABLE语句可以向已存在的表中添加主键。
在列名后添加PRIMARY KEY关键字即可。
主键的使用需要注意以下几点:1. 主键列的值不能为空:为了保证唯一性约束,主键列的值不能为空。
可以通过在列的定义时添加NOT NULL关键字来确保该列不为空。
2. 主键的选择:主键应该是一个稳定且唯一的值。
一般情况下,可以选择自增长的整数作为主键,也可以选择字符串类型的列,只要保证该列的值在整个表中唯一。
3. 主键的更新:一旦表中的数据被创建,主键的值就不能被更新。
如果需要更改主键的值,只能通过删除原记录,然后插入新记录的方式来实现。
三、外键的概念与作用外键(Foreign Key)是用于建立表与表之间联系的一列或一组列。
什么是外键什么是主键?主键的⽤处?主键保证数据的唯⼀性!⼀张表只能有⼀个主键!⼀个主键不⼀定只是⼀列(因为有可能两列合起来做⼀个主键!)#两列合起来并成⼀个主键create table t1(nid int(11) not null auto_increment,pid int(11) not null,num int(11) not null,primary key(nid,pid))engine=innodb default charset=utf8;#如果另⼀个表的主键是两列的时候,创建外键的话就可以写成两个参数create table t2(id int auto_increment primary key,name char(10),id1 int,id2 int,#创建外键的时候不能外键名不能和已有的外键名重复,可以⽤fk_表名1_表名2来命名constraint fk_t1_t2 foreign key (id1,id2) references t1(nid,pid));⾸先我们有⼀个表。
这⾥是⼀个开发公司,每个⼈有每个⼈的部门再来⼀个表:这⾥我们可以将第⼀个表对应的department填成第⼆个表对应职位的id,变成这样:这样做可以节省空间(假设如果有⼗万个⼈的话,UTF8编码⾥⼀个中⽂可是要占三个字节呀!如果数据⼤的话可以节省很多空间)另外,我们这样就相当于加上了⼀个约束,⽐⽅说我们部门表⾥⾯没有id为10这个部门,那如果在表中写上了部门id为10的部门的话,这样是匹配不到的。
所以这样我们保证了数据表的⼀致性。
外键就是⼀张表中另⼀张表的主键!让他们两个联系起来的东西!。
外键和相应的主键之间的关系
外键一定是另外某个表的主键。
1.能够唯一表示数据表中的每个记录的字段或者字段的组合称为主键,一个主键是唯一识别一个表的每一行记录,但这只是其作用的一部分。
2.主键的主要作用是将记录和存放在其他表中的数据进行关联,在这一点上,主键是不同表中各记录间的简单指针,主键约整就是确定表中的每一条记录。
3.主键不能是空值,唯一约束是用于指定一个或多个列的组合值具有唯一性,以防止在列中输入重复的值,所以,主键的值对用户而言是没有什么意义。
4.若有两个表A,B,C是A的主键,而B中也有C字段,则C就是表B的外键,外键约束主要用来维护两个表之间数据的一致性。
5.在数据库中,常常不只是一个表,这些表之间也不是相互独立的,不同的表之间需要建立一种关系,才能将它们的数据相互沟通。
主键:能够唯一表示数据表中的每个记录的字段或者字段的组合就称为主键。
一个主键是唯一识别一个表的每一行记录,但这只是其作用的一疗分,主键的主要作用是将记录和存放在其他表中的数据进行关联,在这一点上,主键是不同表中各记录间的简单指针,主键约整就是确定表中的每一条记录,主键不能是空值,唯一约束是用于指定一个或多个列的组合值具有唯一性,以防止在列中输入重复的值,所以,主键的值对用户而言是没有什么意义,并且和它赋予的值也没有什么特别联系。
外键:
若有两个表A,B,C是A的主键,而B中也有C字段,则C就是表B的外键,外键约束主要用来维护两个表之间数据的一致性。
A为基本表,B为信息表。
在数据库中,常常不只是一个表,这些表之间也不是相互独立的,不同的表之间需要建立一种关系,才能将它们的数据相互沟通,而在这个沟通过程中,就需要表中有一个字段作为标志,不同的记录对应的字段取值不能相同,也不能是空白的,通过这个字段中不同的值可以区别各条记录,就像我们区别不同的人,每个人都有名字,但它却不能作为主键,因为人名很容易出现重复,而身份证号是每个人都不同
的,所以可以根据它来区别不同的人,数据库的表中作为主键的段段就要像人的身份证号一样,必须是每个记录的值都不同,这才能根据主键的值来确定不同的记录。
关系:外键一定是另外某个表的主键。