`
409304740
  • 浏览: 21085 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

主外键一对多,多对多

 
阅读更多
主外键的存在是依托两个实体之间的关系而存在的;
比如班级与学生的关系:
一个班级可以有多个学生,并且一个学生只能属于一个班级,这就是一对多的关系;
那么设计数据库的时候就应该在学生表内存放班级的ID作为外键,为什么不在班级表内放学生呢?
因为,你想一想班级表内如果放学生那么记录可能就是这样:
1班ID 1班 xx同学id
1班ID  1班 xx同学id
..
这是不允许的,班级表内班级为主键,是唯一的不允许相同记录的;
下面简单给你讲下大概建成的表结构
--建班级表
create table class(
classid int primary key,--定义班级ID为主键
classname varchar(15)
)
--建学生表
create table students(
studentid int primary key,--定义学生ID为主键
classid int ,--外键值,跟班级表classid 属性类型相同
stuname varchar(20),--学生姓名
---定义外键
foreign key(classid) references class(classid) --本表classid是基于class表classid的外键
)
---------
如上定义了主外键后,两个表间的关系就是一对多的关系了,并且学生表内的classid必须依托班级表的classid存在,也就是说外键必须要主键存在的时候才能创建,例如:
--在班级表为空的情况往学生表插入一条记录是不允许的:
insert into students(studentid,classid,stuname)values(1,1,'小明')
系统会抛出异常提示主键表班级表内班级ID不存在这样是不允许插入的;
必须要先往班级表内插入一条记录:
insert into class(classid,classname)values(1,'一班')
后才能执行插入前面一条往学生表插入信息的语句..

分享到:
评论

相关推荐

    hibernate基于主外键的一对多/多对一关联

    hibernate基于主外键的一对多/多对一关联

    Hibernate期末作业一对多(主外键)

    Hibernate期末作业一对多(主外键)

    数据表的关联关系图-父表与子表的关联关系

    父表中的外键,是子表中的主键。在父表中的外键,可以出现多次。主键是不能有重复的。

    数据库设计中的反规范

    第一范式: 对于表中的每一行,必须且仅仅有唯一的行值.在一行中的每一列仅有唯一的值并且具有原子性. 第二范式: 第二范式要求非主键列是主键的子集,非主键列活动必须完全依赖整个...主外键关联意味着一对多的关系.

    sql part2.docx

    第七章、复杂查询(上):多表连接技术 7.1 简单查询的解析方法: 全表扫描:指针从第一条记录开始,依次逐行处理,直到最后一条记录结束;...2)一对多关系 两表通过定义主外键约束,符合第三范式标准的对应关系。

    Hibernate注解

    * @OneToMany 设置一对多关联。cascade属性指定关联级别,参考@OneToOne中的说明。fetch指定是否延迟加载,值为FetchType.LAZY表示延迟,为FetchType.EAGER表示立即加载 * 方法一 使用这种配置,在为“一端”添加“多...

    Django外键(ForeignKey)操作以及related_name的作用详解

    首先我定义了两个模型,一个是老师模型,一个是学生模型,一个老师对应多个学生,这个算是一个一对多的类型(如下图所示)   那么如果我们要想查询一个老师对应的学生有哪些,该如何操作呢? 首先我们先查询到老师...

    总结三种MySQL外键约束方式

     这里以用户表和用户组表为例,这是一个典型的多对一关系,多个用户对应于一个用户组。  首先创建用户组表:  create table t_group(  id int not null,  name varchar(30),  primary key(id)  ); ...

    Hibernate_Annotation关联映射

    指向主表的外键名:主表表名+下划线+主表主键列名,指向从表的外键名:主表所对应实体的属性名+下划线+从表主键列名,指向从表的外键定义为唯一约束,用来表示一对多的关联关系。 @Entity public class Trainer{ @...

    jdbc基础和参考

    单向的一对多的关系,在进行关联关系的操作时,会执行不必要的update语句,所以,一般情况下,我们不会做单向一对多的映射。 inverse="true":让其中一方放弃对关联关系的维护 一般在做双向多对一(一对多)关联关系...

    大学计算机基础考试题及答案.docx

    大学计算机基础考试题及答案

    数据库表结构设计.doc

    原始单据与实体之间的关系 可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系:即 一张原始单据对应且只对应一个实体。在特殊情况下,它们可能是一对多或多对一的关 系,即一张原始单证对应多...

    example-relationaldatabase:它是Mysql和Sql Server的最小关系数据库

    一对多 多对多 一对一 多对多 (可选)多对一和多对一和一对多 最少的信息。 该数据库最多有5行数据。 它有一些空值 所有表的前缀均为“ Table ”。 所有主键(PK)均为int类型,并且具有后缀“ PK ” 其中一些是...

    数据库表设计.docx

    一对多 的情况可以如下: 有一个人员信息表info,里面包括一个外键:email;这个字段里存的是邮箱表emailBox里的主键:id;因为一个人可以对应多个邮箱,但一个邮箱只能属于一个人(他自己要共用木有办法) 数据库表设计全文...

    数据库设计精良原则

     可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体。在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实体,或多张原始单证...

    PowerDesigner15.1汉化破解版.z01

    就是设计数据库模型,包括面向对象模型、业务流程模型、概念数据模型、物理数据模型等,最常用的应该是PDM(物理数据模型)了,在PDM中设计数据库(包括表、试图、触发器,到表的主外键、索引等等都涉及到)然后配置...

    最新Python3.5零基础+高级+完整项目(28周全)培训视频学习资料

    一对多块表操作的的三种方式 增加一对多数据示例 初识Ajax Ajax内容基本整理 编辑一对多示例 创建多对多以及增加示例 本节内容梳理 本周作业 第21周 今日知识点概要 上节内容回顾以及URL的补充 视图获取用户请求...

    Hibernate注释大全收藏

    这种策略支持双向的一对多关联,但不支持 IDENTIFY 生成器策略,因为ID必须在多个表间共享。一旦使用就不能使用AUTO和IDENTIFY生成器。 每个类层次结构一张表 @Entity @Inheritance(strategy=InheritanceType....

    【MongoDB 实战】 07 MongoDB 是如何进行文档模型设计的呢?

    传统的数据库设计是如何...关系型数据库设计时,实体和实体之间一对多的关系时,此时需要将数据拆分为多张表,然后通过主外键进行联系,如果是实体和实体之间是多对多关系,此时则需要额外建立第三张表。MongoDB 则有所

    PowerDesigner15.1汉化破解版.z02

    就是设计数据库模型,包括面向对象模型、业务流程模型、概念数据模型、物理数据模型等,最常用的应该是PDM(物理数据模型)了,在PDM中设计数据库(包括表、试图、触发器,到表的主外键、索引等等都涉及到)然后配置...

Global site tag (gtag.js) - Google Analytics