精华内容
下载资源
问答
  • 数据库中的外键什么意思

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

    千次阅读 2018-10-18 18:30:05
    最近自学数据库MySQL,然后有个疑问,一直不得其解,查询了相关资料,最后还是... 关于外键,我有自己的一些理解,但是不晓得是否正确,举个例子来表达我的看法:假如现在需要建立一个表,一个什么样的表呢?一个班...

    最近自学数据库MySQL,然后有个疑问,一直不得其解,查询了相关资料,最后还是没有解决。
          我的疑问是 "使用外键约束" ,然后我对 "外键" 这个词不是很理解,查询相关资料都是讲一些术语,说外键的主要作用是:保持数据的一致性、完整性。听得我是一头雾水。
          关于外键,我有自己的一些理解,但是不晓得是否正确,举个例子来表达我的看法:假如现在需要建立一个表,一个什么样的表呢?一个班级的学生个人信息表:

          所以在设计的时候,就给表1添加一个外键,这个外键就是表2中的学号字段,那么这样表1就是主表,表2就是子表。所以结合2张表就能保持数据的一致性、完整性(估计就是还原成原来的那张大表吧)。
          借着这个例子再谈谈外键的一些事项:
    1、表1可以有一个或者多个外键,也可以没有。(如果表1有多个外键可不可以是这样的情况,表2中的多个字段是表1的外键;或者说表1的多个外键是在多个表中)
    2、这个外键可以不是表1的主键,但必须是子表的主键。(简单的说就是,如果一个字段是某个表的外键时,那么该字段必须是主键)

    以上就是我个人对外键的理解。

    -------------------------------------解--------答-------------------------------------

    什么是外键

    +-------+   ref   +-------+
    |  sub  | ------> |  main |
    +-------+         +-------+

    从表(sub)的某列引用(ref)主表(main)的某列的值。比如学生表有个学生编号(sid),分数表中的学生列(stu)引用学生表的学 生编号,此时对于分数表的 stu 来说,学生表的 sid 就是外键。从表也叫外键表,主表也叫主键表、外表,列也叫字段。

    所以在设计的时候,就给表1添加一个外键,这个外键就是表2中的学号字段,那么这样表1就是主表,表2就是子表

    你的主从关系理解颠倒了。你的图中,表1的确是主表,表2是子表,但不是叫做给表1添加一个外键,而是给表2添加一个外键,表2中的学号 字段就叫外键,它是表1学号字段的主键。你可以这样说:表1的学号字段是表2的外键。

    外键用来干什么

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

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

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

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

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

    外键的使用规范

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

    你的问题

    1. 如果表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。

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

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

    再给一张图以帮助理解

    转载自:http://blog.csdn.net/li_jun_09_05/article/details/32132259

    展开全文
  • 一、首先是外键的定义 如果一个字段A在一张表(表一)中是主关键字,而在另外一张表(表二)中不是主关键字,则字段A称为表二的外键。 二、主键表和外键表的理解 (1)以公共关键字作主键的表为主键表(父表,主表)...

    一、首先是外键的定义

    如果一个字段A在一张表(表一)中是主关键字,而在另外一张表(表二)中不是主关键字,则字段A称为表二的外键。

    二、主键表和外键表的理解

    (1)以公共关键字作主键的表为主键表(父表,主表)

    (2)以公共关键字作外键的表为外键表(从表,外表)

    这里有2张表(student和depart)学生表和院系表,这里的字段departNum就有是学生表的外键,这里的外键表是学生表,主键表是院系表。你以外键的身份存在的表就是外键表,反之主键表。主键表外键表 看是对哪个键而言。

    三、个人总结:

    你去别人家,你是外人,也就是外键,他家对你来说是外家,也就说外键表。
    你回到你的家,你是主人,你的家是你的主键表,所以你到底是在自己家还是别人家还是分的清的吧。

    展开全文
  • 数据库中主键、超键、候选键、外键什么? 超键(super key): 在关系中能唯一标识元组的属性集称为关系模式的超键 候选键(candidate key): 不含有多余属性的超键称为候选键。也就是在候选键中,若再删除属性...

    数据库中主键、超键、候选键、外键是什么?

     

     

    超键(super key): 在关系中能唯一标识元组的属性集称为关系模式的超键

    候选键(candidate key): 不含有多余属性的超键称为候选键。也就是在候选键中,若再删除属性,就不是键了!

    主键(primary key): 用户选作元组标识的一个候选键程序主键

    外键(foreign key):如果关系模式R中属性K是其它模式的主键,那么k在模式R中称为外键。

    举例

    比如有如下数据:

    学号姓名性别年龄系别专业
    20020612李辉20计算机软件开发
    20060613张明18计算机软件开发
    20060614王小玉19物理力学
    20060615李淑华17生物动物学
    20060616赵静21化学食品化学
    20060617赵静20生物植物学
    1. 超键

      在关系中能唯一标识元组的属性集称为关系模式的超键。

      于是我们从例子中可以发现 学号是标识学生实体的唯一标识。那么该元组的超键就为学号。

      除此之外我们还可以把它跟其他属性组合起来,比如:

      (学号性别)

      (学号年龄)

      这样也是超键.

    2. 候选键

      不含多余属性的超键为候选键。

      根据例子可知,学号是一个可以唯一标识元组的唯一标识,因此学号是一个候选键,实际上,候选键是超键的子集,比如 (学号,年龄)是超键,但是它不是候选键。因为它还有了额外的属性。

    3. 主键

      用户选择的候选键作为该元组的唯一标识,那么它就为主键。

      简单的说,例子中的元组的候选键为学号,但是我们选定他作为该元组的唯一标识,那么学号就为主键。

    4. 外键

      外键是相对于主键的,比如在学生记录里,主键为学号,在成绩单表中也有学号字段,因此学号为成绩单表的外键,为学生表的主键。

    主键为候选键的子集,候选键为超键的子集,而外键的确定是相对于主键的。


     

    What are Keys in DBMS?

    KEYS in DBMS is an attribute or set of attributes which helps you to identify a row(tuple) in a relation(table). They allow you to find the relation between two tables. Keys help you uniquely identify a row in a table by a combination of one or more columns in that table. Key is also helpful for finding unique record or row from the table. Database key is also helpful for finding unique record or row from the table.

    Example:

    Employee IDFirstNameLastName
    11AndrewJohnson
    22TomWood
    33AlexHale

    In the above-given example, employee ID is a primary key because it uniquely identifies an employee record. In this table, no other employee can have the same employee ID.

     

     

     

    In this tutorial, you will learn:

    Why we need a Key?

    Here are some reasons for using sql key in the DBMS system.

    • Keys help you to identify any row of data in a table. In a real-world application, a table could contain thousands of records. Moreover, the records could be duplicated. Keys ensure that you can uniquely identify a table record despite these challenges.
    • Allows you to establish a relationship between and identify the relation between tables
    • Help you to enforce identity and integrity in the relationship.

    Types of Keys in Database Management System

    There are mainly seven different types of Keys in DBMS and each key has it’s different functionality:

    • Super Key -  A super key is a group of single or multiple keys which identifies rows in a table.
    • Primary Key -  is a column or group of columns in a table that uniquely identify every row in that table.
    • Candidate Key -  is a set of attributes that uniquely identify tuples in a table. Candidate Key is a super key with no repeated attributes.
    • Alternate Key -  is a column or group of columns in a table that uniquely identify every row in that table.
    • Foreign Key -  is a column that creates a relationship between two tables. The purpose of Foreign keys is to maintain data integrity and allow navigation between two different instances of an entity.
    • Compound Key -  has two or more attributes that allow you to uniquely recognize a specific record. It is possible that each column may not be unique by itself within the database.
    • Composite Key -  An artificial key which aims to uniquely identify each record is called a surrogate key. These kind of key are unique because they are created when you don't have any natural primary key.
    • Surrogate Key -  An artificial key which aims to uniquely identify each record is called a surrogate key. These kind of key are unique because they are created when you don't have any natural primary key.

    What is the Super key?

    A superkey is a group of single or multiple keys which identifies rows in a table. A Super key may have additional attributes that are not needed for unique identification.

    Example:

    EmpSSNEmpNumEmpname
    9812345098AB05Shown
    9876512345AB06Roslyn
    199937890AB07James

    In the above-given example, EmpSSN and EmpNum name are superkeys.

    What is a Primary Key?

    PRIMARY KEY is a column or group of columns in a table that uniquely identify every row in that table. The Primary Key can't be a duplicate meaning the same value can't appear more than once in the table. A table cannot have more than one primary key.

    Rules for defining Primary key:

    • Two rows can't have the same primary key value
    • It must for every row to have a primary key value.
    • The primary key field cannot be null.
    • The value in a primary key column can never be modified or updated if any foreign key refers to that primary key.

    Example:

    In the following example, <code>StudID</code> is a Primary Key.

    StudIDRoll NoFirst NameLastNameEmail
    111TomPriceabc@gmail.com
    212NickWrightxyz@gmail.com
    313DanaNatanmno@yahoo.com

    What is the Alternate key?

    ALTERNATE KEYS is a column or group of columns in a table that uniquely identify every row in that table. A table can have multiple choices for a primary key but only one can be set as the primary key. All the keys which are not primary key are called an Alternate Key.

    Example:

    In this table, StudID, Roll No, Email are qualified to become a primary key. But since StudID is the primary key, Roll No, Email becomes the alternative key.

    StudIDRoll NoFirst NameLastNameEmail
    111TomPriceabc@gmail.com
    212NickWrightxyz@gmail.com
    313DanaNatanmno@yahoo.com

    What is a Candidate Key?

    CANDIDATE KEY is a set of attributes that uniquely identify tuples in a table. Candidate Key is a super key with no repeated attributes. The Primary key should be selected from the candidate keys. Every table must have at least a single candidate key. A table can have multiple candidate keys but only a single primary key.

    Properties of Candidate key:

    • It must contain unique values
    • Candidate key may have multiple attributes
    • Must not contain null values
    • It should contain minimum fields to ensure uniqueness
    • Uniquely identify each record in a table

    Example: In the given table Stud ID, Roll No, and email are candidate keys which help us to uniquely identify the student record in the table.

    StudIDRoll NoFirst NameLastNameEmail
    111TomPriceabc@gmail.com
    212NickWrightxyz@gmail.com
    313DanaNatanmno@yahoo.com

    What is the Foreign key?

    FOREIGN KEY is a column that creates a relationship between two tables. The purpose of Foreign keys is to maintain data integrity and allow navigation between two different instances of an entity. It acts as a cross-reference between two tables as it references the primary key of another table.

    Example:

    DeptCodeDeptName
    001Science
    002English
    005Computer
    Teacher IDFnameLname
    B002DavidWarner
    B017SaraJoseph
    B009MikeBrunton

    In this key in dbms example, we have two table, teach and department in a school. However, there is no way to see which search work in which department.

    In this table, adding the foreign key in Deptcode to the Teacher name, we can create a relationship between the two tables.

    Teacher IDDeptCodeFnameLname
    B002002DavidWarner
    B017002SaraJoseph
    B009001MikeBrunton

    This concept is also known as Referential Integrity.

    What is the Compound key?

    COMPOUND KEY has two or more attributes that allow you to uniquely recognize a specific record. It is possible that each column may not be unique by itself within the database. However, when combined with the other column or columns the combination of composite keys become unique. The purpose of the compound key in database is to uniquely identify each record in the table.

     

    Example:

    OrderNoPorductIDProduct NameQuantity
    B005JAP102459Mouse5
    B005DKT321573USB10
    B005OMG446789LCD Monitor20
    B004DKT321573USB15
    B002OMG446789Laser Printer3

    In this example, OrderNo and ProductID can't be a primary key as it does not uniquely identify a record. However, a compound key of Order ID and Product ID could be used as it uniquely identified each record.

    What is the Composite key?

    COMPOSITE KEY is a combination of two or more columns that uniquely identify rows in a table. The combination of columns guarantees uniqueness, though individually uniqueness is not guaranteed. Hence, they are combined to uniquely identify records in a table.

    The difference between compound and the composite key is that any part of the compound key can be a foreign key, but the composite key may or maybe not a part of the foreign key.

    What is a Surrogate key?

    SURROGATE KEYS is An artificial key which aims to uniquely identify each record is called a surrogate key. This kind of partial key in dbms is unique because it is created when you don't have any natural primary key. They do not lend any meaning to the data in the table. Surrogate key is usually an integer. A surrogate key is a value generated right before the record is inserted into a table.

    FnameLastnameStart TimeEnd Time
    AnneSmith09:0018:00
    JackFrancis08:0017:00
    AnnaMcLean11:0020:00
    ShownWillam14:0023:00

    Above, given example, shown shift timings of the different employee. In this example, a surrogate key is needed to uniquely identify each employee.

    Surrogate keys in sql are allowed when

    • No property has the parameter of the primary key.
    • In the table when the primary key is too big or complicated.

    Difference Between Primary key & Foreign key

    Primary KeyForeign Key
    Helps you to uniquely identify a record in the table.It is a field in the table that is the primary key of another table.
    Primary Key never accept null values.A foreign key may accept multiple null values.
    Primary key is a clustered index and data in the DBMS table are physically organized in the sequence of the clustered index.A foreign key cannot automatically create an index, clustered or non-clustered. However, you can manually create an index on the foreign key.
    You can have the single Primary key in a table.You can have multiple foreign keys in a table.

    Summary

    • A key in SQL is an attribute or set of attributes which helps you to identify a row(tuple) in a relation(table)
    • DBMS keys allow you to establish a relationship between and identify the relation between tables
    • Seven Types of DBMS keys are Super, Primary, Candidate, Alternate, Foreign, Compound, Composite, and Surrogate Key.
    • A super key is a group of single or multiple keys which identifies rows in a table.
    • A column or group of columns in a table which helps us to uniquely identifies every row in that table is called a primary key
    • All the keys which are not primary key are called an alternate key
    • A super key with no repeated attribute is called candidate key
    • A compound key is a key which has many fields which allow you to uniquely recognize a specific record
    • A key which has multiple attributes to uniquely identify rows in a table is called a composite key
    • An artificial key which aims to uniquely identify each record is called a surrogate key
    • Primary Key never accept null values while a foreign key may accept multiple null values.

     

    参考:主键 超键 候选键 外键是什么

    参考:Difference Between Primary and Candidate Key

    参考:DBMS Keys: Candidate, Super, Primary, Foreign (Example)

     

    展开全文
  • sql server 外键 In this article, we will seek an answer to an important question – “What is a foreign key in SQL Server?”. At the same time, we will give some seconder answers to this question. ...
  • 什么是外键?为什么要使用外键

    千次阅读 2019-09-26 17:26:08
    什么是外键? 外键 ( foreign key ) 是用于建立和加强两个表数据之间的链接的一列或多列。通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就成为第二个表的外键。 为什么要...
  • 有一个东西一直在我脑海中是个很烦的东西,但是这...什么的,我想信很多小伙伴都不明白到底什么意思. 首先我么要搞明白,为什么要使用外键, 比如有两张表(在最下面我会附上表的创建SQL语句,以及外键的添加和关...
  • 什么是外键表,什么是主键表?

    千次阅读 2017-03-17 17:04:42
    表1属性有:typeid(主键...表1是主键表、表1的主键字段在表2中做外键、而表1自己却没有外键表2是外键表有一个依赖表1typeid的字段、作为外键、取值必须是其依赖主键表表1中主键字段有的值 ---------------------------
  • 外键

    2019-07-06 12:28:00
    一、什么是外键 表的外键是另一个表的主键,外键可以有重复的,可以是空值。 比如: 有一个年级表(Grade)中有2列,年级ID和年级名如下,并且有以下4条记录,在这个表中GradeId列为主键。 我们还有另一个表,...
  • 什么是数据库外键?

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

    千次阅读 2015-06-16 19:59:38
    什么是外键?为什么要使用外键?如何来用?不用会怎样? 分类: 数据库2009-08-21 10:40 3928人阅读 评论(2) 收藏 举报 数据库 什么是外键 外键 (FK) 是用于建立和加强两个表数据之间的链接的一...
  • 什么是外键约束?

    2014-10-08 21:52:00
    如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表,外键是用来实现参照完整性的。 转自:Dirichlet的博客:http://www.cnblogs.com/dirichlet/archive/2011/01/02/1924298.html ...
  • 什么是主键和外键

    万次阅读 多人点赞 2018-07-02 09:06:59
    一、什么是主键、外键:关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键 比如 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一...
  • 数据库中的外键(ForeignKey)是什么

    千次阅读 2020-07-13 19:01:16
    外键是用来连接两个表的键。一个外键是一个指向另一个表中的primary key的字段(或字段的集合)。
  • alter table questioncommitResult add CONSTRAINT fk_questionCommit_person foreign key(uid) REFERENCES person(id); 用的类型一样, 字符集默认也是一样的,但是漏了一点,person表我用的是 bigint unsigned, 而...
  • 外键外键约束理解

    万次阅读 多人点赞 2018-08-20 20:11:27
    数据库(外键及其约束理解) 一:首先是外键的定义  如果一个字段X在一张表(表一)中是主关键字,而在另外一张表(表二)中不是主关键字,则字段X称为表二的外键;换句话说如果关系模式R1中的某属性集不是自己的...
  • MySQL外键约束(FOREIGN KEY)是什么

    千次阅读 2020-05-16 18:02:40
    对MySQL中的外键约束从基础知识开始,说明了创建外键约束的原则,语法及特性,用案例的方式对外键约束进行解说。
  • 在晚上看到的一网友的评论,引起我的共鸣,一直以来的想法不知如何表述、也不知对不对。于是,[ 逻辑外键代替物理外键 ]便是我想表达的意思
  • 物理外键和逻辑外键的区别

    千次阅读 2019-07-17 10:20:00
    1.当看到物理外键的时候,第一反应是有物理外键那一定有逻辑外键,那我熟悉的外键什么? 物理外键指的是使用foreign key 作为外键关联另一张的字段的连接方法,而且限定了引擎为InnoDB,而逻辑外键,又叫做事实...
  • 外键约束

    2014-08-05 14:49:00
    如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表。外键是用来实现参照完整性的,不同的外键约束方式将可以使两张表紧密的结合起来,特别是修改或者删除的级联操作将使得日常的...
  • 禁用外键约束是什么 不得使用外键与级联,一切外键概念必须在应用层解决。 为什么禁用外键约束 首先,假设我们用了数据库约束外键,每次做 DELETE 或者 UPDATE 都必须考虑外键约束,会导致开发的时候很痛苦,测试...
  • mysql外键

    2017-02-08 22:58:52
    mysql foreign key(外键) 说明与实例一,什么是foreign key,及其完整性 个人觉得,foreign key就是表与表之间的某种约定的关系,由于这种关系的存在,我们能够让表与表之间的数据,更加的完整,关连性更强。关于...
  • 给商品表(从表)添加一个外键ALTER TABLE product ADD CONSTRAINT FK_cno FOREIGN KEY(cno) REFERENCES category(cid 从表);sql语句的执行顺序是:from-->WHERE-->GROUP BY -->HAVING --- >ORDER BY --&...
  • 4. 外键约束 级联操作 首先我们来想象一下,前几篇文章在我们操作数据库的过程中,自由度是很高的,想给哪个赋值就给哪个赋值,但是这样子,就会造成我们所创建的数据库数据不完整,例如我创建一个学生信息表,你...
  • 外键约束 外键必须是另一个表的主键。 外键的作用: 1.实体完整性,确保每个实体是唯一的(通过主键来实施) 2.域完整性,确保属性值只从一套可选的集合里选择 3.关联完整性,确保每个外键或null或含有与相关主键值...
  • “内容表达的不同对象”的意思是指例如两个对象房东和房子,房东的属性假设有id,name等,而房子有属性id,area,price,address等,房子和房东是不相同的对象,但是房东和房子又有逻辑上的联系,即某一间房子属于某...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,124
精华内容 10,849
关键字:

外键是什么意思