关系型数据库设计规则

目录

1.1 表、记录、字段

1.2 表的关联关系

1.2.1 一对一关联(one-to-one)

1.2.2 一对多关系(one-to-many) 

1.2.3 多对多(many-to-many)

1.2.4 自我引用(Self reference)


    关系型数据库的典型数据结构就是数据表,这些数据表的组成都是结构化的(Structured)。

    将数据放到表中,表再放到库中。

    一个数据库中可以有多个表,每个表都有一个名字,用来标识自己。表名具有唯一性。

    表具有一些特性,这些特性定义了数据在表中如何存储,类似Java和Python中“类”的设计。

1.1 表、记录、字段

    E-R(entity-relationship,实体-联系)模型中有三个主要概念是:实体集、属性、联系集。

    一个实体集(class)对应于数据库中的一个表(table),一个实体(instance)则对应于数据库表中的一行(row),也被称为一条记录(record)。一个属性(attribute)对应于数据库表中的一列(column),也称为一个字段(field)。

    ORM思想(Object Relational Mapping)体现:

数据库中的一个表 <----> Java或Python中的一个类。

表中的一条数据 <----> 类中的一个对象(或实体)。

表中的一个列 <----> 类中的一个字段、属性(field)。

1.2 表的关联关系

    表与表之间的数据记录有关系(relationship)。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。

    四种:一对一关联、一对多关联、多对多关联、自我引用。

1.2.1 一对一关联(one-to-one)

    在实际的开发中应用不多,因为一对一可以创建成一张表。

    举例: 

    设计学生表:学号、姓名、手机号码、班级、系别、身份证号码、家庭住址、机关、紧急联系人....

    拆分为两个表:两个表的记录是一一对应关系,比如共用一个学号。

    基础信息表(常用信息):学号、姓名、手机号码、班级、系别

    档案信息表(不常用信息):学号、身份证号码、家庭住址、籍贯、紧急联系人、...

    两种建表原则:

    外键唯一:主表的主键和从表的外键(唯一),形成主外键关系,外键唯一。

    外键是主键:主表的主键和从表的主键,形成主外键关系。

1.2.2 一对多关系(one-to-many) 

    常见实例场景:客户表和订单表,分类表和商品表,部门表和员工表。

    举例:

    员工表:编号、姓名、...、所属部门

    部门表:编号、名称、简介

    一对多建表原则:在从表(多方)创建一个字段,字段作为外键指向主表(一方)的主键

1.2.3 多对多(many-to-many)

    要表示多对多关系,必须创建第三个表,该表通常称为联接表,它将多对多关系划分为两个一对多关系。将这两个表的主键都插入到第三个表中。 

    举例:学生-课程

    学生信息表:一行代表一个学生的信息(学号、姓名、手机号码、班级、系别...)

    课程信息表:一行代表一个课程的信息(课程编号、授课老师、简介...) 

    选课信息表:一个学生可以选多门课,一门课可以被多个学生选择

    多对多关系建表原则:

    需要创建第三张表,中间表至少两个字段,这两个字段分别作为外键指向各自一方的主键。 

1.2.4 自我引用(Self reference)

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/5231.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

知识图谱推理的学习逻辑规则(上)7.19+(下)7.20

知识图谱推理的学习逻辑规则 摘要介绍相关工作模型 &#xff08;7.20&#xff09;知识图谱推理逻辑规则概率形式化参数化规则生成器具有逻辑规则的推理预测器 优化E步骤M步骤 实验实验设置实验结果 总结 原文&#xff1a; 摘要 本文研究了在知识图谱上进行推理的学习逻辑规则…

Idea中使用Git详细教学

目录 一、配置 Git 二、创建项目远程仓库 三、初始化本地仓库 方法一&#xff1a; 方法二&#xff1a; 四、连接远程仓库 五、提交与拉取到本地仓库 六、推送到远程仓库 七、克隆远程仓库到本地 方法一&#xff1a; 方法二&#xff1a; 八、Git分支操作 一、配置 G…

zabbix 企业级监控(2) 监控linux主机

目录 配置开始 Zabbix添加linux主机 4.为agent.zabbix.com添加模板 环境&#xff1a; &#xff08;隔天做的更换了IP&#xff0c;不影响实际操作&#xff09; IP 192.168.50.50 关闭防火墙规则 更改主机名 [rootlocalhost ~]# vim /etc/hostname agent.zabbix.com [rootloca…

Zookeeper集群 + Kafka集群

Zookeeper集群 Kafka集群 前言一、Zookeeper 概述1.1 Zookeeper 定义1.2 Zookeeper 工作机制1.3 Zookeeper 特点1.4 Zookeeper 数据结构1.5 Zookeeper 应用场景1.5.1 统一命名服务1.5.2 统一配置管理1.5.3 统一集群管理1.5.4 服务器动态上下线1.5.5 软负载均衡 1.6 Zookeeper …

Pycharm安装dlib

目录 一、下载dilb 二、使用pip安装dlib库(亲测有效) 三、使用Pycharm安装(未使用) 一、下载dilb 官方网址:德利卜 皮皮 (pypi.org) 二、使用pip安装dlib库(亲测有效) 将下载好的whl文件放入工程文件中 接下来使用Python自带的pip进行安装 1.winR2.输入cmd&#xff0c;回车…

stable-diffusion-webui版本更迭

之前的版本在迁移服务器后在新的服务器跑不通了,卧槽,因此填坑了好几天,坑1,坑2,今天终于出坑了,因有此文。 启动方式:nohup python launch.py & 启动脚本:https://download.csdn.net/download/SPESEG/88063114 第二版更新了相关文件,这里是stable-diffusion-…

