外键到底是用来干嘛的?谢谢 [问题点数:100分,结帖人wowglr]

一键查看最优答案

确认一键查看最优答案?
本功能为VIP专享,开通VIP获取答案速率将提升10倍哦!
Bbs1
本版专家分:0
结帖率 100%
Bbs1
本版专家分:0
Bbs7
本版专家分:17009
Bbs7
本版专家分:14040
Blank
蓝花 2010年9月 MS-SQL Server大版内专家分月排行榜第三
Bbs3
本版专家分:889
Blank
黄花 2013年11月 Web 开发大版内专家分月排行榜第二
Blank
蓝花 2013年10月 Web 开发大版内专家分月排行榜第三
Bbs7
本版专家分:14040
Blank
蓝花 2010年9月 MS-SQL Server大版内专家分月排行榜第三
Bbs1
本版专家分:0
Bbs2
本版专家分:230
Bbs8
本版专家分:46185
Blank
红花 2008年11月 .NET技术大版内专家分月排行榜第一
Blank
黄花 2008年10月 .NET技术大版内专家分月排行榜第二
Bbs1
本版专家分:0
Bbs7
本版专家分:14040
Blank
蓝花 2010年9月 MS-SQL Server大版内专家分月排行榜第三
Bbs7
本版专家分:17009
Bbs1
本版专家分:0
Bbs3
本版专家分:944
Bbs1
本版专家分:0
Bbs1
本版专家分:75
Bbs8
本版专家分:46185
Blank
红花 2008年11月 .NET技术大版内专家分月排行榜第一
Blank
黄花 2008年10月 .NET技术大版内专家分月排行榜第二
Bbs1
本版专家分:0
Bbs1
本版专家分:75
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs8
本版专家分:46185
Blank
红花 2008年11月 .NET技术大版内专家分月排行榜第一
Blank
黄花 2008年10月 .NET技术大版内专家分月排行榜第二
Bbs9
本版专家分:55400
Blank
黄花 2009年4月 .NET技术大版内专家分月排行榜第二
2009年3月 .NET技术大版内专家分月排行榜第二
Blank
蓝花 2009年5月 .NET技术大版内专家分月排行榜第三
Bbs1
本版专家分:75
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs1
本版专家分:10
Bbs8
本版专家分:30422
Bbs1
本版专家分:0
Bbs1
本版专家分:75
Bbs1
本版专家分:75
Bbs1
本版专家分:10
Bbs4
本版专家分:1440
Bbs5
本版专家分:3853
Bbs5
本版专家分:2377
Bbs1
本版专家分:10
Bbs1
本版专家分:0
Bbs7
本版专家分:16677
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs7
本版专家分:14040
Blank
蓝花 2010年9月 MS-SQL Server大版内专家分月排行榜第三
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs2
本版专家分:487
这个约束名是什么
create table Student ( Sno char(9) primary key, Sname char(20) unique, Ssex char(2), Sage smallint,
SVN —— 为什么,是什么,怎么用
为什么: 当很多
Navicat添加详细操作
前言 用Navicat为mysql数据库的两个表之间建立<em>外</em><em>键</em>关系,出现“cannot add foreign key constraint”错误,操作了很久不知道怎么回事,发现竟然是。。。。 正文 想要建立class表与student表之间的<em>外</em><em>键</em>连接,class为父表,student为子表 打开student的设计表。     如果c_id不允许为空则当,选择删除时--&amp;...
Python中的id函数到底是什么?
Python中官方文档给出的解释是
VO层是干嘛用的?
看他们那些代码分层,分了一个VO层,可是里面什么逻辑也没有,只有一些属性和getter、setter方法,这是为什么呢?
Oracle 创建及使用
一 什么是<em>外</em><em>键</em> (1)在oracle数据库中,<em>外</em><em>键</em>是指在表(父表)中定义<em>外</em><em>键</em>的字段的列的值必须在另一张表(子表)中出现。<em>外</em><em>键</em>是用来实现参照完整性的方法之一。 (2)被参照的表称为父表,创建<em>外</em><em>键</em>的表称为子表。子表中的<em>外</em><em>键</em>关联的是父表中的主<em>键</em> (3)<em>外</em><em>键</em>可以在建表的时候定义,也可以通过alter table语句来创建。 二 创建表定义<em>外</em><em>键</em> a. 建表的时候定义 CREATE TABLE t
mysql设置方式
mysql<em>外</em><em>键</em>设置方式/在创建索引时,可指定在delete/update父表时,对子表进行的相应操作, 包括: restrict, cascade,set null 和 no action ,set default. restrict,no action: 立即检查<em>外</em><em>键</em>约束,如果子表有匹配记录,父表关联记录不能执行 delete/update 操作; cascade: 父表delete...
多对一 多对多
a表有aid,aname,asex,c表有cid,cname,csex,中间表b 有bid,cid 问1:在多对一的关系中,中间表的bid,cid要不要设置<em>外</em><em>键</em>, hbm文件中是不是只在中间表写多对一
4.引用的优缺点
作用:保持数据的一致性、完整性 为何说<em>外</em><em>键</em>有性能问题:1.数据库需要维护<em>外</em><em>键</em>的内部管理;2.<em>外</em><em>键</em>等于把数据的一致性事务实现,全部交给数据库服务器完成;3.有了<em>外</em><em>键</em>,当做一些涉及<em>外</em><em>键</em>字段的增,删,更新操作之后,需要触发相关操作去检查,而不得不消耗资源;4.<em>外</em><em>键</em>还会因为需要请求对其他表内部加锁而容易出现死锁情况; 数据库<em>外</em><em>键</em>的使用以及优缺点摘录网上讨论共同观点:主<em>键</em>和索引是不可少的,不仅可以优化数据检...
的作用?
<em>外</em><em>键</em>是数据库一级的一个完整性约束,就是数据库基础理论书中所说的“参照完整性”的数据库实现方式。         <em>外</em><em>键</em>属性当然是可以去掉的,如果你不想再用这种约束,对编程当然不会有什么影响,但相应的录入数据的时候就不对录入的数据进行“参照完整性”检查了。       例如有两个表     A(a,b)   :a为主<em>键</em>,b为<em>外</em><em>键</em>(来自于B.b)     B(b,c,d)   :b为主<em>键</em>      如果
查询
1.查询该表的主<em>键</em>被那些表作为<em>外</em><em>键</em>使用: SELECT B.TABLE_NAME FROM ALL_CONSTRAINTS A, ALL_CONSTRAINTS B WHERE A.TABLE_NAME = '表名' AND A.OWNER = SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA') AND B.OWNER = SYS_CONTEXT('USEREN...
和索引的区别
主<em>键</em>、<em>外</em><em>键</em>和索引的区别? 主<em>键</em><em>外</em><em>键</em>索引定义:唯一标识一条记录,不能有重复的,不允许为空表的<em>外</em><em>键</em>是另一表的主<em>键</em>, <em>外</em><em>键</em>可以有重复的, 可以是空值该字段没有重复值,但可以有一个空值作用:用来保证数据完整性用来和其他表建立联系用的是提高查询排序的速度个数:主<em>键</em>只能有一个
数据库创建的两种方式
create table dept( dId number, dName varchar2(20) ) emptycreate table emp( eId number, constraint fk_depID FOREIGN KEY(eID) REFERENCES dept(dID) ) create table emp( eID number
约束 foreign key constraint
如果表A的主关<em>键</em>字是表B中的字段,则该字段称为表B的<em>外</em><em>键</em>,表A称为主表,表B称为从表。<em>外</em><em>键</em>是用来实现参照完整性的。 比如说: create table t_group ( id int not null, name varchar(30), primary key (id) ); insert into t_group ...
应该使用
个人建议不使用<em>外</em><em>键</em> <em>外</em><em>键</em>增加了表结构变更及数据迁移的复杂性 <em>外</em><em>键</em>对插入,更新的性能有影响,需要检查主<em>外</em><em>键</em>约束 数据完整性由程序控制
数据库中的主的关系,通俗易懂
一、什么是主<em>键</em>、<em>外</em><em>键</em>: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主<em>键</em>比如学生表(学号,姓名,性别,班级)其中每个学生的学号是唯一的,学号就是一个主<em>键</em>课程表(课程编号,课程名,学分)其中课程编号是唯一的,课程编号就是一个主<em>键</em>成绩表(学号,课程号,成绩)成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合...
数据库到底用不用、触发器、索引、视图、存储过程
今天听了一个企业技术总监的宣讲,结果听说在他开发系统的过程中,都没有用到<em>外</em><em>键</em>,这让我很惊讶,赶紧上网搜索了一些资料看了看,终于明白了不用<em>外</em><em>键</em>的原因。这是一篇关于是否使用<em>外</em><em>键</em>的讨论,讲的很有道理:对于主/<em>外</em><em>键</em>/索引来说,在一些开发团队中被认为是处理数据库关系的利器,也被某些开发团队
mysql的使用
mysql<em>外</em><em>键</em>的使用 一、<em>外</em><em>键</em>是什么 为了一张表记录的数据不要太过冗余。仅仅只是在数据库中是对表关系进行解耦,尽量让表 记录的数据单一化。 例如:把成绩和学生信息放在一张表中就太冗余了,执行sql性能也下降很多,成绩和信息是两个事物完全可以分开,所以在设计的时候。就给学生表加入一个<em>外</em><em>键</em>(成绩表全然能够以学生的学号作为区分标识...
关联无法更新问题
1.创建主表 CREATE TABLE `c_type` (   `id` varchar(32) NOT NULL,   `parent_id` varchar(32) DEFAULT NULL,   `type` varchar(32) DEFAULT NULL,   `display_name` varchar(16) DEFAULT NULL,   `display_order` int...
SQL的主约束
SQL的主<em>键</em>和<em>外</em><em>键</em>的作用:    <em>外</em><em>键</em>取值规则:空值或参照的主<em>键</em>值。 (1)插入非空值时,如果主<em>键</em>表中没有这个值,则不能插入。 (2)更新时,不能改为主<em>键</em>表中没有的值。 (3)删除主<em>键</em>表记录时,你可以在建<em>外</em><em>键</em>时选定<em>外</em><em>键</em>记录一起级联删除还是拒绝删除。 (4)更新主<em>键</em>记录时,同样有级联更新和拒绝执行的选择。 简而言之,SQL的主<em>键</em>和<em>外</em><em>键</em>就是起约束作用。     定义主<em>键</em>和<em>外</em><em>键</em>主要
浅谈(FK)
一.<em>外</em><em>键</em>的定义: <em>外</em><em>键</em> (FK) 是用于建立和加强两个表数据之间的链接的一列或多列。通过将保存表中主<em>键</em>值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就成为第二个表的<em>外</em><em>键</em>。 FOREIGN KEY 约束的主要目的是控制存储在<em>外</em><em>键</em>表中的数据,但它还可以控制对主<em>键</em>表中数据的修改。例如,如果在 publishers 表中删除一个出版商,而这个出版商的 ID 在 titles 表中记录书
是什么东西,它有什么作用?
<em>外</em><em>键</em>是什么东西,它有什么作用?别嫌我问的问题太低级啊^
也必须是唯一性约束吗?
<em>外</em><em>键</em>也必须是唯一性约束吗? 客户表: 客户编号(主<em>键</em>)、姓名、年龄、住址、电话 订单主表: 订单编号(主<em>键</em>)、客户编号、订单金额、订货日期 上面2张表,订单主表的客户编号能作为客户表的<em>外</em><em>键</em>引用客户表的
的作用是什么
当朋友问我<em>外</em><em>键</em>的作用是什么时,我也愣了一下,平常都是在这么用,还没有真正的总结过,<em>外</em>分<em>键</em>的作用呢.下面,我总结了一下<em>外</em><em>键</em>的作用:<em>外</em><em>键</em> (FK) 是用于建立和加强两个表数据之间的链接的一列或多列。通过将保存表中主<em>键</em>值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就成为第二个表的<em>外</em><em>键</em>。FOREIGN KEY 约束的主要目的是控制存储在<em>外</em><em>键</em>表中的数据,但它还可以控制对主<em>键</em>表中数据的
名和名有什么用呢?
创建主<em>键</em>的方法:ALTER TABLE 表名 ADD CONSTRAINT 主<em>键</em>名 PRIMARY KEY(列1,列2...); 创建<em>外</em><em>键</em>的方法:ALTER TABLE 表名 ADD CONSTRAI
数据库的使用以及优缺点
现在在开发的一个系统,数据库设计之时没有考虑太多的性能问题,设置了很多<em>外</em><em>键</em>。 看网上很多资料表示,设置<em>外</em><em>键</em>在进行增删改操作的时候,会出现表与表之间的耦合,所以很多时候系统内存会升到好几个G。 <em>外</em><em>键</em><em>到底</em>
那什么是 有什么作用呢
从上面的这个图可以看到在设计的时候,就给表1添加一个<em>外</em><em>键</em>,这个<em>外</em><em>键</em>就是表2中的学号字段,那么这样表1就是主表,表2就是子表。所以结合2张表就能保持数据的一致性、完整性(估计就是还原成原来的那张大表)。 借着这个例子再谈谈<em>外</em><em>键</em>的一些事项: 1、表1可以有一个或者多个<em>外</em><em>键</em>,也可以没有。(如果表1有多个<em>外</em><em>键</em>可不可以是这样的情况,表2中的多个字段是表1的<em>外</em><em>键</em>;或者说表1的多个<em>外</em><em>键</em>是在多个表中)
浅谈 MySQL的的作用
MySQL中<em>外</em><em>键</em>的介绍: MySQL<em>外</em><em>键</em>必须使用存储引擎为  innDB  其中MySAM 和MEMORYH这两种引擎不支持 由数据库自身保证数据一致性,完整性,更可靠,因为程序很难100%保证数据的完整性,而用<em>外</em><em>键</em>即使在数据库服务器当机或者出现其他问题的时候,也能够最大限度的保证数据的一致性和完整性。 设置<em>外</em><em>键</em>约束的两个表之间会具有父子关系,即子表中<em>外</em><em>键</em>的字段的取值范围由父表所决定 设置...
约束的作用
<em>外</em><em>键</em>是该表是另一个表之间联接的字段。 <em>外</em><em>键</em>必须为另一个表中的主<em>键</em> 。 <em>外</em><em>键</em>的用途是确保数据的完整性。 插入数据时,<em>外</em><em>键</em>必须是关联表中已存在的主<em>键</em>。 学生选课例子对于主<em>外</em><em>键</em>的理解有很大帮助: 学生选的课的代号,必须是已经存在的课目的代号。 之前忘记了,仅供自己参考。
使用约束
  <em>外</em><em>键</em>首先是表中的一个字段,可以不是本表的主<em>键</em>,但要对应另<em>外</em>一个表的主<em>键</em>。<em>外</em><em>键</em>的主要作用是保证数据引用的完整性,定义<em>外</em><em>键</em>后,不允许删除在另一个表中具有关联关系的行。<em>外</em><em>键</em>的作用是保持数据的一致性、完整性。 主表(父表):对于两个具有关联关系的表而言,相关联字段中主<em>键</em>所在的那个表。 从表(子表):对于两个具有关联关系的表而言,相关联字段中<em>外</em><em>键</em>所在的那个表。 例句: CONSTRAINT ...
问一个很菜的问题, 请问怎么用?它有什么用处? 简单问题高分抢答
如果我有两个表 n1表 工号 姓名 n2表 工号 年龄 如果我将两个表的工号作为<em>外</em><em>键</em>相联,请问有什么用处 我看了半天的书, 我的理解是当我删除n1表里的一条记录,如果n2也有这条记录的 工号,删除就出
求教,有数据的两个表怎么用关联起来
现在有两个表biao1和biao2,表结构如下 create table biao1 ( id int not null identity primary key, firsname varchar(
MySQL---的用法
可以利用<em>外</em><em>键</em>创建两个关联的表,代码如下:#!/usr/bin/python # encoding: utf-8 import MySQLdb#功能:建数据库和表# 打开数据库连接 conn = MySQLdb.connect(host="localhost", user="root", passwd="111111", db="testalchemy") # 使用cursor()方法获取操作游标 c
数据库该不该使用
问题引入 以前的意识里都是需要建立<em>外</em><em>键</em>,<em>外</em><em>键</em>能起到约束作用,能保证数据的完整性和一直性,比如如果没有<em>外</em><em>键</em>约束,你自己程序控制又不到位把基本信息都删除了,详情却存在,人的基本信息不存在了,工资信息里却存在这个人,想要找这个人究竟是谁都找不到。 今天看到原来的<em>外</em><em>键</em>都被去掉了,问了下组长,结果回答就两个字“效率”,虽然感觉很诧异,但是毕竟人家比我有经验并没有去争论,下面将站在两个对立面去赞成和反对建
是否应该使用
<em>外</em><em>键</em>可以保证数据的完整性。对于大型系统:在安全要求高,性能要求不高的系统中,必须使用<em>外</em><em>键</em>在性能要求高的系统中,我们可以不使用<em>外</em><em>键</em>,提高效率,安全由自己控制。我们在程序中控制。没有<em>外</em><em>键</em>更加灵活。小系统可以使用,可以不使用...
Hibernate中双向维护产生的多余sql问题
这里我们就不展示关于java实体类的代码了,相比各位程序员看完下面的xml文件之后也就会知道实体类的代码了。 Customer.hbm.xml文件中的代码如下: <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/d
hibernate是否维护(inverse)的问题
以下是个人经验小结,如有不当请指出!<em>谢谢</em>~ 1.在一对多的关系中,由于两表共用一个同名的<em>外</em><em>键</em>,所以可以选择让其中一个表选择放弃维护<em>外</em><em>键</em>就可以,也就是将"set"标签中的"inverse"属性设置为"true"(见下图),这样节省系统资源,提高程序运行效率。 2.在多对多的关系中,由于两表在第三表中分别使用各自的<em>外</em><em>键</em>,<em>外</em><em>键</em>不同名,所以两个表的配置文件中都要设置维护<em>外</em><em>键</em>
Day40-Hibernate03(多表操作、配置多表关系、级联、放弃维护权)
Hibernate03(多表操作、配置多表关系、级联、放弃<em>外</em><em>键</em>维护权)
hibernate框架一对多之放弃的维护(十五)
在上一篇文章中,Customer中有private Set linkmans = new HashSet(); Linkman中有private Customer customer; 也就是两者都维护了<em>外</em><em>键</em>。 可以放弃一方面的<em>外</em><em>键</em>的维护。 一对多可以不用放弃。多对多必须放弃,不然程序会报错。 1. 先测试双方都维护<em>外</em><em>键</em>的时候,会产生多余的SQL语句。 * 想修改客户和联系人的关系,进行双向
Hibernate的学习之路二十四(放弃的维护)
前言     这篇主要是说明了,放弃<em>外</em><em>键</em>,在数据库多对多的情况下要放弃,其中一方的<em>外</em><em>键</em>维护。因为会造成语句的多余。     比如A表和B表,A里有B的维护,B里有A的维护,如果互相修改的话,映射一下,A和B都会生成1个sql语句来修改,一共2条来执行相同结果的sql语句,其实只要修改一次就可以。     当然如果在一对多的情况下,就不需要去放弃<em>外</em><em>键</em>的维护了,还有就是放弃的一方  是一的。需要
约束详解
<em>外</em><em>键</em>约束详解 先要理清几个概念: 1)候选<em>键</em>(CandidateKey):关系中的一个属性组,其值能唯一标识一个元组,若从该属性组中去掉任何一个属性,它就不具有这一性质了,这样的属性组称作候选<em>键</em>(候选码)。 2)主<em>键</em>(PrimaryKey):当有多个候选<em>键</em>时,可以选定一个作为主<em>键</em>,选定的候选<em>键</em>称为主<em>键</em>(主码)。 主<em>键</em>唯一标识表中的每行记录。主<em>键</em>约束有如下特点:每个表...
MySql中主约束和主表是什么?约束是什么?主表和从表又是什么?怎么创建?
想知道主<em>键</em>约束,就需要知道主<em>键</em>是什么。 所谓主<em>键</em>,你可以理解为一个能够标识数据唯一的标志,比如我们设定ID,ID是永远都不能重复的,这就是主<em>键</em>。添加了主<em>键</em>之后,就有了主<em>键</em>约束。比如你的主<em>键</em>是登陆名称,这一列是什么数据类型,是否为自增,等等其他的对这一列的数据规定,全部就成了主<em>键</em>约束。   主表的概念,我们可以理解为在关系中,处于最基础的表,即可理解为主表。比如我设定销售层级关系表,有一个表...
相见恨晚的超实用网站
相见恨晚的超实用网站 持续更新中。。。
SuSE ADSL设置下载
SuSE ADSL设置 介于朋友需要,写下此文档,希望对于在Linux尤其是SuSE下想用ADSL上网的朋友有所帮助。废话少说,言归正传! 相关下载链接:[url=//download.csdn.net/download/fly_mjq/2335744?utm_source=bbsseo]//download.csdn.net/download/fly_mjq/2335744?utm_source=bbsseo[/url]
计算机系统结构课程考核DLX虚拟处理器实验4实验报告下载
计算机系统结构课程考核DLX虚拟处理器实验4实验报告 相关下载链接:[url=//download.csdn.net/download/zengyunhai/4209032?utm_source=bbsseo]//download.csdn.net/download/zengyunhai/4209032?utm_source=bbsseo[/url]
UD6809_V1.9.3.1下载
如果6816用不了,这是你需要的那你就运气了,呵呵 相关下载链接:[url=//download.csdn.net/download/ljcdgl/3178002?utm_source=bbsseo]//download.csdn.net/download/ljcdgl/3178002?utm_source=bbsseo[/url]
相关热词 c#中dns类 c#合并的excel c# implicit c#怎么保留3个小数点 c# 串口通信、 网络调试助手c# c# 泛型比较大小 c#解压分卷问题 c#启动居中 c# 逻辑或运算符
我们是很有底线的