`
409304740
  • 浏览: 21834 次
  • 性别: 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期末作业一对多(主外键)

    【标题】"Hibernate期末作业一对多(主外键)"涉及的是关系数据库设计与Java持久化框架Hibernate的应用,特别是关于一对多关联关系的实现。在数据库设计中,一对多关联是指一个实体(如表)可以对应多个其他实体,而...

    在powerdesigen中建立主外键关联表

    双击关联线,打开关联属性窗口,可以设置关联的名称、基数(如一对一、一对多、多对多)、删除规则(如CASCADE、RESTRICT等)和其他约束。 步骤6:物理数据模型(Physical Data Model,PDM) 一旦CDM完成,可以将其...

    主外键的配置

    `<many-to-one>`标签用于定义一对多的关系,`outer-join="ture"`, `not-null="true"`, 和 `lazy="false"`分别表示外键关联的查询方式、外键是否可为空以及延迟加载策略。 3. **双主键、无外键配置** 当实体类有两...

    Hibernate基于外键的一对多单向关联

    “Hibernate基于外键的一对多单向关联”这个标题指的是在Java持久化框架Hibernate中,如何通过外键实现一个实体类(如订单)与另一个实体类(如商品)之间的一对多关系,并且这种关联是单向的,即从订单端可以访问到...

    oracle查看主外键约束关系

    Oracle数据库是一个关系数据库管理系统,它允许用户通过SQL语言对数据库进行操作。...例如,如果需要查询多个表的主外键关系,只需将'a.table_name='VASSERVICE'条件修改为'in('table1', 'table2', ...)'即可。

    sqlserver 2005 主外键-复合主键

    特别是在复杂的数据关系管理中,复合主键的应用更是能够帮助我们有效地处理多对多的关系或者是更为复杂的数据关联场景。 ### 复合主键的概念 复合主键(Composite Primary Key)是指由两个或多个字段共同组成的一...

    MySQL创建数据表并建立主外键关系详解

    虽然主外键提供了数据保护,但过度使用外键可能会对查询性能产生影响,因此在设计时需要权衡数据完整性和查询效率。 综上所述,理解和正确使用主键和外键是构建高效、稳定且具有良好数据一致性的MySQL数据库系统的...

    能实现一对多关联的通用EXCEL导入功能

    在IT行业中,开发一个能实现一对多关联的通用EXCEL导入功能是一项常见的需求,尤其是在数据管理、数据分析或者系统集成的场景下。这个功能允许用户通过上传Excel文件来批量导入包含复杂关系的数据,例如一个学生可以...

    Hibernate关于注解的一对多,多对多,一对一

    本篇文章将深入探讨Hibernate中注解的一对多、多对多和一对一关系映射。 ### 一对多关系 在现实生活中,例如一个班级有一个班主任,而班主任可以管理多个学生,这就是典型的“一对多”关系。在Hibernate中,我们...

    表格一对多,动态显示

    这种关系在数据库设计中被定义为一对多关系,例如在SQL中,可以通过外键来实现。 描述中提到的链接指向了一个名为“liangjian103”的博主在ITEYE(一个IT技术交流平台)上的博客文章。虽然具体内容未给出,但我们...

    SSH2+JSO与三表联合主外键

    综上所述,SSH2+JSON的结合提供了强大的后端服务支持,能够有效地处理复杂的数据库操作,包括主外键和联合主键的设定,同时也方便了与Android客户端的数据交换。在三表联合主键的设计中,需注意保证数据的完整性和...

    经典SQL语句大全_主外键_约束

    视图是基于一个或多个表的结果集,它可以简化复杂的查询,并提供对数据的安全访问。 通过上述SQL语句的学习和应用,可以有效地管理和维护数据库中的表结构及其相关联的数据,确保数据的完整性和一致性。这对于任何...

    SpringBoot中mybatis表关联映射关系(一对多嵌套:结果方式)

    SpringBoot 中 MyBatis 表关联映射关系(一对多嵌套:结果方式) 在 SpringBoot 中,MyBatis 是一个非常流行的持久层框架,它提供了强大的持久化功能,能够将 Java 对象与数据库表进行映射。在实际开发中,我们经常...

    MyBatis 多表查询之一对多、多对一、多对多以及数据库资料.rar

    本资料包主要涵盖了MyBatis中的一对多、多对一、多对多这三种关系的查询方法,并结合了相关的数据库知识。 首先,我们来了解MyBatis中的“一对多”关系。在数据库设计中,一对多关系意味着一个父表记录可以与多个子...

    hibernate实例(一对多,多对一)

    在这个“hibernate实例(一对多,多对一)”的主题中,我们将深入探讨两种重要的关联关系:一对一(One-to-One)和一对多(One-to-Many)。 **一对一关联(One-to-One)** 在一对一关联中,一个实体与另一个实体之间...

    hibernate一对多,多对一,一对多双向关联

    在数据库设计中,这种关联关系是常见的,例如一个用户可以有多个订单(一对多),一个订单对应一个用户(多对一),而一个商品可以被多个订单购买,同时一个订单也可以包含多个商品(一对多双向关联)。这个标题暗示...

    hibernate一对多、多对一、一对一、多对多配置实例

    本文将深入探讨Hibernate中的一对多、多对一、一对一以及多对多四种关系映射的配置实例,帮助开发者更好地理解和运用这些关系。 ### 一对多关系(One-to-Many) 在数据库设计中,一对多关系是最常见的一种关联,...

    ibatis 一对多关系映射

    Ibatis,作为一个轻量级的Java ORM框架,提供了强大的功能来处理复杂的数据映射,其中包括一对多的关系映射。在这个场景下,我们将深入探讨Ibatis如何实现一对多的关系映射。 一对多关系在数据库设计中非常常见,它...

    Access中如何建立外键关系

    - 在“表/查询”下拉菜单中选择`Student`表,然后在“字段”列表中选择`StudentID`,确保“关系类型”设置为“一对一”或“一对多”(取决于你的具体需求),并勾选“实施参照完整性的”选项。 - 重复上述步骤,为...

Global site tag (gtag.js) - Google Analytics