精华内容
下载资源
问答
  • 数据库外键是什么

    2019-09-30 08:22:20
    外键是什么? 如果有两张表:A,B。 A表有字段:c,d,e,f; B表有d,g,h,i。 那么,d字段就可以叫外键。对于A来说,d是A的字段;对于B来说,d是B的主键。 转载于:...

    外键是什么?

     

    如果有两张表:A,B。

    A表中有字段:c,d,e,f;  B表中有d,g,h,i。

    那么,d字段就可以叫外键。对于A来说,d是A的字段;对于B来说,d是B的主键。

    转载于:https://www.cnblogs.com/zxxsteven/p/9318311.html

    展开全文
  • 数据库中外键的作用

    2016-11-01 15:11:05
    这和软件工程的模块化思想差不多类似,只不过在数据库中是对表关系进行解耦,尽量让表 记录的数据单一化。就如你贴的图片中,把成绩和学生信息放在一张表中就太冗余了,成绩完全可以以学生的id作为区分标识。 ...

    外键用来干什么

    为了一张表记录的数据不要太过冗余。这和软件工程的模块化思想差不多类似,只不过在数据库中是对表关系进行解耦,尽量让表 记录的数据单一化。就如你贴的图片中,把成绩和学生信息放在一张表中就太冗余了,成绩完全可以以学生的id作为区分标识。

    为什么说外键能保持数据的一致性、完整性

    你想想,你的图中的第一章表分割成了表1和表2,表2的学号引用了表1的学号字段作为外键,如果不建立外键,只是和表1一样单纯性 地设立一个学号字段,那么和建立外键有什么区别呢?

    比如表1中张三的学号为20140900001,那么我在表2中插数据的时候在学号字段插20140900001来记录张三的成绩不也是做到了表 的解耦了吗?

    这里存在的问题是,在不设置外键的情况下,表2的学号字段和表1的学号字段是没有关联的。只是你自己认为他们有关系而已,数据库并 不认为它俩有关系。也就是说,你在表2的学号字段插了一个值(比如20140999999),但是这个值在表1中并没有,这个时候,数据库还是允 许你插入的,它并不会对插入的数据做关系检查。然而在设置外键的情况下,你插入表2学号字段的值必须要求在表1的学号字段能找到。 同时,如果你要删除表1的某个学号字段,必须保证表2中没有引用该字段值的列,否则就没法删除。这就是所谓的保持数据的一致性和完整性。你想,如 果表2还引用表1的某个学号,你却把表1中的这个学号删了,表2就不知道这个学号对应的学生是哪个学生。数据的一致性还包括数据类型的一致性(这 个见下面就知道了)。

    外键的使用规则

    从表的字段必须与外键类型相同(如上,分数表 stu 的类型必须和学生表 sid 的类型相同,比如都是 int(10) 类型)外键必须是主表的唯一键(如上,学生表 sid 是主键,而主键是唯一的,所以可以作为分数表 stu 的外键)有关联的字段(如上,分数表之所以使用学生表的 sid 是因为两者有关联,分数表记录的是学生的分数,而学生可以用 sid 来唯 一标识)避免使用复合键(也就是说从表可以同时引用多个外表的字段作为一个外键,一般不推荐这种做法)

    你的问题

    如果表1有多个外键可不可以是这样的情况,表2中的多个字段是表1的外键;或者说表1的多个外键是在多个表中

    都可以。因为表1的外键不一定是表2的主键,也可以是唯一键(UNIQUE)。比如表2有个主键 A,有个唯一键 B,表1两个字段 A' 和 B’ 分别引用表2的 A 和 B,这就是多对多的关系了。再或者表2主键 A,表3主键 B,表1的两个字段 A' 和 B' 分别引用表2的 A 和表3 的 B。

    这个外键可以不是表1的主键,但必须是子表的主键。(简单的说就是,如果一个字段是某个表的外键时,那么该字段必须是主键)

    因为你前面就理解错了,所以这句话本身就是错的。对于从表来说,外键不一定需要作为从表的主键,外键也不一定是外表的主键,外表的唯一键就可以作 为从表的外键。

    展开全文
  • 类型分好多 1.varchar;字符串,用于姓名班级,地址等,地址一般长50,姓名长20 2.int;整数,用于成绩,序号等 3.float;小数 ...5.时间也用varchar,因为datatime...全表不能重复。 2.自增长列 自增长列不...

    类型分好多

    1.varchar;字符串,用于姓名班级,地址等,地址一般长50,姓名长20

    2.int;整数,用于成绩,序号等

    3.float;小数

    4.bit;布尔型,用于性别等

    5.时间也用varchar,因为datatime取得值需要转换

    6.text; 特别长的数 ,随便往里面仍

     

    1.主键

    每个表都要有主键;主键是唯一的。全表中不能重复。


    2.自增长列

    自增长列是不好找主键时候用 名称是ids  类型是int 这一列是没有意义的。下面自动增长点对号

     


    3.外键
    从表
    主表
    主表控制从表
    主表中的外键列一定是主键。 类型什么的一定要一样,练习时候用了一次类型写错了结果不能建立,以后要注意

     

    规则:
    数据库三大范式

    第一范式:保证每一列的原子性,也就是拆到最小单位
    山东省淄博市张店区*****
    山东省 淄博市 张店区

    第二范式:保证数据表的每一列都和主键相关

    第三范式:保证数据表的每一列都和主键直接相关

    1.将表拆分,一直到不能拆分为止
    2.表名加前缀,小写
    3.如果找不到主键,就用自增长列
    4.外键关系可以不用加

    转载于:https://www.cnblogs.com/sq45711478/p/5962880.html

    展开全文
  • 外键是数据库一级的一个完整性约束,就是数据库基础理论书所说的“参照完整性”的数据库实现方式。    外键属性当然是可以去掉的,如果你不想再用这种约束,对编程当然不会有什么影响,但相应的录入数据的...

    http://blog.csdn.NET/tiantian1980/article/details/1603126

    外键是数据库一级的一个完整性约束,就是数据库基础理论书中所说的“参照完整性”的数据库实现方式。   
        
      外键属性当然是可以去掉的,如果你不想再用这种约束,对编程当然不会有什么影响,但相应的录入数据的时候就不对录入的数据进行“参照完整性”检查了。   
        例如有两个表   
      A(a,b)   :a为主键,b为外键(来自于B.b)   
      B(b,c,d)   :b为主键    
      如果我把字段b的外键属性去掉,对编程没什么影响。
      如上面,A中的b要么为空,要么是在B的b中存在的值,有外键的时候,数据库会自动帮你检查A的b是否在B的b中存在。

      1、外建表达的是参照完整性:这是数据固有的,与程序无关。因此,应该交给DBMS来做。   
      2、使用外建,简单直观,可以直接在数据模型中体现,无论是设计、维护等回有很大的好处,特别是对于分析现有的数据库的好处时非常明显的--前不久我分析了一个企业现有的数据库,里面的参照完整性约束有的是外键描述,有的是用触发器实现,感觉很明显。当然,文档里可能有,但是也可能不全,但是外键就非常明显和直观。   
      3、既然我们可以用触发器或程序完成的这个工作(指参照完整性约束),DBMS已经提供了手段,为什么我们要自己去做?而且我们做的应该说没有RDBMS做得好。实际上,早期的RDBMS并没有外键,现在都有了,我认为数据库厂商增加这个功能是有道理的。从这个角度来说,外键更方便。   
      4、关于方便,根据我带项目的情况来看,程序员确实有反映,主要是在调试时输入数据麻烦:如果数据可以违反参照完整性,那么就是说参照完整性本身就不对名誉业务冲突,此时也不应该用触发期货程序实现;否则,说明数据是错误的,根本就不应该进入数据库!而且,这也应该是测试系统的一个内容:阻止非法数据。实际上,前台程序应该对这种提交失败做出处理。数据是企业的而非程序的,储程序要尽量与数据分离,反之亦然。

    最后说一下,建键几个原则:

    1、 为关联字段创建外键。
    2、 所有的键都必须唯一。
    3、避免使用复合键。
    4、外键总是关联唯一的键字段。 


    http://www.cnblogs.com/ywb-lv/archive/2012/03/12/2391860.html

    定义主键和外键主要是为了维护关系数据库的完整性,总结一下:

    一、主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。

    外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。


    二、主键、外键和索引的区别

    定义:

     主键--唯一标识一条记录,不能有重复的,不允许为空

     外键--表的外键是另一表的主键外键可以有重复的可以是空值

     索引--该字段没有重复值,但可以有一个空值


    作用:

     主键--用来保证数据完整性

     外键--用来和其他表建立联系用的

     索引--是提高查询排序的速度


    个数:

     主键--主键只能有一个

     外键--一个表可以有多个外键

     索引--一个表可以有多个唯一索引

    展开全文
  • Sql Server: What is the benefit of using “Enforce foreign key constraint” when it's set to “NO”? 问 I know the purpose of "Enforce foreign key constraint" in RDBMS....
  • 数据库中外键是什么意思?

    千次阅读 2012-12-02 15:44:41
    设表t1,t2中都有一个name字段,而且t1的主键 那么如果设t2的name为外键的话 向t2添加数据的时候,如果name值不在t1之就会报错
  • 什么不建议数据库外键

    千次阅读 2020-01-16 20:52:21
    有人可能在面试的时候被问到过,你觉得为什么不建议数据库通过构建外键做约束?你可以回答说,在《阿里Java开发手册》中是这样说的:不得使用外键与级联,一切外键概念必须在应用层解决。而且这个规约强制的。但是...
  • 数据库主键外键

    2017-04-07 22:48:00
    关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意组)能唯一标识一条记录,该属性组就可以成为一个主键比如学生表(学号,姓名,性别,班级)其中每个学生的学号唯一的,学号就是一个主键课程表...
  • 对于主/外键/索引来说,在一些开发团队被认为处理数据库关系的利器,也被某些开发团队认为处理某些具体业务的魔鬼,您的观点呢?在实际应用您会采取哪种方式? 大家共同观点:主键和索引不可少的,不仅...
  • mysql数据库-外键

    2017-04-24 10:17:05
    什么是外键外键的作用就是一个表某列的值必须来自另一个表某列的值,否则数据将无法插入,这就是外键的作用  外键使用的条件?  所有的外键都必须在innodb表使用,而mysqlisam表中是无法使用外键的  ...
  • 灵活运用数据库外键

    千次阅读 热门讨论 2012-06-17 00:32:07
    在最近的工作发现,公司现有表都没有主外键关系的,也就是没有加数据库外键约束,全部都采用程序来控制数据的一致性。这点让我很不解,从当初学习数据库,到参加工作使用数据库和设计数据库,一直都遵循...
  • Oracle数据库-外键约束

    千次阅读 2018-03-08 16:48:48
    在企业实战有80%的企业不使用外键约束,有20%的企业使用外键约束,所以,外键约束加与不加,看的是实际情况下的公司要求是怎样的那问题来了,外键约束的作用是什么??1. 就是当两张表关联时,是通过id关联的, 外键所.....
  • 数据库外键设计

    千次阅读 2016-04-22 15:18:45
    一、什么是主键、外键: 关系型数据库中的一条记录中有若干个属性,若其中  某一个属性组(注意组)能唯一标识一条记录  ,该属性组就可以成为一个主键  比如  学生表(学号,姓名,性别,班级)  其中每...
  • 数据库中外键(ForeignKey)是什么

    千次阅读 2020-07-13 19:01:16
    外键是用来连接两个表的键。一个外键是一个指向另一个表的primary key的字段(或字段的集合)。
  • 关于数据库外键和主键

    千次阅读 2018-03-18 10:23:09
    转自:http://blog.csdn.net/championhengyi/article/details/78559789什么是主键、外键关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意组)能唯一标识一条记录,该属性组就可以成为一个主键。...
  • 什么是数据库外键?

    2021-04-10 21:17:42
    外键就是一个表的一个字段引用了另一个表的主键,引用的表叫做子表,被引用的表叫做主表,外键是一种约束,描述的是表之间的关系。
  • 数据库中外键

    2019-09-09 16:38:14
    关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意组)能唯一标识一条记录,该属性组就可以成为一个主键 比如 学生表(学号,姓名,性别,班级) 其中每个学生的学号唯一的,学号就是一个主键 课程...
  • 数据库中主键、超键、候选键、外键是什么? 超键(super key): 在关系中能唯一标识元组的属性集称为关系模式的超键 候选键(candidate key): 不含有多余属性的超键称为候选键。也就是在候选键中,若再删除属性...
  • 数据库外键

    2019-05-12 00:07:32
    到了今天我才明白,为什么要用外键关联其他的表,目的就是用时间换空间。 如果不用外键,所有记录的信息全部都放到同一张表,自然查询速度很大。但是这样却会耗费大量的内存。比 如:学生和班级,如果无外键关联...
  • 1、关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意组)能唯一标识一条记录,该属性组就可以成为一个主键 。 2、①外键(FK)用于建立或加强两个表数据之间的链接的一列或多列。 ②通过将表...
  • 此文将以三个方案为例来说明数据库中什么需要外键(本文使用的Navicat Premium可视化数据库管理工具来操作数据库) 方案一: createtable user_info( idchar(36) primarykey, user_name varchar(30) notnull, ...
  • 数据库 外键

    千次阅读 2009-01-08 22:04:00
    外键是什么? 外键 (FK) 是用于建立和加强两个表数据之间的链接的一列或多列。通过将保存表主键值的一列或多列添加到另一个表,可创建两个表之间的链接。这个列就成为第二个表的外键。 外键数据库一级的完整性...
  • 我们来看一下设置外键的时候 可以看到删除时,和更新时会产生什么效果 1.其中setnull当被引用的表的记录删除时,会将我们的对应的字段设置为空 比如,我们将部门20001销售部删除时,我们的前两个员工因为部门...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,185
精华内容 474
关键字:

数据库中外键是什么