Word 插件实现读取excel自动填写

日常工作中碰到需要将EXCEL的对应数据记录填写到word文档对应的位置&#xff0c;人工操作的方式是&#xff1a; 打开exel表—>查找对应报告号的行—>逐列复制excel表列单元格内容到WORD对应的位置&#xff08;如下图标注所示&#xff09; 这种方法耗时且容易出错。实际上…

听GPT 讲K8s源代码--pkg(三)

在 Kubernetes 项目中&#xff0c;pkg/controller目录下的子目录通常包含控制器相关的代码和逻辑。控制器是 Kubernetes 中用于管理资源的核心组件之一。它们负责监控资源的状态&#xff0c;并确保其符合所定义的期望状态。下面是对这些子目录的一些常见作用的解释&#xff1a;…

C++:这门语言优势在哪?命名空间以及缺省参数?

文章目录 C的优势解决命名空间的问题 缺省参数 C的优势 C和C语言比起来有许多优势&#xff0c;这里我们先举一个例子&#xff0c;后续进行补充 解决命名空间的问题 首先看这样的代码&#xff1a; #include <stdlib.h> #include <stdio.h>int rand 0;int main(…

【六袆 - windows】windows计划任务,命令行执行,开启计划任务,关闭计划任务,查询计划任务

windows计划任务 查看 Windows 自动执行的指令取消 Windows 中的计划任务启动执行计划任务 查看 Windows 自动执行的指令 您可以使用以下方法&#xff1a; 使用任务计划程序&#xff1a;任务计划程序是 Windows 内置的工具&#xff0c;可以用于创建、编辑和管理计划任务。您可…

Django实现接口自动化平台(十)自定义action names【持续更新中】

相关文章&#xff1a; Django实现接口自动化平台&#xff08;九&#xff09;环境envs序列化器及视图【持续更新中】_做测试的喵酱的博客-CSDN博客 深入理解DRF中的Mixin类_做测试的喵酱的博客-CSDN博客 python中Mixin类的使用_做测试的喵酱的博客-CSDN博客 本章是项目的一…

职责链(Chain of responsibility)模式

目录 处理过程应用场景参与者协作效果实现相关模式应用与思考类图 职责链(Chain of responsibility)是一种对象行为模式&#xff0c;可以使多个对象都有机会处理请求&#xff0c;从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链&#xff0c;并沿着这条链传递…

[ 容器 ] Docker 基本管理

目录 一、Docker 概述1.1 Docker 是什么&#xff1f;1.2 Docker 的宗旨1.3 容器的优点1.4 Docker 与 虚拟机的区别1.5 容器在内核中支持的两种技术namespace的六大类型 二、Docker核心概念2.1 镜像2.2 容器2.3 仓库 三、安装 Docker四、docker 镜像操作五、 Docker 容器操作总结…

js数组常用方法

js数组常用方法 join Array.join() 方法将数组中所有元素都转化为字符串并连接在一起&#xff0c;返回最后生成的字符串。可以指定一个可选的字符串在生成的字符串中来分隔数组的各个元素。如果不指定分隔符&#xff0c;默认使用逗号。示例&#xff1a; var a [1,2,3] cons…

经济和行政手段使双高企业降低能耗总量和能耗强度,提高能源利用效率-安科瑞黄安南

摘要 2022年6月29日工信部、发改委、财政部、生态环境部、国资委、市场监管总局六部门联合下发《关于印发工业能效提升行动计划的通知》&#xff08;工信部联节〔2022〕76号&#xff0c;以下简称《行动计划》&#xff09;&#xff0c;主要目的是为了提高工业领域能源利用效率&…

修复git diff正文中文乱码

Linux git diff正文中文乱码 在命令行下输入以下命令&#xff1a; $ git config --global core.quotepath false # 显示 status 编码 $ git config --global gui.encoding utf-8 # 图形界面编码 $ git config --global i18n.commit.encoding utf-8 # …

Ubuntu18.04 拯救者R9-7945HX 4060 配置ZED 2i代双目相机驱动+ORBSLAM2

AMD的拯救者网卡很拉&#xff0c;研究了很久除了换网卡可以解决网络问题&#xff0c;其它没找到合适的办法&#xff0c;这里我用手机USB共享网络的方式勉强上网&#xff0c;这里不得不说华为的信号桥很好用。 之前在1050ti的电脑上布置过&#xff0c;很顺利&#xff0c;这个新…

原生js实现将图片内容复制到剪贴板

核心代码 /*复制图片*/ copyImg(dom) {/* 警告&#xff1a;dom不能是img标签&#xff0c;建议用DIV标签包裹img标签&#xff0c;否者会报错&#xff01;不支持复制背景图&#xff01; */dom.style.userSelect auto;let selection getSelection(), range document.createRan…

Springboot调整接口响应返回时长详解(解决响应超时问题)

一、前言 当后端对于数据量较大的处理或是某些耗时的操作时,需要先对请求接口的请求进行响应。实际场景中会遇到请求业务处理流程耗时较长&#xff0c;比如长查询&#xff0c;远程调用等&#xff0c;主线程会被一直占用会影响其他请求的响应&#xff0c;导致服务端性能下降。同…

【Ubuntu报错】NetworkManager is not running

如果你在运行nmcli命令时遇到"NetworkManager is not running"错误&#xff0c;这意味着NetworkManager服务没有在你的系统上运行。 你可以尝试以下步骤来启动NetworkManager服务&#xff1a; 检查NetworkManager服务的状态&#xff1a;运行以下命令来检查NetworkMa…