通过E-R理解 主键和外键的关系

简介: 实例 现有课程和教师两个实体,课程实体的属性有课程名称、课程编号、课程属性、考试类型;教师实体的属性包括姓名、工号、职称;一门课程可以有多个教师,且每一位教师可以教授多门课程。教师每教授一门课有课序号。

1.png

实例:现有课程和教师两个实体,课程实体的属性有课程名称、课程编号、课程属性、考试类型;教师实体的属性包括姓名、工号、职称;一门课程可以有多个教师,且每一位教师可以教授多门课程。教师每教授一门课有课序号。

先上图,本人小白,一边学习一边分享。个人理解
主键:是唯一的,一张表中只能有一个主键,也就是唯一标志符和身份证一样可以准确的查到相对应的数据。
(如E-R图中 课程这个实体中的属性有 课程名称,课程编号 , 课程属性,考试类型 ,选择主键时,课程编号可以唯一标识这门课所以把课程编号设为主键)

外键:主要是用来关联,产生两个表的关系。(如E-R中 教授这个实例 连接 课程表和教师表 有自己的属性 同时通过外键 课程编号,和 工号 使得两个表产生联系 )

将E-R图转换成关系模型。
课程( 课程名称, 课程编号, 课程属性, 考试类型 )
教授 ( 课程编号, 工号, 课序号 )
老师 ( 姓名,工号 ,职称 )

主键和外键的区别是:
1,数据库中设置为主键后,不能为空(null),不能重复,外键是另一个表的主键,可以重复。
2主键是为了更加安全的保护数据,而外键是为了产生关系。
3 主键是唯一的(一个表中只可以设置一个),而外键是可以设置很多个。

相关文章
|
存储 SQL 缓存
Hadoop入门(一篇就够了)
Hadoop入门(一篇就够了)
44629 6
Hadoop入门(一篇就够了)
|
Java 应用服务中间件 Android开发
无法解析javax.servlet的解决方法
无法解析javax.servlet的解决方法
5422 0
无法解析javax.servlet的解决方法
|
数据可视化 Java uml
IDEA这个功能真强大!一键把整个项目代码绘制成UML类图...
IDEA这个功能真强大!一键把整个项目代码绘制成UML类图...
7299 0
IDEA这个功能真强大!一键把整个项目代码绘制成UML类图...
|
11月前
|
机器学习/深度学习 关系型数据库 MySQL
什么是脏读、幻读、不可重复读?Mysql的隔离级别是什么?
脏读、不可重复读和幻读是数据库事务并发操作中的三种异常现象。脏读指读取到未提交的临时数据;不可重复读指同一事务内两次读取结果不一致,因数据被其他事务修改;幻读则是范围查询中出现新增记录,导致行数变化。SQL-92标准定义了四种隔离级别:未提交读(RU)、提交读(RC)、可重复读(RR)和串行化(Serializable),依次增强对这些异常的防控能力,平衡数据一致性与系统并发性能。
2055 0
|
机器学习/深度学习 人工智能 监控
基于YOLOv8的多种水果种类识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!
本项目基于YOLOv8与PyQt5开发,实现多种水果种类的高效识别。支持图像、视频及摄像头输入,具备批量检测、实时识别与高精度标注功能,模型轻量且部署简便,适用于边缘设备。配套完整源码、数据集与训练教程,开箱即用,适合学习与产业应用。
基于YOLOv8的多种水果种类识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!
|
缓存 安全 Java
Spring Boot 3 集成 Spring Security + JWT
本文详细介绍了如何使用Spring Boot 3和Spring Security集成JWT,实现前后端分离的安全认证概述了从入门到引入数据库,再到使用JWT的完整流程。列举了项目中用到的关键依赖,如MyBatis-Plus、Hutool等。简要提及了系统配置表、部门表、字典表等表结构。使用Hutool-jwt工具类进行JWT校验。配置忽略路径、禁用CSRF、添加JWT校验过滤器等。实现登录接口,返回token等信息。
8071 14
Spring Boot 3 集成 Spring Security + JWT
|
机器学习/深度学习 数据采集 算法
matlab实现图像边缘检测及图像区域分割、目标检测、目标识别
matlab实现图像边缘检测及图像区域分割、目标检测、目标识别
|
关系型数据库 MySQL 数据库
navicat 查看,设计并导出数据库 ER图
navicat 查看,设计并导出数据库 ER图
5454 5
|
JavaScript 前端开发 Java
SpringBoot + Vue 前端后分离项目精进版本
这篇文章详细介绍了一个基于SpringBoot + Vue的前后端分离项目的搭建过程,包括前端Vue项目的初始化、依赖安装、页面创建和路由配置,以及后端SpringBoot项目的依赖添加、配置文件修改、代码实现和跨域问题的解决,最后展示了项目运行效果。
SpringBoot + Vue 前端后分离项目精进版本
|
Oracle Java 关系型数据库
jdk17安装全方位手把手安装教程 / 已有jdk8了,安装JDK17后如何配置环境变量 / 多个不同版本的JDK,如何配置环境变量?
本文提供了详细的JDK 17安装教程,包括下载、安装、配置环境变量的步骤,并解释了在已有其他版本JDK的情况下如何管理多个JDK环境。
31901 0