为什么要建立外键 [问题点数:20分,结帖人pztx1992]

Bbs1
本版专家分:86
结帖率 100%
Bbs12
本版专家分:440579
Blank
名人 年度总版至少三次排名前十即授予名人勋章
Blank
榜眼 2008年 总版技术专家分年内排行榜第二
Blank
进士 2010年 总版技术专家分年内排行榜第四
2009年 总版技术专家分年内排行榜第五
2007年 总版技术专家分年内排行榜第六
Blank
金牌 2009年3月 总版技术专家分月排行榜第一
2008年12月 总版技术专家分月排行榜第一
2008年3月 总版技术专家分月排行榜第一
2007年12月 总版技术专家分月排行榜第一
2007年10月 总版技术专家分月排行榜第一
Bbs12
本版专家分:440579
Blank
名人 年度总版至少三次排名前十即授予名人勋章
Blank
榜眼 2008年 总版技术专家分年内排行榜第二
Blank
进士 2010年 总版技术专家分年内排行榜第四
2009年 总版技术专家分年内排行榜第五
2007年 总版技术专家分年内排行榜第六
Blank
金牌 2009年3月 总版技术专家分月排行榜第一
2008年12月 总版技术专家分月排行榜第一
2008年3月 总版技术专家分月排行榜第一
2007年12月 总版技术专家分月排行榜第一
2007年10月 总版技术专家分月排行榜第一
Bbs5
本版专家分:3670
Bbs5
本版专家分:3670
Bbs10
本版专家分:122570
版主
Blank
银牌 2008年11月 总版技术专家分月排行榜第二
2008年10月 总版技术专家分月排行榜第二
Blank
微软MVP 2010年7月 荣获微软MVP称号
Blank
红花 2008年11月 MS-SQL Server大版内专家分月排行榜第一
2008年10月 MS-SQL Server大版内专家分月排行榜第一
Blank
黄花 2009年2月 MS-SQL Server大版内专家分月排行榜第二
2009年1月 MS-SQL Server大版内专家分月排行榜第二
2008年12月 MS-SQL Server大版内专家分月排行榜第二
2008年9月 MS-SQL Server大版内专家分月排行榜第二
Bbs2
本版专家分:113
Bbs1
本版专家分:47
Bbs1
本版专家分:36
Bbs2
本版专家分:245
Bbs1
本版专家分:0
怎么修改
设置完<em>外</em><em>键</em>后,突然想起来应该不应该设成on delete cascade on update cascade的应该是set null的所以就写篇文章记录一下这个错误。 一般来说只要先删除<em>外</em><em>键</em> alter table 表名 drop foreign key 约束名; 然后再创建<em>外</em><em>键</em>约束就好了: alter table SC add constraint FOREIGN_SC_Course...
什么是?为什么要使用?如何来用?不用会怎样?
什么是<em>外</em><em>键</em><em>外</em><em>键</em>   (FK)   是用于<em>建立</em>和加强两个表数据之间的链接的一列或多列。通过将保存表中主<em>键</em>值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就成为第二个表的<em>外</em><em>键</em>。   为什么要使用<em>外</em><em>键</em>?保证数据的参照完整性  不用会怎样?不用也不会怎么样,如果一个健壮的系统,数据库中的数据一定有很好的参照完整性,如果不用<em>外</em><em>键</em>,就要多写代码对数据的完整性进行额<em>外</em>的
到底是用来干嘛的?谢谢
<em>外</em><em>键</em>除了能保证数据的完整性以<em>外</em>,还有什么用途? 我理解的数据完整性是 用户表user ID name bumen 1 tome 1 2 kate 2 3 james 1 部门表bumen ID nam
多对一 多对多
a表有aid,aname,asex,c表有cid,cname,csex,中间表b 有bid,cid 问1:在多对一的关系中,中间表的bid,cid要不要设置<em>外</em><em>键</em>, hbm文件中是不是只在中间表写多对一
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...
关于什么情况需要建立关系
请问这三个表需要<em>建立</em><em>外</em><em>键</em>关系吗? 采购合同内容表 是主表 其他两个是从表
mysql (foreign key)的详解和实例
一、基本概念1、MySQL中“<em>键</em>”和“索引”的定义相同,所以<em>外</em><em>键</em>和主<em>键</em>一样也是索引的一种。不同的是MySQL会自动为所有表的主<em>键</em>进行索引,但是<em>外</em><em>键</em>字段必须由用户进行明确的索引。用于<em>外</em><em>键</em>关系的字段必须在所有的参照表中进行明确地索引,InnoDB不能自动地创建索引。2、<em>外</em><em>键</em>可以是一对一的,一个表的记录只能与另一个表的一条记录连接,或者是一对多的,一个表的记录与另一个表的多条记录连接。3、如果需要更好的...
SQL中的
<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>可以保证数据的完整性和一致性 格式:(2种) [constraint <em>外</em><em>键</em>约束关系的名称] foreign key 从表(<em>外</em><em>键</em>字段名称) references 主表(主...
用法
<em>外</em><em>键</em>: 连接多张表之间的关系,<em>建立</em><em>外</em><em>键</em>后,一张表的内容要完全匹配另一张有关联关系的表 建表时添加<em>外</em><em>键</em>约束: create table stu( sid int primary key auto_increment, sname varchar(20) unipue not null, id_p int ); CREATE TABLE Orders( Id_O int NOT ...
数据库创建的两种方式
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
mysql表怎么设置一个表的是另一张表的主 怎么设置
表与表之间有一对多、多对多的关系,只要涉及到表与表之间的关联们就会涉及到<em>外</em><em>键</em>和主<em>键</em> 知识点:   那么怎么设置<em>外</em><em>键</em>呢? demo: 现在有两张表,user表(编号、姓名、职务、工种、部门)、kinds表 (工种、工种描述), kinds表和user表是一对多的关系,kinds表的工种发生变化的话,那么user表中牵扯到多个人的工种发生变化 user表 kinds表   ...
为什么需要数据库
<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数据库使用<em>外</em><em>键</em>条件:两个表存储引擎必须是InnoDB,MyISAM暂时不支持<em>外</em><em>键</em>;<em>外</em><em>键</em>列必须<em>建立</em>索引,MySQL4.1.2以后的版本在<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>约束 数据完整性由程序控制
关于约束的一点疑问 为什么要约束
有两个表 表 题库 题号 题目内容 题目答案 1 aaa AAA 2 bbb BBB 3 ccc CCC 表 答案 题号 姓名 时间 个人答案 3 xx xx zz 3 xxx xxx zzz 3 y
数据库的使用
<em>外</em><em>键</em>的作用: 保持数据一致性,完整性,主要目的是控制存储在<em>外</em><em>键</em>表中的数据。 使两张表形成关联,<em>外</em><em>键</em>只能引用<em>外</em>表中的列的值! 例如: a b 两个表 a表中存有客户号,客户名称 b表中存有每个客户的订单 有了<em>外</em><em>键</em>后 你只能在确信b 表中没有客户x的订单后,才可以在a表中删除客户x <em>建立</em><em>外</em><em>键</em>的前提: 本表的列必须与<em>外</em><em>键</em>类型相同(<em>外</em><em>键</em>必须是<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...
为什么要使用
<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不支持,Oracle支持)<em>建立</em>起一个关系,只能定义为表级约束 <em>外</em><em>键</em>的使用条件 1、两个表存储引擎必须是InnoDB,MyISAM暂时不支持<em>外</em><em>键</em>; 2、<em>外</em><em>键</em>列必须<em>建立</em>索引,MySQL4.1.2以后的版本在<em>建立</em><em>外</em><em>键</em>时会自动创建索引,但如果在较早的版本则需要显式<em>建立</em>; ...
SQL数据库为什么要建立关系
例如数据库有两个表,一张员工基本信息表,一张员工工资表。<em>外</em><em>键</em>的存在,是确保工资表的员与员工基本信息表中的员工相对应。如果没有<em>外</em><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('USER...
MySQL中的是什么、有什么作用
最近自学数据库MySQL,然后有个疑问,一直不得其解,查询了相关资料,最后还是没有解决。       我的疑问是 "使用<em>外</em><em>键</em>约束" ,然后我对 "<em>外</em><em>键</em>" 这个词不是很理解,查询相关资料都是讲一些术语,说<em>外</em><em>键</em>的主要作用是:保持数据的一致性、完整性。听得我是一头雾水。       关于<em>外</em><em>键</em>,我有自己的一些理解,但是不晓得是否正确,举个例子来表达我的看法:假如现在需要<em>建立</em>一个表,一个什么样的表呢?一
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>和索引是不可少的,不仅可以优化数据检...
MySQL增加的两种方式和案例
MySQL增加<em>外</em><em>键</em>的两种方式和案例 1:增加<em>外</em><em>键</em>(创建表的时候) CREATE TABLE my_foreign1( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20) NOT NULL COMMENT '学生姓名', c_id INT COMMENT '班级id', FOREIGN KEY(c_id) REF
关于联合
1.联合<em>外</em><em>键</em>的定义语法:       ALTER TABLE <em>外</em><em>键</em>表名 ADD CONSTRAINTS/CONSTRAINT  <em>外</em><em>键</em>名 FOREIGN KEY (<em>外</em><em>键</em>列名1,<em>外</em><em>键</em>列名2,<em>外</em><em>键</em>列名3,......) REFERENCES 主<em>键</em>表名 (主<em>键</em>列名1,主<em>键</em>列名2,主<em>键</em>列名3,......); <em>外</em><em>键</em>列名:作为<em>外</em><em>键</em>的列的名称。 主<em>键</em>列名:作为主<em>键</em>的列的名称。 2.联合<em>外</em><em>键</em>定义时的注意事...
mysql如何添加一个表的
作者:别先生 博客园:https://www.cnblogs.com/biehongli/ CSDN:https://blog.csdn.net/Biexiansheng 如果您想及时得到个人撰写文章以及著作的消息推送,可以扫描上方二维码,关注个人公众号哦。 1:创建一个父表,主<em>键</em>作为子表的<em>外</em><em>键</em>: 1 create table province( 2 pId int p...
二、转换成3NF的保持函数依赖的分解
转换成3NF的保持函数依赖的分解 ================================================== 算法2:         =====================================================
怎么在创建表时定义
假设已知一个表是: dept ( ID number primary key, name varchar2(10) unique ) 我想创建一个表emp dept.ID 是emp.depID的<em>外</em><em>键</em>
工程上为什么建表时不设置
问题 一直有个疑惑,在大型工程上表之间的<em>外</em><em>键</em>关系只在ER图上体现,却没有在建表的时候设置<em>外</em><em>键</em>(如往数据库新建表时对<em>外</em><em>键</em>没有限制),问了架构师和查阅相关资料后整理了一下。 总结 在大型系统中(性能要求不高,安全要求高),最好使用<em>外</em><em>键</em>(<em>外</em><em>键</em>可以增强数据库数据的完整性和一致性) 在大型系统中(性能要求高,安全自己控制),不用<em>外</em><em>键</em>(有<em>外</em><em>键</em>约束的话,插入字
使用PLSQL建立oracle主的步骤与小总结
使用PLSQL<em>建立</em>oracle主<em>外</em><em>键</em>的步骤与小总结 1、为什么要使用主<em>外</em><em>键</em>? 简化开发代码,提升代码维护的容易程度。我最近在做一个智能交通项目,在做一个资源配置的接口的时候出现了两张表:一张道路表:Road;一张断面表:Transection。断面大家可以把他理解为道路某处横着切开的一个面。所以一个断面它只可能属于一条道路。为了<em>建立</em>关联关系,我就把Road的Id主<em>键</em>作为Transectio...
一文搞懂候选码、主码、全码、码、主属性、主、主关字、非主属性清晰总结
一、讲解 首先说明 <em>键</em>字=码字,所以 主<em>键</em>=主码=主关<em>键</em>字,候选<em>键</em>=候选码=候选关<em>键</em>字... 所谓关系<em>键</em>,指的是一个表中的一个(或一组)属性,用来标识该表的每一行或与另一个表产生联系。 话不多说,上图:   相信这个图已经画得很清晰了,下面逐一解释:   1、码=超<em>键</em>:能够唯一标识一条记录的属性或属性集。 标识性:一个数据表的所有记录都具有不同的超<em>键</em> 非空性:...
为什么会有??
保持数据一致性,完整性,主要目的是控制存储在<em>外</em><em>键</em>表中的数据。 使两张表形成关联,<em>外</em><em>键</em>只能引用<em>外</em>表中的列的值或使用空值。 如果不使用<em>外</em><em>键</em>,表2的学号字段插了一个值(比如20140999999),但是这个值在表1中并没有,这个时候,数据库允许插入,并不会对插入的数据做关系检查。然而在设置<em>外</em><em>键</em>的情况下,你插入表2学号字段的值必须要求在表1的学号字段能找到。 同时,如果你要删除表1的某个学号字段,...
是否需要使用
是否需要使用<em>外</em><em>键</em> 最近在学习flask web开发的时候,发现在讲orm这一块的时候,大佬们都不怎么建议互联网应用使用<em>外</em><em>键</em>,而且,我发现我现在的公司的c/s架构项目的表结构也没有一个使用<em>外</em><em>键</em>的,于是很好奇,就查了下相关的知识,并做了个汇总分析: 首先我们的知道,<em>外</em><em>键</em>的作用以及目的,<em>外</em><em>键</em>主要作用是通过数据库来保证数据的一致性和完整性,通过<em>外</em><em>键</em>我就可以少些控制数据完整性和一致性的逻辑了,这...
同一个表的主可以是
同一个表的主<em>键</em>可以是<em>外</em><em>键</em>吗,注意,我说的是同一个表? 比如表A(a_ID)表B(b_ID),设置表A的a_ID作为主<em>键</em>,同时设置为<em>外</em><em>键</em>与表B(b_ID)关联。 可以不?表A与表B是一对一的关系
添加的表如何插入数据
数据的关系比较多的是使用<em>外</em><em>键</em>去关联的,那直接插入数据到添加了<em>外</em><em>键</em>的表的时候,那就会出现一个问题找不到这个<em>外</em><em>键</em>值而报错。 这里有两个解决办法: 先对<em>外</em><em>键</em>指定的那张子关系表添加你需要的数据后,再对使用<em>外</em><em>键</em>的表添加数据。(先主表插入数据,再从表插入数据集) 例如我有一张学生表t_student,然后我有一张宿舍表t_dormitory,然后t_dormitory里面有一个学生字段是<em>外</em><em>键</em>,关联到学生表
创建注意点
1.A表创建的<em>外</em><em>键</em>关联B表的某个字段,B表中的该字段必须是唯一性索引 不一定是主<em>键</em>,但必须是唯一性索引。 主<em>键</em>约束和唯一性约束都是唯一性索引。 2.创建<em>外</em><em>键</em>报错: ALTER TABLE 语句与 COLUMN FOREIGN KEY 约束 '' 冲突。 原因:发生这种情况是因为您尝试从 A表 到B表 创建一个<em>外</em><em>键</em>,并且 A 中的值与 B中的任何值不匹配。您不能创建违反参照完整性的关系。就...
约束(Oracle)
1,在创建表时候设置<em>外</em><em>键</em>约束(列级) create table table1(column_name datatype REFERENCES table2(column_name,....)); 其中table1 的表为从表,table2的表为主表 注意:在设置<em>外</em><em>键</em>约束的时候,主表的字段必须是主<em>键</em>。           主从表中相应的字段必须是相同数据类型,字段名称可以不一致。     ...
Django 操作
django中,如果一个数据库中的表之间有<em>外</em><em>键</em>的话可以方便的通过一个表查询到其相关表的数据。如有下面三个model:class Blog(models.Model): name = models.CharField(max_length=100) tagline = models.TextField() def __unicode__(self): return
oracle--详解
<em>外</em><em>键</em>的作用: 保持数据一致性,完整性,主要目的是控制存储在<em>外</em><em>键</em>表中的数据。 使两张表形成关联,<em>外</em><em>键</em>只能引用<em>外</em>表中的列的值! 例如: a b 两个表 a表中存有客户号,客户名称 b表中存有每个客户的订单 有了<em>外</em><em>键</em>后 你只能在确信b 表中没有客户x的订单后,才可以在a表中删除客户x <em>建立</em><em>外</em><em>键</em>的前提: 本表的列必须与<em>外</em><em>键</em>类型相同(<em>外</em><em>键</em>必须是<em>外</em>表主<em>键</em>)。
数据库的作用,以及和主的区别
http://blog.csdn.net/tiantian1980/article/details/1603126 <em>外</em><em>键</em>是数据库一级的一个完整性约束,就是数据库基础理论书中所说的“参照完整性”的数据库实现方式。           <em>外</em><em>键</em>属性当然是可以去掉的,如果你不想再用这种约束,对编程当然不会有什么影响,但相应的录入数据的时候就不对录入的数据进行“参照完整性”检查了。
关于数据库的和主
转自:http://blog.csdn.net/championhengyi/article/details/78559789什么是主<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>      如果
关于主码(主)、候选码、码()的理解,请达人指教
定义我能理解,但是应用到做题上出现了问题 我先把题目叙述一下: <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>只能有一个
mysql创建报错的原因以及处理(can't not create table)
最近在玩数据库的时候,偶尔会有<em>外</em><em>键</em>创建不成功的时候,于是上网查阅资料,整合自己的理解有了以下这篇文章:mysql创建<em>外</em><em>键</em>不成功的原因以及处理方法:第一种:<em>外</em><em>键</em>的字段与关联的字段的类型不匹配(包括编码格式的不匹配):两个不同的表格(一个是record(借书记录表),一个是reader(读者信息表)):然后关联的两个readerid 字段要保持一致,包括长度,类型要保持一致。然后是编码格式两个表的引擎...
模式分解
例1:U=(A,B,C,D,E,G)   F={BG-&amp;gt;C,BD-&amp;gt;E,DG-&amp;gt;C,ADG-&amp;gt;BC,AG-&amp;gt;B,B-&amp;gt;D}   若R不是3NF,将R分解为无损且保持函数依赖的3NF。解:先要求出最小依赖集,由前面,候选<em>键</em>为AG,Fm={B-&amp;gt;E,DG-&amp;gt;C,AG-&amp;gt;B,B-&amp;gt;D}第一步:左部相同原则分组:对Fm按具有相同左部的原则分组,然...
多表设计,
1.<em>外</em><em>键</em>约束表是用来保存显示生活中的数据的,而现实生活中数据和数据之间往往具有一定的关系,我们在使用表来存储数据时,可以明确的声明表和表之前的依赖关系,命令数据库来帮我们维护这种关系,向这种约束就叫做<em>外</em><em>键</em>约束       create table dept(           id int primarykey auto_increment,           name varchar(20)...
及其约束理解
数据库<em>外</em><em>键</em>的详解,同时以MySQL数据库举例子解释<em>外</em><em>键</em>及其约束的设置等
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>主要
数据库中使用和不使用有什么区别
今天听了一个企业技术总监的宣讲,结果听说在他开发系统的过程中,都没有用到<em>外</em><em>键</em>,这让我很惊讶,赶紧上网搜索了一些资料看了看,终于明白了不用<em>外</em><em>键</em>的原因。这是一篇关于是否使用<em>外</em><em>键</em>的讨论,讲的很有道理:对于主/<em>外</em><em>键</em>/索引来说,在一些开发团队中被认为是处理数据库关系的利器,也被某些开发团队认为是处理某些具体业务的魔鬼,您的观点呢?在实际应用中您会采取哪种方式?大家共同观点:主<em>键</em>和索引是不可少的,不仅可以优化...
SQL中主的定义和区别
主<em>键</em>是本张表的主<em>键</em>,是唯一且非空的,而<em>外</em><em>键</em>是另一张表中与这张表的某个字段的类型,字段名相同的字段,一般是用作关联两张或两张以上的数据表时用的。 以下面三张表为例:  有三张表,一张表是读者信息,有一个属性为readno,一张表是图书的信息,有一个属性是bookno,一张表是借阅关系,有两个属性分别以读者信息表中的readno,和图书信息表中的bookno为<em>外</em><em>键</em>,我想问的是,在借阅关系表
浅谈(FK)
一.<em>外</em><em>键</em>的定义: <em>外</em><em>键</em> (FK) 是用于<em>建立</em>和加强两个表数据之间的链接的一列或多列。通过将保存表中主<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><em>键</em>约束,你自己程序控制又不到位把基本信息都删除了,详情却存在,人的基本信息不存在了,工资信息里却存在这个人,想要找这个人究竟是谁都找不到。 今天看到原来的<em>外</em><em>键</em>都被去掉了,问了下组长,结果回答就两个字“效率”,虽然感觉很诧异,但是毕竟人家比我有经验并没有去争论,下面将站在两个对立面去赞成和反对建
mysql ,主,唯一性约束
(1)mysql添加<em>外</em><em>键</em> 为已经添加好的数据表添加<em>外</em><em>键</em>: 语法:alter table 表名 add constraint FK_ID foreign key(你的<em>外</em><em>键</em>字段名) REFERENCES <em>外</em>表表名(对应的表的主<em>键</em>字段名); 例: alter table tb_active add constraint FK_ID foreign key
MySQL数据库--约束及使用
什么是主<em>键</em>、<em>外</em><em>键</em>关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主<em>键</em>。比如: 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一的,学号就是一个主<em>键</em> 课程表(课程编号,课程名,学分) 其中课程编号是唯一的,课程编号就是一个主<em>键</em> 成绩表(学号,课程号,成绩) 成绩表中单一一个属性无
要不要使用
本来我一个小菜鸟,没有什么项目开发经验,关心这个问题也属于纸上谈兵。但自从知道有不用<em>外</em><em>键</em>,全由程序控制数据完整性的方法后,我在学校接受的“<em>外</em><em>键</em>是必须的“思想就承受了一定程度的颠覆。最近又遇上类似的问题,就在网上搜罗了一下,结果百家争鸣,众说纷纭,跟华山论剑似的,看得一头浆糊。想想算了,以后的工作中再加深体验,权且记下各方观点好了:      正方(这个必须有):      1,由数据库自身保证
为什么有人说不建议建立表与表之间的主关系
使用<em>外</em><em>键</em>有利于维持数据完整性和一致性,但是对于开发来说是非常不利的。  每次做DELETE 或者UPDATE都必须考虑<em>外</em><em>键</em>约束,会导致开发的时候很痛苦,而且需要更为复杂的错误捕获机制。  做数据处理时会受到很多的束缚,有些地方本来就可以允许有部分冗余,但是由于设计了<em>外</em><em>键</em>约束,只能放弃。  出现BUG的时候追踪很麻烦。  总的来说,自己来掌握数据总比别人去掌握要方便。  目前我们公
SQL中约束条件要怎么设立?
-
mysql如何建立
  一个主表blog博客表,DROP TABLE IF EXISTS `blog`;CREATE TABLE `blog` (  `id` int(11) NOT NULL auto_increment,  `title` varchar(11) default NULL,  `content` varchar(11) default NULL,  PRIMARY KEY  (`id`)) ENG
导出某表所有关联的数据
-
数据库 schema含义
数据库Schema有两种含义,一种是概念上的Schema,指的是一组DDL语句集,该语句集完整地描述了数据库的结构。还有一种是物理上的Schema,指的是数据库中的一个名字空间,它包含一组表、视图和存储过程等命名对象。物理Schema可以通过标准SQL语句来创建、更新和修改。例如以下SQL语句创建了两个物理Schema:    create schema SCHEMA_A;    create
一个表的指向该表的主,连接查询
表结构如下: CREATE TABLE `tdepartment` ( `td_id` int(11) NOT NULL AUTO_INCREMENT, `td_u_id` int(11) DEFAU
听论坛大神说,做Java EE项目时候,数据库最好不用
而且在ORM配置时,最好不要做一对多,多对多关联,完全靠程序控制数据完整性,是不是这样啊,我有个朋友以前在公司做的JEE项目也是这样,表没有<em>外</em><em>键</em>,我当时还嘲笑他们的方法很奇葩,现在我自己都迷茫了。 求
批量导入数据,该怎么处理?
如果批量向一个表中导入数据,表中有<em>外</em><em>键</em>,而且导入的数据中也包含<em>外</em><em>键</em>这个字段,这时候该怎么处理? 如果每导入一条数据都要先查下其中<em>外</em><em>键</em>字段的id,这样效率会不会比较低?
table 数据量太大,列太多,导致渲染过慢,有没有什么优化的方法啊?
好像在IE上非常的慢,chrome还有,有没有什么好的办法优化。 没通过ajax拿数据,一次查出该页面显示的所有数据一起发送给浏览器
数据库的使用以及优缺点
现在在开发的一个系统,数据库设计之时没有考虑太多的性能问题,设置了很多<em>外</em><em>键</em>。 看网上很多资料表示,设置<em>外</em><em>键</em>在进行增删改操作的时候,会出现表与表之间的耦合,所以很多时候系统内存会升到好几个G。 <em>外</em><em>键</em>到底
T-SQL创建数据库及主约束等
配置 SQL Server 数据库 EXEC sp_dboption 'pubs', 'read only', 'True' 此选项把数据库 “pubs” 设置为只读。 EXEC sp_dboptio
约束详解
<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>约束有如下特点:每个表...
divide的使用
Performs per-element division of two arrays or a scalar by an array. C++: void divide(InputArray src1, InputArray src2, OutputArray dst, double scale=1, int dtype=-1) C++: void divide(do
、候选和主的区别
超<em>键</em>(super key):在关系中能唯一标识元组的属性集,里面可能包含很多能唯一标识元组的属性 候选<em>键</em>(candidate key):不含有多余属性的超<em>键</em>,即它里面的属性一旦去掉任何一个,它就不是超<em>键</em> 主<em>键</em>(primary key):用户选作元组标识的一个候选<em>键</em> 比如:看下面的一张表 学号          姓名  性别 年龄 系别 专业  20020612 李辉  男
的作用是什么?
什么是<em>外</em><em>键</em>?为什么要使用<em>外</em><em>键</em>?如何来用?不用会怎样? 分类: 数据库2009-08-21 10:40 3928人阅读 评论(2) 收藏 举报 数据库 什么是<em>外</em><em>键</em> <em>外</em><em>键</em>   (FK)   是用于<em>建立</em>和加强两个表数据之间的链接的一列或多列。通过将保存表中主<em>键</em>值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就成为第二个表的<em>外</em><em>键</em>。     为什么要使用<em>外</em><em>键</em>?
MySQL约束On Delete和On Update的使用
On Delete和On Update都有Restrict,No Action, Cascade,Set Null属性。现在分别对他们的属性含义做个解释。 ON DELETE restrict(约束):当在父表(即<em>外</em><em>键</em>的来源表)中删除对应记录时,首先检查该记录是否有对应<em>外</em><em>键</em>,如果有则不允许删除。 no action:意思同restrict.即如果存在从数据,不允许删除主数据。 casc
数据库连接运算(join)
联接有三种:θ联接和自然联接(这里是算术比较符),<em>外</em>联接。 (1) θ联接 (从R和S的笛卡儿乘积中选取满足条件“iθj”的元组 •(2)自然联接(naturaljoin)  两个关系R和S的自然联接操作具体计算过程如下:  ① 计算R×S ;  ② 设R和S的公共属性是A1,…,AK,挑选R×S中满足R.A1=S.A1,…,R.AK=S.AK   的那
数据库应用之关系代数(relational algebra)
关系代数表达式的五个基本算子 1.选择(selection):即选择某些行。代码:select ··· from ··· where。表达式:σ()。 2.投影(projection):即选择某些列。代码:select ··· distinct from ··· (distinct有去重的功能)。表达式:Π()。 3.叉乘(cross product):笛卡尔
编译原理(三) 消除文法的左递归
算法的功能对于任意上下文无关的文法消除左递归问题分析一、产生式直接消除左递归形如P→Pα|βP\rightarrow P \alpha | \beta可以通过直接消除转化为: P→βP′P′→αP′|ϵ \begin{aligned} &P \rightarrow \beta P' \\ &P' \rightarrow \alpha P' | \epsilon \end{aligned} 二、产
数据库系统概论----关系运算之除运算
这一周都在复习《数据库系统概论》这门课,看到关系运算的这一节时,对于除运算不是很理解。 通过百度,我觉得也没有得到比较容易理解的讲解。 这里呢,我就分享一下我的理解吧,如有差错的地方,还希望看到这篇博客的各位给予指导。 首先呢,我把除运算的定义给摘录了下来: 设关系R除以关系S的结果为关系T,则T包含所有在R但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R中。
第一次课设完成后的闲谈——学生宿舍管理系统
先吐槽一下由于自己的愚蠢。。。很多重复代码copy的没有改变量导致了很多错误。一个星期(准确来说五天)就做了这么简单的一个项目。没错你没看错就是做了这么长时间!!!各位看客,有的不要再和我一样;没有的就看看,笑笑就好。 接下来和大家分享一下做这个项目的过程中的一些思路和收获也为自己以后mark一下。 先贴一下题目要求 【题目】学生宿舍管理系统
如何在MySQL中设置约束以及的作用
如何在MySQL中设置<em>外</em><em>键</em>约束以及<em>外</em><em>键</em>的作用 1.<em>外</em><em>键</em>的作用,主要有两个: 一个是让数据库自己通过<em>外</em><em>键</em>来保证数据的完整性和一致性 一个就是能够增加ER图的可读性 2.<em>外</em><em>键</em>的配置 1)先创建一个主表,代码如下: #创建表student,并添加各种约束 create table student (     id int primary key ,  #主<em>键</em>约束    
数据库中的自然连接、选择、投影
选择(Selection)选择是单目运算,其运算对象是一个表。该运算按给定的条件,从表中选出满足条件的行形成一个新表作为运算结果。 选择运算的记号为 σF(R)。 其中σ是选择运算符,下标F是一个条件表达式,R是被操作的表。投影(Projection) 投影也是单目运算,该运算从表中选出指定的属性值组成一个新表,记为:ΠA(R)。 其中A是属性名(即列名)表,R是表名。连接(JOIN) 把两个
总结mysql的三种约束方式
如果表A的主关<em>键</em>字是表B中的字段,则该字段称为表B的<em>外</em><em>键</em>,表A称为主表,表B称为从表。<em>外</em><em>键</em>是用来实现参照完整性的,不同的<em>外</em><em>键</em>约束方式将可以使两张表紧密的结合起来,特别是修改或者删除的级联操作将使得日常的维护工作更加轻松。这里以MySQL为例,总结一下3种<em>外</em><em>键</em>约束方式的区别和联系。   这里以用户表和用户组表为例,这是一个典型的多对一关系,多个用户对应于一个用户组。   首先创建用户组表
Mysql的约束(CASCADE,RESTRICT,NO ACTION)
关于mysql的<em>外</em><em>键</em>约束 CASCADE,RESTRICT,NO ACTION
基于映射的 一对一关系
一. 二.代码实现 1.Department package cn.edu.sdut.hibernate.onetoone; public class Department { private int deId; private String deName; private Manager mgr; public int getDeId() { return deId
关系代数中的除法运算
关系代数中的除法运算
程序员实用工具网站
目录 1、搜索引擎 2、PPT 3、图片操作 4、文件共享 5、应届生招聘 6、程序员面试题库 7、办公、开发软件 8、高清图片、视频素材网站 9、项目开源 10、在线工具宝典大全 程序员开发需要具备良好的信息检索能力,为了备忘(收藏夹真是满了),将开发过程中常用的网站进行整理。 1、搜索引擎 1.1、秘迹搜索 一款无敌有良心、无敌安全的搜索引擎,不会收集私人信息,保...
protel99se绿色版下载
protel99se绿色版: 双击一下就自己装上了,很方便的。自动是破解版的。 我使用很久了,都没什么问题; 文件才8.21M不可思议。 相关下载链接:[url=//download.csdn.net/download/handrap/1944792?utm_source=bbsseo]//download.csdn.net/download/handrap/1944792?utm_source=bbsseo[/url]
极智截图软件2011.exe下载
截图软件便于截取屏幕上的信息 相关下载链接:[url=//download.csdn.net/download/cykjzgq/4819044?utm_source=bbsseo]//download.csdn.net/download/cykjzgq/4819044?utm_source=bbsseo[/url]
php微信商城系统,多用户下载
用php开发的微信商城系统,后台可以管理商城。数据库是里面的sql文件 相关下载链接:[url=//download.csdn.net/download/u010059032/7538335?utm_source=bbsseo]//download.csdn.net/download/u010059032/7538335?utm_source=bbsseo[/url]
相关热词 c#线程阻塞的方法 c#获取文件所在路径 c#mysql添加删除 c# 分段处理 大文件 c#list 头加元素 c# textbox密码 c# 循环 时间间隔 c#判断访问设备 c# sso开源框 c#dataset增加列
我们是很有底线的