主表和从表(重)

      主从表是一种数据关系模型,主表约束从表。以学员信息表stuInfo和考试成绩表stuMarks为例, 我们知道它们是一对多的关系,当然一是主,多是从。(譬如我们的胡主席是主,我们大家都要听主席的话!)所以stuInfo就是主表,stuMarks就是从表。那么,一般我们会在从表中做一个外键字段,引用主表中的主键。(为什么呢?大家想想是13亿人民记住主席的名字容易还是主席记住13亿人民名字呢?)这一点,已经在stuMarks表中得到了体现。那么,为了保持数据的完整性。主从表我们要尽量遵循以下原则:

1、当主表中没有对应的记录时,不能将记录添加到子表
       ——成绩表中不能出现在学员信息表中不存在的学号;

2、不能更改主表中的值而导致子表中的记录孤立
       ——把学员信息表中的学号改变了,学员成绩表中的学号也应当随之改变;

3、子表存在与主表对应的记录,不能从主表中删除该行
       ——不能把有成绩的学员删除了

4、删除主表前,先删子表
       ——先删学员成绩表、后删除学员信息表
时间: 2024-10-28 10:48:38

主表和从表(重)的相关文章

主键和外键约束(主表与从表)

通过上一篇随笔,笔者了解到,实体完整性是通过主键约束实现的,而参照完整性是通过外键约束实现的,两者都是为了保证数据的完整性和一致性. 主键约束比较好理解,就是主键值不能为空且不重复,已经强调好多次,所以这里重点记录对外键约束的学习. 主表与从表 若同一个数据库中,B表的外键与A表的主键相对应,则A表为主表,B表为从表. 假设学生表(学号,姓名,性别,专业号),专业表(专业号,专业名称),则学生表中的专业号为学生表的外键,其与专业表中"专业号"属性相关联,因此,专业表为主表,学生表为从表

【数据库】主键,外键,主表,从表,关联表,父表,子表

转自:https://www.2cto.com/database/201707/662425.html 一.前言 在数据库设计中,hibernate,iBatis等ORM框架的使用中经常听说主键,外键,主表,从表,关联表,父表,子表之类的术语,弄懂它们之前的区别与联系对于数据库设计和ORM框架的学习使用是非常有必要的. 二.概述 下面从数据库设计角度,ORM框架使用(以Hibernate为例),PowerDesigner软件以及实际业务角度进行一下介绍. (1) 数据库角度而言 主键:一般情况下

将表A的数据复制到表B,以及关于主表和子表的删除办法

如果表A的数据结构和表B的数据结构是一样的,字段名字可以不用相同,但是对应的数据类型是一样的 这样的情况下可以用如下的方式实现将表A的数据复制到表B INSERT INTO #TEMP2 SELECT * FROM #TEPM1 如果是按照条件进行数据复制的话,可以使用如下写法 INSERT INTO #TEMP2 SELECT * FROM #TEPM1 WHERE NAME='张三' 加入条件. 两张关联表,删除主表中已经在副表中没有的信息 delete from info where no

ARM基础:MMU 异常向量表 重映射

/******************************************************************************************************************参考:说明:在学习裸机中断时重新遇到这个几个词,这次就要搞明白了. *****************************************************************************************************

主表和子表主键设计

将主表主键设置为ID,另外将子表主键设置为AID,子表的外键ID和主表一样.那么当发生对主表记录进行删除操作,可以方便的对关联的子表数据一并删除! declare @selectStr nvarchar(1000) set @selectStr='delete from Bdrdrecord11 ' + @searchString+' delete from Bdrdrecords11 '+@searchString exec (@selectStr)

浅谈编译过程和符号表重定位问题

对于代码的编译问题千头万绪从何说起呢,首先来说一下计算机是如何处理应用程序的,实质上应用程序是通过操作系统来应用机器指令操控硬件设施完成各种任务的,就从编译的环节开始谈起吧,众所周知,程序开发人员所写的代码实际上计算机是没有办法去认识的,那么就必须通过编译将其转换为计算机可以认识的机器指令,在有操作系统根据具体指令从硬件上分配内存处理程序段.以下从预编译,编译,汇编,链接,来简单的说一下程序的编译过程. 2.1编译预处理 在这个阶段主要是宏定义的展开,以及头文件的递归处理,即展开所有的以#开头的

区分关系行数据库的主表和从表

1.在数据库的设计中经常会用到外键,初学者经常搞混,根据我的经验就总结了一下. 主表:在数据库中建立的表格即Table,其中存在主键(primary key)用于与其它表相关联,并且作为在主表中的唯一性标识.(摘自百度百科) 从表:以主表的主键(primary key)值为外键 (Foreign Key)的表,可以通过外键与主表进行关联查询.从表与主表通过外键进行关联查询.(摘自百度百科) 如上面的图所示,上面的表是子表,下面是主表. 可以简单地这样理解:主表的主键用做外键放在了从表里作为外键.

根据外键名找到主表和关联表的相关列

select fk.name fkname ,ftable.name ftablename ,cn.name fkcol ,rtable.name ftablename ,cn1.name rkcolfrom sysforeignkeys join sysobjects fk on sysforeignkeys.constid = fk.id join sysobjects ftable on sysforeignkeys.fkeyid = ftable.id join sysobjects r

ORACLE系统包DBMS_REDEFINITION实现表的在线重定义

ORACLE自带的DBMS_REDEFINITION包功能非常强大,可以用于降低高水位线,回收碎片空间,对表做在线重定义(添加或删除字段,改变字段类型,普通表重定义表为分区表,分区表重定义表为普通表等等) 另外,它有一个非常强大的功能,"在线"二字体现得淋漓尽致,但是也并不是完全的在线,因为在完成重定义前的最后一下,会持会表级排他锁,但这个锁定时间是可控的. 如果你也曾为delete无法降低高水位线而烦恼或者由于历史表太大导致维护困难,我相信这篇文章将对你有很大的感触,因此相信绝大朋友