BUAA-DataBase-Homework3
数据库第三章作业实验环境
Windows 10 21H2
SQL Server 19
Microsoft SQL Server Management Studio
实验内容创建数据库
创建一个 school 数据库,为数据库文件和日志文件命名,并将它们存储到不同目录下。将数据库文件的初始大小设置为 10M,最大大小设置为 20M,每次增长 1M。
为 school 数据库再增加一个数据库文件。
新建数据库图示如下,过程中要注意选取自动增长和最大大小。数据库文件第一行为普通数据,第二行为数据库日志文件。
右键数据库名并查看数据库属性,可以添加新的数据库文件
完成练习数据表规格如下:
学生表(学号,姓名,性别,年龄,入学年份,籍贯,系号,班长学号),学号是主码,系号和班长学号是外部码,手机号码必须唯一,学生的年龄不得小于10岁和大于50岁,性别必须是’男’或者’女’。
系表(系号,系名,系主任),其中系号是主码,系名不能有重复的。
选课表(学号,课程号,成绩),(学号,课程号)是主码,学号和课程号是外部码,成绩不能小于0分和大于100分
课程表(课程号,课程名,先修课,学 ...
BUAA-DataBase-Chapter2
第 3 章 SQL 概述数据定义支持 SQL 的关系数据库管理系统同样支持关系数据库的三级模式结构。存储结构如图所示:
外模式:若干视图、部分基本表
模式:若干基本表
内模式:存储文件
基本表和视图一致,都属于关系。视图是从一个或多个基本表导出的表,属于虚表,用户可以查看视图,但视图并不实际存放数据。通常一个关系数据库管理系统可以包含多个数据库,一个数据库可以建立多个模式,一个模式可以包含多个表、视图、索引等数据库对象
数据定义语句如下:创建(CREATE)、删除(DROP)、修改(ALTER),对象包含模式(SCHEMA)、视图(VIEW)、表(TABLE)、索引(INDEX)
具体使用时采用 $<操作>+<对象>$ 的语句即可。其中只有表和索引可以执行修改操作
模式的定义与删除定义模式实际上定义了一个命名空间。在模式中可以进一步定义数据库对象。模式定义语句如下:
CREATE SCHEMA <NAME> AUTHORIZATION <USERNAME>;
如果没有指定模式名 NAME 则默认为用户名称 USERNAME
在 ...
BUAA-CompilePrincipal-Chapter4
编译原理笔记第 08 讲 ~ 第 10 讲:错误处理、语法制导翻译技术、语义分析和代码生成
第 08 讲 错误处理错误的定义与分类编译器在面对错误的源程序时需要进行语法、语义上的处理,发现成分的错误。一般错误分为两类:语法错误和语义错误
语法错误:不符合语法规则(上下文无关的);简单来说就是看上去就不是人话
语义错误:不符合语义规则、超越系统限制
语义规则:
标识符先定义后引用
标识符引用满足作用域规定
函数调用时形参、实参类型与数量匹配
参与运算的操作数类型匹配
数组等下标不允许越界
系统限制:
数值溢出
符号表、静态存储区溢出
动态存储分配区域溢出
错误的诊察与报告对错误的勘察大致可以分为三部分:语法规则检查、语义规则检查、溢出错误检查,分别进行在语法分析、语义分析和程序运行中。
错误报告需要判断出错的位置和错误性质,位置指的就是行号或 Token 的计数器;错误性质要根据进行的错误处理具体判断
错误处理技术发现错误后并报告后,需要对错误进行处理,使得编译能继续执行。
错误改正:对于语法错误可以根据文法进行错误改正,但由于文法的复杂性很难实现
错误局部化处理:将错误产 ...
BUAA-CompilePrincipal-Chapter3
编译原理笔记第 05 讲 ~ 第 07 讲:符号表管理技术、运行时的存储组织及管理、源程序的中间形式
第 05 讲 符号表管理技术
符号表:编译程序为了记录源程序中标识符以及相关的信息时所用到的表格。其中的每一个登记项都填入了标识符的种类、类型、特征、存储单元地址等信息。
符号表的概念
在多遍编译程序中,符号表在词法分析时创建,当检测到标识符单词时就添加一个符号表的项和对应索引;符号表在语义分析时才填入项的其他信息,因为只有这时才能根据标识符上下文分析出标识符的相关属性。
如果在语法分析时就对符号表进行填写会导致某些信息的缺失,或在错误的阶段产生了信息,导致编译程序耦合度过高,工程性下降。
在单遍编译程序中,程序则在语义分析阶段才创建符号表,之前的阶段和符号表是完全无关的,这样可以降低耦合度,同时简化符号表和程序之间的交互
符号表的作用
源程序中,标识符的每一次出现都需要从符号表中查询对应的项,有则获取信息,无则添加条目;不同声明类型的语言在查表时的操作也存在差异
符号表的表项会随着标识符的存在、创建和删除而做出动态的修改,也就是说符号表是一个动态表,编译程序需要时刻对其进 ...
BUAA-CompilePrincipal-Chapter2
编译原理笔记第 03 讲 ~ 第 04 讲:词法分析、语法分析
第 03 讲 词法分析正则文法和状态图
左线性文法:字母代表状态,数字代表转移过程,可添加开始状态和终止状态的标志,形成一个状态转移图。文法中表示状态的字母在左,故称左线性文法
左线性文法的状态图画法:
每个左侧的非终结符都可以画为一个状态,,其与右侧的每一个可以推导的状态间都有一条单向的状态转移线,线上需要标记相邻的数字
重复第一步,直到某个状态推导的文法中不包含状态字母,只包含数字,这时拟出一个初始状态,与线上标记该数字,最后标记终止状态即可
以下列文法为例,进行左线性文法的状态图绘制:$$Z::=U1|V1\U::=Z1|1\V::=Z0|0$$
这里从第一句 $Z$ 开始,绘出状态点 $Z$、$U$、$V$,并画出 $U\to Z$、$V\to Z$ 的两条状态转移线,分别标注 $1$ 和 $1$
第二句针对状态点 $U$,画出 $Z\to U$ 的状态转移线,标注 $1$;注意到 $U$ 也可推导出 $1$,于是拟出一个初始状态 $S$ 加入状态图,并画出 $S\to U$ 的状态转移线,标注 $1$
最 ...
BUAA-DataBase-Chapter1
第 1 章 绪论1.2 数据模型
数据模型是一种模型,它是对现实世界数据特征的抽象,是数据库描述数据、组织数据、操作数据的途径。
两类数据模型根据模型应用的不同目的,可以将模型划分为两大类:概念模型,逻辑模型和物理模型
前者用于对数据建模,用于数据库的设计;后者中,物理模型描述了数据在系统内部的表示方式(硬件层面),逻辑模型按计算机系统的观点对数据进行建模。
数据库管理设计人员需要选择物理模型,而物理模型对于使用者来说实际上是透明的
概念模型
概念模型实际上是现实世界到机器世界的一个中间层次。
信息世界中存在一些概念,这对于数据库概念模型的建立有重要的作用:
实体:客观存在并可相互区别的事物;人就是实体的一种
属性:实体具有的某一特性;一个实体可以由多个属性进行描述
码:某一标识实体的属性集;例如学号、班级都是学生实体的码
实体型:用实体名和属性的集合来抽象、刻画同类实体;例如 学生(年龄、性别、学号、……)
实体集:同一类型实体的集合
联系:实体间的联系通常指不同实体集之间的联系;联系有一对一、一对多和多对多等类型
这里的一和多是针对于联系中实体的数量
实体-联系方法实体-联 ...
BUAA-Algorithms-Chapter1
第 01 讲 渐进记号表示时间、空间复杂度时会采用一系列符号来表示其对应的数量级
$O$:渐进上界,表示算法复杂度的上限,算法执行时复杂度不会超过这个值(实际上也是估算,常数级不予考虑)
$\Omega$:渐进下界,表示算法复杂度的下限,通常表示最优情况下的复杂度
$\Theta$:渐进紧确界,当 $O$ 和 $\Omega$ 相等时,对应的值就被记为 $\Theta$,表示算法的性能浮动
这张图中 $f(n)$ 代表算法的实际运算,可以看到当自变量 $n$ 足够大时,$O>f>\Omega$ 的关系相对明确,也间接说明了渐进上下界的概念
第 02 讲 复杂度分析分析递归的时间复杂度可以使用三种方式:递归树法、代入法、主定理法
递归树法递归树法主要计算的是树的深度,最终的时间复杂度是深度乘以每层的复杂度得到的积。
如上图中每层的复杂度都是 $O(n)$,同时每一个分支进入每一层都要变为一半,选取随意一支,计算 $1 = n*(\frac 1 2)^{k}$,得到 $k=log_2n$,最终换底提出系数,算出深度为 $log\ n$ 层。当各个分支分得的复杂 ...
BUAA-CompilePrincipal-Chapter1
编译原理笔记第 01 讲 ~ 第 02 讲:概论、文法与语言
第 01 讲 概论基本概念程序
源程序:用汇编语言或高级语言书写的程序
目标程序:用目标语言书写的程序,也就是编译转换的目标
翻译程序:将源程序转换为目标程序的程序,是汇编程序、编译程序、变换程序的总称
源程序是翻译程序的输入,目标程序是翻译程序的输出
编译与解释
编译程序:对高级语言的源程序进行翻译的程序,过程称为编译
汇编程序:特指能将汇编语言的源程序翻译成机器语言的翻译程序,过程称为汇编
相对而言,编译程序处理高级语言所以更加复杂,汇编程序处理机器码的方式相对固定,处理简单
除编译外,还有一种处理程序的方式:解释。解释对源程序进行解释执行,它们的区别在于:
编译:先编译,后运行,语法、语义等报错产生在编译过程中,运行时也会产生错误
解释:解释程序对源代码边解释边运行,所有错误都是运行过程中产生的
编译过程编译一般来说可以分为 5 个过程:
词法分析:识别字母序列中合法的单词(token),一般而言语言具有四类词:
关键字或保留字(如 begin、end 、if)、标识符、常数分界符 (运算符) ( ...
从负开始的 Vue 学习 (2)
系列文章
从负开始的 Vue 学习 (1)
从负开始的 Vue 学习 (2)
Vue 的组件化开发对大型网页、站点而言,如果单纯使用一个 Vue 文件会显得内容过于复杂,并且难以查错,于是出现了组件。
组件是带有名称的、可复用的实例,是页面的砖头,多个组件组合在一起分别行使不同功能,分离代码。当某个部分出现问题后可以第一时间定位组件进行修改,并且有利于进行代码复用。在进行迭代化开发时也可以快速修改所有应用的组件。
组件基础组件使得我们把页面元素拆分成了各个部分,并单独进行处理。定义组件时,应定义在新 Vue 文件中(通常在 ./src/components 目录下),并称为单文件组件(SFC)。通常情况下,组件文件名要大写开头。
组件的使用组件间通常是以父子关系存在的,使用子组件需要在父组件内进行导入。导入后还需要在父组件内进行注册,注册后就可以在 <template> 内使用这个标签化的组件了,如下例:
<template> <div> <Vue/> <!-- 子组件使用在此 --> ...
梦、世界与拯救——《白日梦的构想图》有感
梦、世界与拯救——《白日梦的构想图》有感已许久未动过笔了,希望语言不会过于粗浅。
今天来聊聊《白昼夢の青写真》,发售于2020年9月25日,是物理社(Laplacian)的第五部作品。也正是在这部作品中,绪乃ワサビ把“只想寻找与我们口味相符的人”的理念实践到了一个新的高度,同时也是物理社向着“不依赖浅层的角色性”的作品进行挑战的又一次尝试。伤感的元素比较强
无语音预计时长 11-13h,虽然有选择肢存在,但并不影响路线走向,只会调整剧情中不同故事出现的顺序,本质上为单线。Steam 有售并未采用代理发行,锁不锁国区就不了解了。是否购买很大程度上看你是不是能接受作品倒出的点了。
游戏由四部分组成,三个被称为 case 1 - case 3 的独立故事,以及指向真结局的 case 0。游戏开始会以随机顺序开始 1-3 这三个 case,并且进行一部分后会有中断和切换,后续可以按照喜好进行完整阅读。三个 case 结束后自动进入 case 0。
虽然 case 1-3 没有剧情关联,但是建议按照 case3 → case2 → case1 的顺序游玩,这和 case0 中剧情的引入顺序相关。 ...