彪码野郎

  • 首页

  • 分类

  • 归档

数据库设计与ER图

发表于 2019-11-29 阅读次数:

基本概念

  • 实体:可以简单理解为一条具体记录,具有属性

    • 每个属性都有域
    • 属性可分为
      1. 简单属性、复合属性(姓名是由姓和名组合而成)
      2. 单值属性、多值属性(一对多)
      3. 派生属性:由其他属性计算后可得的属性,与之相对的是基属性
  • 实体集:相同类型实体的集合。

  • 联系:多个实体互相关联(如小明和A课室关联,学生表和课室表是分开的)

  • 联系集:相同类型联系的集合

    • 度:参与联系的实体集的个数,联系集可以涉及多于两个的实体集(X元联系,常见为二元联系)
  • 映射基数:表示某实体X通过联系集进行关联的其他实体的个数

    • 二元联系集的映射基数有以下情况:
      1. 一对一,如:总统和国家
      2. 一对多,如:班级和学生
      3. 多对一,如:病人和医生
      4. 多对多,如:学生和课程

键、码与联系集

  • 参与同一联系集的各个实体集的码的组合,就是联系集的超码
  • 联系集的候选码依赖于联系集的映射基数(1:1,1:n,m:n)

er图图例

实体集与联系集的表示

  • 矩形:实体集,上半部分是实体集的名字,下半部分是实体集中的所有属性名
  • 菱形:联系集,用虚线连接的是联系集的描述性属性
    • 有横线的属性表示主码

角色

  • 自环联系集(recurisve relationship set):涉及同一个实体集的相同属性的联系集
  • 参与preeq的实体集两个都是course

基数约束(联系的上限)

  • 再联系集和实体集之间用→表示“一”,-表示“多”。

一名老师只能有一个学生

一位老师与多位学生联系

参与约束(联系的下限)

  • 实体集参加联系集的方式
    1. 全参与(双线):实体集中每个实体都至少参加联系集中的一个联系
    2. 部分参与:某些实体可能没参加联系集中的任何联系
1
2
3
course是系列课程,section是具体的课程。
具体的课程一旦存在就必须要有对应的系列课程。反之,系列课程不一定需要有具体的课程。
ps:双菱形表示连接到弱实体集的标志性联系集

关系约束的另一表示方式

  • 每个学生有且仅有一个导师,教师可以有0个或多个学生

弱实体集

  • 没有主键的实体集叫做弱实体集
  • 若实体集的存在依赖于它的标识实体集(属主实体集)的存在
  • 标识性联系(双菱形):将弱实体集与其标识实体集相联的联系

扩展ER特性

  • 特化(继承):自顶向下设计过程中,低层实体集继承它连接的高层实体集的所有属性及参加的联系,用空心箭头表示。
  • 泛化(概化):自底向上涉及过程中,将数个共享相同特殊的实体集组合成一个高层实体集

  • 特化/概化的设计约束

    • 不相交:一个实体只能属于一个低层实体集(画法:在isa旁边加disjoint)
    • 重叠:一个实体可属于多个低层实体集
    • 完备性约束:略

不相交与重叠的例子

  • 聚集
1
2
3
4
5
上图中eval_for和proj_guide都是三元联系,并且他们的信息是由重叠的。
每个evalf_for联系对应一个proj_guide联系,,而proj_guide联系可能不用对应任何eval_for,所以肯定不能去除proj_guide。

此时我们可以通过聚集消除这种冗余
- 将联系视为一个抽象实体

我们把proj_guide的三元联系抽象成一个实体集

全排列问题

发表于 2019-11-26 阅读次数:

TODO写的很差,需要重写

问题

在写OS作业的时候,银行家算法检查安全序列需要用到全排列,所以来写一下。题目如下:

  • 给定一个没有重复数字的序列,返回其所有可能的全排列。
1
2
3
4
5
6
7
8
9
10
输入: [1,2,3]
输出:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
阅读全文 »

排序之快速排序

发表于 2019-11-22 分类于 数据结构与算法 阅读次数:

快速排序定义

