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

一键查看最优答案

确认一键查看最优答案?
本功能为VIP专享,开通VIP获取答案速率将提升10倍哦!
Bbs1
本版专家分:86
结帖率 100%
Bbs1
本版专家分:0
(FOREIGN KEY)
引子:把所有数据都存放于一张表的弊端    1、表的组织结构复杂不清晰    2、浪费空间    3、扩展性极差为了解决上述的问题,就需要用多张表来存放数据。表与表的记录之间存在着三种关系:一对多、多对多、一对一的关系。处理表之间关系问题就会利用到FOREIGN KEY多对一关系:寻找表与表之间的关系的套路    举例:雇员表:emp表   部门:dep表        part1:       ...
关于数据库主(终于弄懂啦)
一、什么是主<em>键</em>、<em>外</em><em>键</em>: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主<em>键</em>  比如   学生表(学号,姓名,性别,班级)  其中每个学生的学号是唯一的,学号就是一个主<em>键</em>  课程表(课程编号,课程名,学分)  其中课程编号是唯一的,课程编号就是一个主<em>键</em>  成绩表(学号,课程号,成绩)  成绩表中单一一个属性无法唯一标识
https://www.cnblogs.com/chenxiaohei/p/6909318.html
关于什么情况需要建立关系
请问这三个表需要<em>建立</em><em>外</em><em>键</em>关系吗? 采购合同内容表 是主表 其他两个是从表
要不要显示的创建关联?
示例: 表A结构如下: uidname 1张飞 2吕布 表B结构如下: biduidboss 12曹操 21刘备 “<em>外</em><em>键</em>是保证数据库一致性的重要手段,可以级联更新(包括增删改),当然可以不使用显式的<em>外</em><em>键</em>,只需要每次做操作的时候【记得】同步更新相关的表数据即可。不过有了<em>外</em><em>键</em>,你如果忘记了,会报错,会提示,但是没有<em>外</em>...
MySQL数据库为什么要使用
用MySQL数据库在表中存储数据时,如果要存储类似京东、淘宝等购物网站的购物信息,一个账户是可以设置多个收货人、收货地址的,那么这时在表中存储的数据应该是这样的: create table user_info( id char(36) primary key comment 'id标识列', user_name varchar(30) not null comment '用户名', ...
数据库到底需不需要设置
在大型系统中(性能要求不高,安全要求高),最好使用<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>约束都转交给dao层)...
数据库是否需要建立
<em>建立</em><em>外</em><em>键</em>的好处: 1) 由数据库保证数据完整性,比程序保证完整性更可靠,多应用时(如有应用A,B,C他们之间的实体存在关联关系),由程序来保证数据完整性变得困难 2) <em>外</em><em>键</em>约束使得数据库的ER图可读性变强,有助于业务逻辑设计 不<em>建立</em><em>外</em><em>键</em>的好处: 1) 可以用触发器或应用程序保证数据的完整性 2) 开发变得简单,维护数据时不用考虑<em>外</em><em>键</em>约束 3) 性能高,大数据量插入操作时不用考虑维护<em>外</em><em>键</em> 讨论结果:...
数据库为什么需要
想象一个场景,我们在电商网站山设置收货地址的时候,往往都是一个账号几个地址,那么在数据库存储的时候,如果不进行其他设置我们的操作是这样的 create table user_info( id char(36) primary key, user_name varchar(30) not null, password varchar(30) not null, real_name...
【MySQL】创建的两种方式
目录 前言 1.创建表时增加<em>外</em><em>键</em> 2.已存在表增加<em>外</em><em>键</em> 参考资料 前言 使用MySQL关联数据表时,创建<em>外</em><em>键</em>的两种方式:创建表时增加<em>外</em><em>键</em>,已存在表增加<em>外</em><em>键</em>。以下案例通过Navicat for MySQL实现。 1.创建表时增加<em>外</em><em>键</em> 首先创建第一张被关联表Vendors商品供应商表。 -- 供应商列表 CREATE TABLE Vendors ( -- 供应商ID:主<em>键</em>列,自增...
SQL Server中建立的方法
::::例子:::: student 表 course 表 select 表
什么是
<em>外</em><em>键</em> 将子表和父表<em>建立</em>关联 引入<em>外</em><em>键</em>后,<em>外</em><em>键</em>只能插入参照列表存在的值,参照列被参照的(即父表中被唯一约束的字段)值不能删除,保证了数据的完整性。举个列子,工地有包工头和小喽喽之分,你可以把小喽喽开除和招进,但不能把包工头给赶走,赶走包工头,小喽喽们就没钱回家过年,多可怜啊!所以说是不允许这样干的。   Create database chapter05; Use chapter05; C...
关于的写法
几个数据表,还有一个关系图(存在主<em>键</em>和<em>外</em><em>键</em>),写一个sql. 我把每个TABLE都用 CREATE TABLE写完,并用INSERT INTO写入数据,并在INSERT INTO的后面用了 selec
数据库中为什么需要
此文将以三个方案为例来说明数据库中为什么需要<em>外</em><em>键</em>(本文使用的是Navicat Premium可视化数据库管理工具来操作数据库) 方案一: createtable user_info( idchar(36) primarykey, user_name varchar(30) notnull, passwordvarchar(30) notnull, real_name varchar(8...
Navicat添加详细操作
前言 用Navicat为mysql数据库的两个表之间<em>建立</em><em>外</em><em>键</em>关系,出现“cannot add foreign key constraint”错误,操作了很久不知道怎么回事,发现竟然是。。。。 正文 想要<em>建立</em>class表与student表之间的<em>外</em><em>键</em>连接,class为父表,student为子表 打开student的设计表。     如果c_id不允许为空则当,选择删除时--&amp;...
数据库——主、索引
概念: 主<em>键</em>(primary key):  能够唯一标识表中某一行的属性或属性组。一个表只能有一个主<em>键</em>,但可以有多个候选索引。主<em>键</em>常常与<em>外</em><em>键</em>构成参照完整性约束,防止出现数据不一致。主<em>键</em>可以保证记录的唯一和主<em>键</em>域非空,数据库管理系统对于主<em>键</em>自动生成唯一索引,所以主<em>键</em>也是一个特殊的索引。 <em>外</em><em>键</em>(foreign key):  是用于<em>建立</em>和加强两个表数据之间的链接的一列或多列。<em>外</em><em>键</em>约束主要用来维护...
约束理解
转自:https://www.cnblogs.com/chenxiaohei/p/6909318.html 数据库(<em>外</em><em>键</em>及其约束理解) 一:首先是<em>外</em><em>键</em>的定义        如果一个字段X在一张表(表一)中是主关<em>键</em>字,而在另<em>外</em>一张表(表二)中不是主关<em>键</em>字,则字段X称为表二的<em>外</em><em>键</em>;换句话说如果关系模式R1中的某属性集不是自己的主<em>键</em>,而是关系模式R2的主<em>键</em>,则该属性集称为是关系模式R1的<em>外</em><em>键</em>。 ...
怎么修改
设置完<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...
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>的表的时候,那就会出现一个问题找不到这个<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按具有相同左部的原则分组,然...
的设置意义
设置MySQL数据表主<em>键</em>:     使用“primary key”关<em>键</em>字创建主<em>键</em>数据列。被设置为主<em>键</em>列不允许出现重复的值,很多情况下与“auto_increment”递增数字相结合。如下SQL语句所示: Mysql>create table books(bookid int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,bookname varch
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
SQL中约束条件要怎么设立?
-
要不要使用
本来我一个小菜鸟,没有什么项目开发经验,关心这个问题也属于纸上谈兵。但自从知道有不用<em>外</em><em>键</em>,全由程序控制数据完整性的方法后,我在学校接受的“<em>外</em><em>键</em>是必须的“思想就承受了一定程度的颠覆。最近又遇上类似的问题,就在网上搜罗了一下,结果百家争鸣,众说纷纭,跟华山论剑似的,看得一头浆糊。想想算了,以后的工作中再加深体验,权且记下各方观点好了:      正方(这个必须有):      1,由数据库自身保证
为什么有人说不建议建立表与表之间的主关系
使用<em>外</em><em>键</em>有利于维持数据完整性和一致性,但是对于开发来说是非常不利的。  每次做DELETE 或者UPDATE都必须考虑<em>外</em><em>键</em>约束,会导致开发的时候很痛苦,而且需要更为复杂的错误捕获机制。  做数据处理时会受到很多的束缚,有些地方本来就可以允许有部分冗余,但是由于设计了<em>外</em><em>键</em>约束,只能放弃。  出现BUG的时候追踪很麻烦。  总的来说,自己来掌握数据总比别人去掌握要方便。  目前我们公
mysql 在表中添加多个/增加/级联约束
1. 建表时创建<em>外</em><em>键</em>:  CREATE TABLE`xh` (  `id` int(100) unsigned NOT NULL AUTO_INCREMENT COMMENT ,  `cl_id` smallint(3) unsigned NOT NULL COMMENT,  `title` varchar(100) COLLATE utf8_unicode_ci NOT NU
sql 语句 建立
我先建表table1:           create   table   table1(id   integer   not   null   primary   key,tbname   char(64))     然后我建表table2:并<em>建立</em><em>外</em><em>键</em>     create   table   table2(id   integer   references   table1(id),tbna
mysql建立约束
MySQL创建关联表可以理解为是两个表之间有个<em>外</em><em>键</em>关系,但这两个表必须满足三个条件 1.两个表必须是InnoDB数据引擎 2.使用在<em>外</em><em>键</em>关系的域必须为索引型(Index) 3.使用在<em>外</em><em>键</em>关系的域必须与数据类型相似   例如: 1、<em>建立</em>s_user表 create table s_user(        u_id int auto_increment primary
pgsql为表建立
A列是TableA的主<em>键</em>,B列为TableB的主<em>键</em>,B在TableA中作为<em>外</em><em>键</em>  语法:  alter table TableA add constraint FK_B foreign key (B) references TableB(B);  ALTER TABLE public.hd_user DROP CONSTRAINT hd_user_fk RESTRICT;  示例.
使用Navicat添加
CREATE TABLE parent(id INT NOT NULL, PRIMARY KEY (id)) TYPE=INNODB; CREATE TABLE child(id INT, parent_id INT, INDEX par_ind (parent_id),
oracle创建约束的两种方式
1、创建表时直接创建<em>外</em><em>键</em>约束 2、先创建表,表创建成功后,单独添加<em>外</em><em>键</em>约束
导出某表所有关联的数据
-
数据库 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><em>键</em>的详解,同时以MySQL数据库举例子解释<em>外</em><em>键</em>及其约束的设置等
、候选和主的区别
超<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中。
PPT模板2个下载
可以直接套用的工作总结模板,可以用于各种类型的总结 相关下载链接:[url=//download.csdn.net/download/u014172743/10671413?utm_source=bbsseo]//download.csdn.net/download/u014172743/10671413?utm_source=bbsseo[/url]
X-plorer 1.22电脑端注册机下载
X-plorer 1.22电脑端注册机 输入手机串号就可以算出注册码 相关下载链接:[url=//download.csdn.net/download/yanyetong/2919932?utm_source=bbsseo]//download.csdn.net/download/yanyetong/2919932?utm_source=bbsseo[/url]
android2.0 游戏开发实战宝典源代码下载
绝对震撼,绝对有用,内含android2.0 游戏开发实战宝典源全书的源代码、有疯狂足球、推箱子、太空保卫战、中国象棋、小球快跑、胜利大逃亡、回到战国等经典游戏的源码,另外还有android一些基础的源码。 相关下载链接:[url=//download.csdn.net/download/jmbdsj/3141167?utm_source=bbsseo]//download.csdn.net/download/jmbdsj/3141167?utm_source=bbsseo[/url]
相关热词 c#部署端口监听项目、 c#接口中的属性使用方法 c# 昨天 c#func链接匿名方法 c#怎么创建文件夹 c#从键盘接收空格 c#da/ad c#部门请假管理系统 c#服务器socket c# 默认的访问修饰符
我们是很有底线的