精华内容
下载资源
问答
  • 数据库外键的设计 子,父的定义 拥有外键的是子,主键被其他引用的是父 因为父的标识被很多子中的记录引用,所以叫父。 拥有外键关系,并且可以随便删除数据,不影响其他的数据的那个叫子...

    数据库外键的设计

    子表,父表的定义

    拥有外键的表是子表,主键被其他表引用的表是父表
    因为父表的标识被很多子表中的记录引用,所以叫父表。
    拥有外键关系,并且可以随便删除数据,不影响其他表的数据的那个表叫子表。
    使用的时候谁做为谁的外键,主要从以下两点考虑:
    1,删除是如何相互影响的,删除记录受约束的那个是父表,不受约束的那个是子表;
    2,记录必须先存在的是父表;

    外键的用途

    1, 最常用的一种: 减少重复数据.表A中拥有外键,表B的数据基本是不允许删除的.这时选择对 INSERT 和 UPDATE 强制关系即可.
    2,其次,是增加一个从属表. 如果表A删除一条记录时,表B中也随着删除一条相关联的记录,那么外键关系中,表A的主键是表B的外键。这种关系,实际上表B是表A的从属表(即表A是父表),选择对 INSERT 和 UPDATE 强制关系时,如果向表B中插入数据,表A中必须已经存在对应的记录。选择级联删除相关的字段时,删除表A中的一条记录,就会删除对应的表B中的一条记录。

    数据库的三范式

    第一范式(1NF):要求数据库表的每一列都是不可分割的原子数据项
    第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)
    第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关
    第一范式的关键词是列的原子性》第二范式的关键词是不能包含部分依赖》第三范式的关键词是不能包含传递依赖
    ForeignKey就是一个多对一的字段,而被ForeignKey关联的字段就是一对多字段

    展开全文
  • 数据库表外键关联

    千次阅读 2013-11-20 11:58:01
    今天在更改数据库表外键关联的时候遇到一些问题,于是去学习了一些关于外键关联的问题。 先说一下问题: 对有外键操作,经常会提示类似下图的问题。 1451-Cannot delete or update a ...

    今天在更改数据库表的外键关联的时候遇到一些问题,于是去学习了一些关于外键关联的问题。


    先说一下问题:


    对有外键的表操作,经常会提示类似下图的问题。


    1451-Cannot delete or update a parent row: a foreign ket constraint fails

    1452- Cannot add or update a child row: a foreign key constraint fails:xxx.<result 2...



    大概意思我们一眼就能看出是因为外键的关系所以操作失败。


    是因为你关联的表中有使用这条数据,


    方案一:更改这条数据。


    方案二:更改外键关联约束。(这个后面研究好了再补充)


    展开全文
  • 数据库表外键和显示

    2017-05-11 14:49:31
    连接外键显示中相应的字段和记录: select d.user_id,  d.user_name,  d.user_password,  d.user_role_id,  d.user_role_name,  d.user_tel_mobile,  d.user_dept_name,  d.user_ma


    连接外键显示表中相应的字段和记录:


    select d.user_id,

          d.user_name,
          d.user_password,
          d.user_role_id,
          d.user_role_name,
          d.user_tel_mobile,
          d.user_dept_name,
          d.user_major,
          e.chinese,
          e.math,
          e.english

           from system_user d left join system_score e on d.user_id = e.user_id;


    利用外键来执行查询:

    select d.user_id,
          d.user_name,
          d.user_password,
          d.user_role_id,
          d.user_role_name,
          d.user_tel_mobile,
          d.user_dept_name,
          d.user_major,
          e.chinese,
          e.math,
          e.english from system_user d,system_score e where e.user_id=d.user_id;

    展开全文
  • 数据库表外键设置

    2012-11-07 11:15:00
    我们在建立数据库的时候,需要为每张指定一个主键,所谓主键就是能够唯一标识中某一行的属性或属性组,一个只能有一个主键,但可以有多个候选索引。因为主键可以唯一标识某一行记录,所以可以确保执行数据更新...

    http://blog.csdn.net/pplsunny/article/details/7747340

    我们在建立数据库的时候,需要为每张表指定一个主键,所谓主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引。因为主键可以唯一标识某一行记录,所以可以确保执行数据更新、删除的时候不会出现张冠李戴的错误。当然,其它字段可以辅助我们在执行这些操作时消除共享冲突,不过就不在这里讨论了。主键除了上述作用外,常常与外键构成参照完整性约束,防止出现数据不一致。所以数据库在设计时,主键起到了很重要的作用。

    常见的数据库主键选取方式有:

    • 自动增长字段
    • 手动增长字段
    • UniqueIdentifier
    • “COMB(Combine)”类型

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

     

    详细例子:

         创建来年各个简单的表:Author表和Detail表

    Sql语句如下:

    create table Author
    (
    idint identity(1,1) primary key not null,
    namevarchar(50)
    )

    create table Detail
    (
    idint identity(1,1) primary key not null,
    author_id      int,

            detail            varchar(50)
    )

     

    --添加外键约束语法注释:alter table 表名 add constraint 约束名 foreign key (引用外键列名) references 外键表(外键列)

    可视化的操作方法:

      table->选中表->design->选中需要设置外键的字段->选择“关系”->选择"添加"->在表和列规范处选择右边省略号(见图一)->再选择相应关系(见图二)。

    如图:

    图一:

     


     

     

    图二:

     

     


     

    备注:

    1.。。外键和主键的字段的数据类型必须相同。

    2.。。在删除表的时候要先删除外键表才能删除主键表

    3.。。图二中主键表选择要设置外键字段参照的表(即主键表的一个主键是将要设计的外键),外键表就是要添加外键的表。

     

    下面提供一个网上搜集的综合实例.

     

    --创建数据库
    USE master
    GO
    IF EXISTS(SELECT * FROM sysdatabases WHERE NAME='study')
    DROP DATABASE study
    GO

    CREATE DATABASE study
    ON
    ( NAME = study_dat,
       FILENAME = 'c:/study/study_data.mdf',
       SIZE = 5MB,
       MAXSIZE = 25MB,
       FILEGROWTH = 5MB )
    LOG ON
    ( NAME = 'study_log',
       FILENAME = 'c:/study/study_log.ldf',
       SIZE = 5MB,
       MAXSIZE = 25MB,
       FILEGROWTH = 5MB )
    GO

    --打开库
    use study

    --创建表

    IF EXISTS(SELECT * FROM sysobjects WHERE NAME='Stu_PkFk_S')
    DROP TABLE Stu_PkFk_S
    GO
    create table Stu_PkFk_S
    (
    sno char(6),
    sname char(10),
    age int,
    sex char(2),
    constraint PK_S primary key (sno),   --主键
    constraint CK_age check(age>=0 and age<=150)  --约束
    )

    create table Stu_PkFk_C
    (
    cno char(8),
    cname char(16),
    credit int,
    constraint PK_C primary key (cno), --主键
    constraint CK_credit check (credit>=0)  --约束
    )

    create table Stu_PkFk_SC
    (
    sno char(6),
    cno char (8),
    constraint PK_SC primary key (sno,cno),
    constraint FK_s foreign key (sno) references Stu_PkFk_S(sno), --外键
    constraint FK_c foreign key (cno) references Stu_PkFk_C(cno)
    )

    --测试数据
    insert into Stu_PkFk_S values ('001','zhang',19,'男')

    insert into Stu_PkFk_S values('002','li',16,'女')

    insert into Stu_PkFk_C values('001','li',100)

    insert into Stu_PkFk_SC values('002','001')

    select * from Stu_PkFk_S
    select * from Stu_PkFk_C
    select * from Stu_PkFk_SC

    DELETE FROM Stu_PkFk_S
    DELETE FROM Stu_PkFk_SC

     
    --测试添加删除外键
    --添加外键约束语法注释:alter table 表名 add constraint 约束名 foreign key (引用外键列名) references 外键表(外键列)

    --删除外键
    alter table Stu_PkFk_Sc drop constraint  FK_s
    alter table Stu_PkFk_SC drop constraint  FK_c

    --添加外键
    alter table Stu_PkFk_Sc
            add constraint Fk_s
            foreign key (sno)
            references Stu_PkFk_S(sno)
    go

    alter table Stu_PkFk_SC
            add constraint Fk_c
            foreign key (cno)
            references Stu_PkFk_C(cno)
    go

     

    --测试添加删除主键

     --删除主键
    alter table Stu_PkFk_S drop constraint PK_S  
    go  

    --增加主键
    alter table Stu_PkFk_S add constraint  PK_S primary key (sno)  
    go

    转载于:https://www.cnblogs.com/shuiyun/archive/2012/11/07/2758432.html

    展开全文
  • 今天写了一个小demo ,目标是把mysql数据库内容显示到浏览器上,由于的数量太多,之间关系复杂,所以才用myeclipse自带的逆向映射功能,结果发现内的字段都能生成属性,但是涉及到外键时发现没有对应的属性...
  • 亮剑SqlServer----数据库表外键设置

    万次阅读 2012-07-14 19:50:13
    我们在建立数据库的时候,需要为每张指定一个主键,所谓主键就是能够唯一标识中某一行的属性或属性组,一个只能有一个主键,但可以有多个候选索引。因为主键可以唯一标识某一行记录,所以可以确保执行数据更新...
  • 数据库外键详解

    2014-08-22 11:48:28
    数据库外键详解,带代码片段。让你直观了解数据库的主外键设置
  • 外键还会印象需要请求对其他内部加锁而容易出现死锁的情况 mysql的外键设计问题 虽然很多人都不推荐你在关系型数据库使用外键 但你更多听到的是mysql的,而不是SQLserver或者其他。比较公认的是,他的外键设计的 ...
  • MySql数据库主键外键数据库设计

    千次阅读 2019-05-20 01:38:57
    MySql数据库主键外键数据库设计
  • 数据库中的必须符合规范,才能杜绝数据冗余、插入异常、删除异常等现象。规范的过程是分解的过程。经过分解,同一事物的代表属性出现在不同的中。显然,它们应该保持一致。外键的值或者是另外一个的主键值...
  • 所谓的数据库物理外键与逻辑外键 当看到物理外键的时候,第一反应是有物理外键那一定有逻辑外键,那我熟悉的外键是什么? 物理外键指的是使用foreign key 作为外键关联另一张的字段的连接方法,而且限定了引擎为...
  • 数据库物理外键移除不是在设计时候对表中外键进行删除,实际之间键的关联还是存在的,例如: 1、性能影响:数据完整性执行,增删改都需要对物理外键进行操作,数据库性能是受影响的。 ...
  • 数据库SQL外键设置

    2021-01-31 18:03:40
    创建约束 alter table user_relation add CONSTRAINT `fk_deleteUser` FOREIGN KEY (`account`) REFERENCES `sys_user` (`... 表名 外键名 表字段 外键关联 外键关联字段 删除时 级联模式 更新时 不做任何操作
  • 删除数据库外键

    千次阅读 2019-04-09 09:43:05
    删除外键外键名与添加外键外键名在这里是不同的,删除使用的外键名是上图所示的黄框中的 text1_ibfk_1 这个字段; 也可以使用命令:SHOW CREATE TABLE 表名,用来查看外键名; 如果删除的字段选用...
  • 所谓的数据库物理外键和逻辑外键前言二级目录三级目录 前言 当看到物理外键的时候,第一反应是有物理外键那一定有逻辑外键,那我熟悉的外键是什么? 物理外键指的是使用foreign key 作为外键关联另一张的字段的连接...
  • 数据库添加外键出错

    2019-04-08 14:46:43
    原因一:两张表的字段类型、长度不同,是不是unsigned 原因二:可能是因为数据库表中有数据,而作为主键的表中没有该数据,则添加外键失败。此时清空掉外键表中的数据即可。 ...
  • java获取数据库外键

    2014-02-19 14:56:01
    使用eclipse获取mysql数据库中的结构以及主外键
  • 数据库外键SQL语句的编写

    千次阅读 2021-01-16 22:05:54
    数据库外键SQL语句的编写 1. 外键约束作用 外键约束:对外键字段的值进行更新和插入时会和引用中字段的数据进行验证,数据如果不合法则更新和插入会失败,保证数据的有效性 2. 对于已经存在的字段添加外键约束...
  • SqLite数据库外键问题

    千次阅读 2016-12-16 21:02:15
    老版本的SqLite数据库不支持外键,现在的SqLite3数据库支持。 SqLite3数据库外键默认是关闭的,所以需要手动打开:PRAGMA foreign_keys; //结果为 0 关闭; 1 <=> 打开 PRAGMA foreign_keys = ON; //打开外键 ...
  • 查看数据库所有外键列表指令
  • Oracle数据库外键所关联的查询

    千次阅读 2017-03-30 15:03:56
    问题:需要删除一个主的数据,但是该被其他表外键关联了,于是需要找到关联的那个。 解决方法:通过以下语句查询到外键是建在哪张表上的:select * from dba_constraints where constraint_name='xxx' and ...
  • 数据库设计外键

    2018-03-27 10:53:46
    今天心情很烦躁,公司来了新...订单的话,一个订单号肯定会有关于这个订单(号码)的订单详情,这是给客户看的,但是对于管理员来看,订单另一个方面是包含商家信息的,这个时候是不是就有了一个关于商店的,里面会
  • MySQL数据库——外键约束

    千次阅读 2019-05-06 16:47:23
    文章目录方案一:单张方案二:两张方案三:两张并添加外键约束 把用户信息及其收货地址保存在数据中 方案一:单张 创建 create table user_info( id char(36) primary key, user_name varchar(30) not ...
  • 数据库外键关联

    2016-12-10 09:49:40
    数据库表中只有一个主键,这个主键可以是多个列共同组成。所以table2中的两个主键就是一个联合主键。而建立主外键关系的主键列必须具有唯一性。所以table2的2列加在一起才具有唯一性,单独一列并不具有唯一性。
  • 数据库添加外键报1061错误

    千次阅读 2019-01-03 18:06:40
    今天建数据库添加外键的时候一直报1061的错误,百度了说什么内存不足,后面我发现是约束名冲突,然后修改了约束名就创建索引成功了!  
  • 灵活运用数据库外键

    千次阅读 热门讨论 2012-06-17 00:32:07
    这点让我很是不解,从当初学习数据库,到参加工作使用数据库和设计数据库,一直都遵循数据库的三范式,之间的关联采用数据库的主外键约束(请理解这是数据库的约束,而不是我们程序控制的约束)。于是查找了一些...
  • 数据库外键简介

    2018-09-10 17:59:37
    主键:1.一个的唯一标识 2.唯一、非空 3.保证数据的完整 外键:1.本中的某一字段,是其他的主键 2.一N外键外键可重复 3.和其他建立联系...
  • mysql数据库-外键

    2017-04-24 10:17:05
    外键的作用就是一个中某列的值必须来自另一个某列的值,否则数据将无法插入,这就是外键的作用  外键使用的条件?  所有的外键都必须在innodb中使用,而mysqlisam中是无法使用外键的  什么是innodb,...
  • 1.A创建的外键关联B的某个字段,B中的该字段必须是唯一性索引 不一定是主键,但必须是唯一性索引。 主键约束和唯一性约束都是唯一性索引。 2.创建外键报错: ALTER TABLE 语句与 COLUMN FOREIGN KEY 约束 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 190,309
精华内容 76,123
关键字:

数据库表的外键