tomcat配置ssl(升级为https)

发表于 2019-11-03 分类于 杂项 阅读次数:

简介

本文将概述性地写tomcat配置ssl的方法,关于springboot配置ssl的方法大同小异,所以再次不过多赘述。

注意:本文使用的是tomcat8.5.4。

  • 这里大致说一下HTTP和HTTPS的区别,具体的差别,请自行查阅。

    1. HTTP协议通信过程中信息是明文传输,HTTPS是建立在具有安全性的SSL加密传输协议上的HTTP,所以并不是明文传输。

    2. HTTPS协议需要申请CA(机构)证书(准确的来说是SSL要),证书用于校验客户端或服务器的身份。(免费证书很少很少,大多需要收费,可自己创建证书,但认可度低)

阅读全文 »

浅谈Tomcat与Apache

发表于 2019-11-03 阅读次数:

概述

Tomcat和Apache Http Server(下称Apache)还有Nginx总的来说都是Http服务器(Http Server)。

Http服务器

Http服务器本质上是一种应用程序,其通常运行在服务器上,绑定服务器的ip地址并监听某一个tcp端口接收并处理Htpp请求。用户使用客户端(浏览器)通过HTTP协议获取服务器上的资源(网页、文档、媒体文件等)。

阅读全文 »

操作系统第二章·进程的管理

发表于 2019-11-02 分类于 操作系统 阅读次数:

第二章·进程的管理

进程的概述及前置知识

  • 在早期的单道批处理系统中,程序执行方式是顺序执行,也就是一个程序占用整个系统的资源(cpu、内存等),这种方式显然是浪费资源的。而在多道程序系统中,内存可以同时装入多个程序,使它们共享系统资源,并发执行。

  • 显然并发执行提高了资源利用率和吞吐量,考虑道并发执行的特征,才引入进程的概念,这里我们需要对顺序和并发执行进行描述,所以我们需要了解一下前趋图。

阅读全文 »

理解trie树

发表于 2019-10-30 分类于 数据结构与算法 阅读次数:

简介

TrieTree又称作字典树或前缀树(下称Trie),是一种专门用于处理字符串的树。
对比其其他树查询字符串的时间复杂度,Trie的时间复杂度十分的低。

  • 平均查询时间复杂
    • 常规的树结构:O(logn)
    • Trie:O(M),M为字符串长度
阅读全文 »

岛的问题

发表于 2019-10-27 阅读次数:

问题

leetcode-200岛屿数量

给定一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。

阅读全文 »

操作系统第一章·引论

发表于 2019-10-26 分类于 操作系统 阅读次数:

TODO:待补充中断和陷入

第一章·引论

操作系统的主要作用及目标

操作系统是配置在计算机硬件上的第一层软件,并作为计算机系统资源的管理者。

  • 主要作用是管理设备,并提高设备利用率和系统的吞吐量,而后为用户和应用程序提供一个简单的接口,便于用户使用。

  • 主要目标是:方便性、有效性、可扩充性和开放性。

    • 方便性:OS提供各种命令(高级语言)方便用户操作计算机。
    • 有效性:提高系统资源(cpu或io设备)的利用率,提高系统的吞吐量。
    • 可扩充性:结构可修改,便于增加新的功能和模块。
    • 开放性:系统能准许世界标准规范,兼容硬件和软件。
阅读全文 »

理解并查集(仍有问题)

发表于 2019-10-25 阅读次数:

question:为啥不直接写一颗可以存根节点的树(TreeMap)呢,为什么专门写并查集呢

定义

并查集是一种树型的数据结构,可以用链表和数组或树实现。

在并查集(Disjoint Set)中只需要有三个方法init、union和isSameSet

  • init:把每个点所在集合初始化为其自身)

  • union(a,b):合并a、b所在的两个集合。

  • isSameSet(a,b):检查a、b是否在同一集合中。

注意:

阅读全文 »
12…4
Weapon

Weapon

40 日志
6 分类
4 标签
© 2019 Weapon
由 Hexo 强力驱动 v3.9.0
|
主题 – NexT.Pisces v7.3.0