精华内容
下载资源
问答
  • oracle主从表外键对应关系
    2021-03-07 10:56:48

    在进行多表的联接查询前,我们需要对多表进行相关的处理,比方说确定主从关系,建立外键,联接时确定中间表等操作.

    一般情况下,建表时先建主表,再建从表(插入数据时也是一样的),那怎么确定主从关系呢,进一步建立外键约束?

    比方说,有三个表,customers表(customerid--pk)  --对于 orders表和orderitems表来说是主表,反过来后两个为从表

    orders表(orderid--pk;customerid--fk)    --对于orderitems表来说是主表

    orderitems表(orderitemid---pk;bookid,quantity,orderid---fk),

    注意:一张表只能有一个主键,但可以有多个外键

    从这三张表来看,orders表的customerid列为外键,它来自表customers的主键列customerid,因此这就是我们常说的外键引用主键,被引用的表为主表,引用的表为从表.即customers表为主表,orders表为从表;同样的道理下,orderitems表中的orderid列为外键,来自于(引用)表orders的主键列orderid,故针对这两个表来说,orders表为主表,而orderitems表为从表.

    对于删表的顺序,刚好与建表的次序相反,先删从表再删主表,即对于上面三个表来说,先删表orderitems,再删表orders,最后才能删掉customers表.

    在进行多表联接的查询操作时,我们可以以orders表作为中间表,因为他和其他两个表都有关系.即:

    select * from orders a join customers c

    on a.customerid=c.customerid

    join orderitem t

    on t.orderid=a.orderid

    更多相关内容
  • 主从表主键外键

    2021-03-07 10:56:03
    A的主键在B中充当外键,谁是主,谁是子?A为主B为从个人认为:外键是约束的一种。不存在主从关系,只存在引用关系,如部门与员工。每个员工都属于某个部门,必须与某个部门资料对应。主从表的情况:...

    A表的主键在B表中充当外键,谁是主表,谁是子表?

    A为主表

    B为从表

    个人认为:

    外键是约束的一种。不存在主从关系,只存在引用关系,如部门表与员工表。

    每个员工都属于某个部门,必须与某个部门资料对应。

    主从表的情况:类似于订单表与订单明细表的关系。

    希望以上有所帮助.

    有两个表 A表中的C字段里面的内容是B表中的主键,并且值有多个,请问数据库该怎么设计啊?

    create table B

    (

    C char(6) primary key,

    C_Name varchar(50) not null

    )

    go

    create table A

    (

    A_ID char(6) primary key,

    A_Name varchar(100) not null,

    C char(6) references B(C)    --将A表中C字段设置外键

    )

    go

    从表的外键与主表的主键的列名必须相同吗?值呢?

    列名不一定要相同,但是外键的取值要么从主键的域中取要么取空值,这在数据库中叫做参照完整性规则。

    主键和外键是把多个表组织为一个有效的关系数据库的粘合剂。主键和外键的设计对物理数据库的性能和可用性都有着决定性的影响。

    必须将数据库模式从理论上的逻辑设计转换为实际的物理设计。而主键和外键的结构是这个设计过程的症结所在。一旦将所设计的数据库用于了生产环境,就很难对这些键进行修改,所以在开发阶段就设计好主键和外键就是非常必要和值得的。

    主键:

    关系数据库依赖于主键---它是数据库物理模式的基石。主键在物理层面上只有两个用途:

    1. 惟一地标识一行。

    2. 作为一个可以被外键有效引用的对象。

    基于以上这两个用途,下面给出了我在设计物理层面的主键时所遵循的一些原则:

    1. 主键应当是对用户没有意义的。如果用户看到了一个表示多对多关系的连接表中的数据,并抱怨它没有什么用处,那就证明它的主键设计地很好。

    2. 主键应该是单列的,以便提高连接和筛选操作的效率。

    注:使用复合键的人通常有两个理由为自己开脱,而这两个理由都是错误的。其一是主键应当具有实际意义,然而,让主键具有意义只不过是给人为地破坏数据库提

    供了方便。其二是利用这种方法可以在描述多对多关系的连接表中使用两个外部键来作为主键,我也反对这种做法,理由是:复合主键常常导致不良的外键,即当连

    接表成为另一个从表的主表,而依据上面的第二种方法成为这个表主键的一部分,然,这个表又有可能再成为其它从表的主表,其主键又有可能成了其它从表主键的

    一部分,如此传递下去,越靠后的从表,其主键将会包含越多的列了。

    3. 永远也不要更新主键。实际上,因为主键除了惟一地标识一行之外,再没有其他的用途了,所以也就没有理由去对它更新。如果主键需要更新,则说明主键应对用户无意义的原则被违反了。

    注:这项原则对于那些经常需要在数据转换或多数据库合并时进行数据整理的数据并不适用。

    4. 主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。

    5. 主键应当有计算机自动生成。如果由人来对主键的创建进行干预,就会使它带有除了惟一标识一行以外的意义。一旦越过这个界限,就可能产生认为修改主键的动机,这样,这种系统用来链接记录行、管理记录行的关键手段就会落入不了解数据库设计的人的手中。

    展开全文
  • 目的:演示mysql外键的创建、删除、外键的级联操作 使用mysql创建2张表:按顺序依次创建班级class和学生students 创建外键时,可以为外键起个名字(constraint后面紧挨的字符串为),该名字在删除外键时会被...

    目的:演示mysql的外键的创建、删除、外键的级联操作

    使用mysql创建2张表:按顺序依次创建班级class表和学生表students
    在这里插入图片描述
    创建外键时,可以为外键起个名字(constraint后面紧挨的字符串为),该名字在删除外键时会被使用。
    在这里插入图片描述
    注意:如果先创建学生表students并同时创建外键指向班级表class,会报错,因为class表不存在。

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    要想删除表class里面1班的数据,同时删除学生表students里面小明的数据,则要设置students表的外键的on delete cascade

    先删除原来的外键。

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    on update和on delete的方法类似。

    注意:

    • 班级表class为主表,学生表students为从表。
    • 主从表区别,看外键在哪个表,外键在学生表,则学生表students为从表,班级表class为主表。

    on delete、on update表示事件触发限制,可设参数
    外键的级联操作的类型包括:

    • restrict(限制外表中的外键改动):默认值,抛异常。on delete | update restrict
      代表在主表进行删除和更新时,会查看是否存在外键依赖,如果有则不允许删除

    • cascade(级联,跟随外键改动):在主表进行操作时,如果主表的记录删除掉,如果有外键依赖,那么则删除子表中相关联的那条记录

    • set null:
      在主表进行操作时 如果有外键依赖 那么将子表中的数据设置为null

    • no action:什么都不做

    总结:分清主从表,因为当删除从表时一条数据时,对主表没有影响。当删除主表的一条数据,如有外键依赖,则会连从表的相关数据一起删除。

    删除从表测试如下:

    在这里插入图片描述

    删除主表测试:
    在这里插入图片描述

    展开全文
  • 外键的关系结构:1,一对一,不用引用主外键,把它们放一个中即可例如:一个学生只能有一个卡号,那么学生跟卡号放在一个中即可2,一对多,引用主外键,‘一’相当于主键,‘多’即是引用主键的外键。...

    从数据库是主数据库的备份,当主数据库变化时从数据库要更新,这些数据库软件可以设计更新周期。这是提高信息安全的手段。主从数据库服务器不在一个地理位置上,当发生意外时数据库可以保存。

    主外键的关系结构:

    1,一对一,不用引用主外键,把它们放一个表中即可

    例如:一个学生只能有一个卡号,那么学生跟卡号放在一个表中即可

    2,一对多,引用主外键,‘一’相当于主键,‘多’即是引用主键的外键。

    例如:一个班级可以有多个学生,并且一个学生只能属于一个班级,这就是一对多的关系;

    3,多对多关系,需要创建一个表,表中需要两个字段,分别是引用,两个多对多字段主键的外键。

    例如:

    学生表(学号,姓名,…………)主键:学号

    课程表(课程号,课程名,…………)主键:课程号

    一个学生能选多门课,一个课可以由多个学生选,即是多对多关系,

    那么成绩表就是它们之间关系的体,

    即引用成绩表(学号,课程号,成绩)。这里学号和课程号,分别是学生表和课程表中学号和课程号的外键

    在我们现在这个阶段中,主要还是使用,主外键间的一对多的关系

    主键Primary key,唯一标示一个实体。是保证数据库的实体完整性,保证数据中数据的正确性和合理性,取值非空唯一。

    外键Foreign,是用来使表与表之间联系。用来保证数据库的参照完整性,外键的取值必须来自参照表参照列的值,可以为空也可不为空。

    外键的作用:

    保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。 使两张表形成关联,外键只能引用外表中的列的值!

    一、什么是主键、外键

    关系型数据库中的一条记录中有若干个属性若其中某一个属性组(注意是

    组)能唯一标识一条记录该属性组就可以成为一个主键

    比如

    学生表(学号姓名性别班级)

    其中每个学生的学号是唯一的学号就是一个主键

    课程表(课程编号,课程名,学分)

    其中课程编号是唯一的,课程编号就是一个主键

    成绩表(学号,课程号,成绩)

    成绩表中单一一个属性无法唯一标识一条记录学号和课程号的组合才可

    以唯一标识一条记录所以学号和课程号的属性组是一个主键

    成绩表中的学号不是成绩表的主键但它和学生表中的学号相对应并且

    学生表中的学号是学生表的主键则称成绩表中的学号是学生表的外键

    同理成绩表中的课程号是课程表的外键

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

    1.主键是能确定一条记录的唯一标识比如一条记录包括身份正号姓

    名年龄。

    身份证号是唯一能确定你这个人的其他都可能有重复所以身份证号

    是主键。

    2.外键用于与另一张表的关联。是能确定另一张表记录的字段用于保持

    数据的一致性。

    比如A表中的一个字段是B表的主键那他就可以是A表的外键。

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

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

    主键外键索引

    定义唯一标识一条记录不能有重复的不允许为空表的外键是另一表

    的主键,外键可以有重复的,可以是空值该字段没有重复值但可以有一个空值

    作用用来保证数据完整性用来和其他表建立联系用的是提高查询排序的

    速度

    个数主键只能有一个一个表可以有多个外键一个表可以有多个惟一索引

    聚集索引和非聚集索引的区别?

    聚集索引一定是唯一索引。但唯一索引不一定是聚集索引。

    聚集索引在索引页里直接存放数据而非聚集索引在索引页里存放的是

    索引这些索引指向专门的数据页的数据。

    三、数据库中主键和外键的设计原则

    主键和外键是把多个表组织为一个有效的关系数据库的粘合剂。主键和外

    键的设计对物理数据库的性能和可用性都有着决定性的影响。

    必须将数据库模式从理论上的逻辑设计转换为实际的物理设计。而主键和

    外键的结构是这个设计过程的症结所在。一旦将所设计的数据库用于了生产环

    境就很难对这些键进行修改所以在开发阶段就设计好主键和外键就是非常

    必要和值得的。

    主键

    系数据库依赖于主键---它是数据库物理模式的基石。

    主键在物理层面上只有两个用途

    1.惟一地标识一行。

    2.作为一个可以被外键有效引用的对象。

    基于以上这两个用途下面给出了我在设计物理层面的主键时所遵循的一

    些原则

    1.主键应当是对用户没有意义的。如果用户看到了一个表示多对多关系的

    连接表中的数据并抱怨它没有什么用处那就证明它的主键设计地很好。

    2.主键应该是单列的以便提高连接和筛选操作的效率。

    注使用复合键的人通常有两个理由为自己开脱而这两个理由都是错误

    的。其一是主键应当具有实际意义然而让主键具有意义只不过是给人为地

    破坏数据库提供了方便。其二是利用这种方法可以在描述多对多关系的连接表

    中使用两个外部键来作为主键我也反对这种做法理由是复合主键常常导

    致不良的外键即当连接表成为另一个从表的主表而依据上面的第二种方法

    成为这个表主键的一部分然这个表又有可能再成为其它从表的主表其主

    键又有可能成了其它从表主键的一部分如此传递下去越靠后的从表其主

    键将会包含越多的列了。

    3.永远也不要更新主键。实际上因为主键除了惟一地标识一行之外再

    没有其他的用途了所以也就没有理由去对它更新。如果主键需要更新则说

    明主键应对用户无意义的原则被违反了。

    注这项原则对于那些经常需要在数据转换或多数据库合并时进行数据整

    理的数据并不适用。

    4.主键不应包含动态变化的数据如时间戳、创建时间列、修改时间列等。

    5.主键应当有计算机自动生成。如果由人来对主键的创建进行干预就会

    使它带有除了惟一标识一行以外的意义。一旦越过这个界限就可能产生认为

    修改主键的动机这样这种系统用来链接记录行、管理记录行的关键手段就

    会落入不了解数据库设计的人的手中。

    四、数据库主键选取策略

    我们在建立数据库的时候需要为每张表指定一个主键所谓主键就是能

    够唯一标识表中某一行的属性或属性组一个表只能有一个主键但可以有多

    个候选索引。因为主键可以唯一标识某一行记录所以可以确保执行数据更新、

    删除的时候不会出现张冠李戴的错误。当然其它字段可以辅助我们在执行这

    些操作时消除共享冲突不过就不在这里讨论了。主键除了上述作用外常常

    与外键构成参照完整性约束防止出现数据不一致。所以数据库在设计时主

    键起到了很重要的作用。

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

    ·自动增长字段

    展开全文
  • 建立连关系 Blog.belongsTo(User, { foreignKey: 'userid' }) belongsTo:属于 用belongsTo来关联两张,foreignKey设置外键。 Blog属于user User.hasMany(Blog, { foreignKey: 'userid' }); hasMany:有多个 ...
  • 1. 因为配置数据库主从关系,需要数据库结构一样,可能会出现下列情况:  a. 直接把需要同步的从主服务器的库拖到从服务器的,这个时候因为主服务器的一些有主外键联系,也会一并在从服务器,当主服务器的...
  • MySQL外键(详解)

    2021-11-17 17:13:28
    MySQL外键(详解) 什么是外键:    外键是指引用另外一个中的一列或多列数据,被引用的列应该具有主键约束或者唯一性约束(简单来说外键是另一个的主键或者唯一约束)。外键可以有重复的, 可以是空值,用来...
  • 要根据条件更新user中的主键Id,同时也要更新其他中的外键userId。 【描述】 根据查询出来的条件,去更新tb_user中的主键Id,同时更新tb_organization_user和tb_tenant_product_user中的外键userId, 其他...
  • 最近碰到一次在msyql主从删除数据,居然报错delete from pt_game_server where id=2;ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`wonder_center`.`pt_server_area...
  • 外键中主与从的定义主(父)在数据库中建立的表格即Table,其中存在主键(primary key)用于与其它相关联,并且作为在主中的唯一性标识。从(子)以主的主键(primary key)值为外键 (Foreign Key)的,...
  • 一、多1、主键:用来唯一标识一条记录,不能有重复的,不允许为空,用来保证数据的完整性,并且主键只能有一个2、外键:外键是另一个的主键,外键可以重复,可以为空,但是为空数据就跟与之相关联的没关系...
  • alter table stu5 add constraint 编号 foreign key (bh) ...说明:stu2和stu5是两张,“编号”为字段bh的约束名(是stu5中的一个属性),bh是stu2中的主键,而bh并不是stu5的主键,那么则称stu2为主,stu5为...
  • MySQL - 多&外键&数据库设计1 多1.1 多的意义实际开发中,一个项目通常需要很多张表才能完成。例如一个商城项目的数据库,需要有很多张表:用户、分类、商品、订单....1.2 单的缺点1.2.1 ...
  • 上个阶段 进入数据库阶段 学习MySQL阶段 mysql基础与sql语句 多简述 实际开发中,一个项目通常需要很多张表才能完成。 例如一个商城项目的数据库,需要有很多张表:用户、分类、商品、订单… 单的...
  • mysql如何建立外键

    2021-04-21 00:43:20
    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 ...
  • mysql外键总结

    2021-10-24 11:36:18
    MySQL 外键约束(FOREIGN KEY)是的一个特殊字段,经常与主键约束一起使用。对于两个具有关联关系的而言,相关联字段中主键所在的就是主(父),外键所在的就是从(子)。 外键用来建立主与从...
  • MySQL本质是一套存储数据的方案,除了解决基本的数据存储外,还需要一定的约束条件,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性,减少用户的误操作可能性。 约束是MySQL通过限制用户操作的方式,来...
  • 大家MySQL主从同步的时候最头痛的莫过于 code 1452的状态码,这个原因是你的主从数据不一致导致主外键错误,解决也很简单,但是有些朋友没有深入了解MySQL的话 会对主外键陌生,导致无法正确的再从上面插入主数据,...
  • Cannot add foreign key constraint (foreign keys)检查 主从表两个字段的属性是否一致如果A的主关键字是B中的字段,则该字段称为B的外键A称为主B称为从外键是用来实现参照完整性的,不同的...
  • 近期自学数据库MySQL。然后有个疑问。一直不得其解。查询了相关资料。最后还是没有解决。我的疑问是 "使用外键约束" ,然后我对 "外键" 这个词不是非常理解。查询相关资料都是讲一些术语。说外键的主要作用是:保持...
  • 声明了外键约束的列,插入的值必须在另一个中出现过才行;外键列要和对应的主键列类型要保持一致 目的就是为了让两个之间产生关联 foreign key(外键列) references 另一个 (主键列) auto_increment 自动增长...
  • 最近自学数据库MySQL,而后有个疑问,一直不得其解,...关于外键,我有本身的一些理解,可是不晓得是否正确,举个例子来表达个人见解:假如如今须要创建一个,一个什么样的呢?一个班级的学生我的信息:mysq...
  • mysql为何不建议使用外键_为什么很多mysql课程不推荐用物理外键? 大机灵聪明绝顶 于 2021-01-18 21:21:46 发布 1408 收藏 文章标签: mysql为何不建议使用外键 版权 刚好今晚有师弟问我这个问题,就来搜搜。以前我...
  • 现象:当主和从都没有一条记录时(数据库为空),主从表一起保存后得到从的外键值为0,没有与主的主键对应起来.2.问题环境:A)SQLserver2000数据库,VS.net2005, 主标识字段(自增长)为主键M_ID,从没有与主...
  • MySQL 语句外键 连接

    千次阅读 2019-02-27 14:26:46
    外键 定义: 外键是指引用另一个中的一列或多列,被引用的列具有主键约束或唯一约束。 目的: 外键用于建立和加强两个...在MySql中只有 InooDB 类型的才支持外键。 (2)定义外键名时,不能加引号。 如 constrai...
  • 这里写目录标题一级目录复制结构复制数据删除内容 一级目录 if not exists: 表示检测要创建的是否已存在,如果不存在就创建。 int(4) zerofill: 表示若数值不满4位数,则前面要用“0”填充,例如:0001. ...
  • 展开全部工具/原料袭电脑 MySQL方法/步骤2113设置主键:1、通5261过4102终端进入到mysql命令行工具。2、通过use关键字进行到目标数据库1653里。3、如原已有主键,先把原来的主键删除掉,通过DROP PRIMARY KEY命令...
  • MySQL外键约束(FOREIGN KEY)是什么?

    千次阅读 多人点赞 2020-05-16 18:02:40
    MySQL中的外键约束从基础知识开始,说明了创建外键约束的原则,语法及特性,用案例的方式对外键约束进行解说。
  • 1、主服务器创建,允许从服务器访问mysql二进制文件的用户。登录mysql执行下面 grant语句。MariaDB [(none)]> grant replication slave , replication client on *.* to rep1@'%' identified by 'rep123456';解析...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,794
精华内容 5,117
关键字:

主从表mysql外键

mysql 订阅