基础篇——7.断言和触发器
1 断言2 触发器 trigger触发器是用户定义在关系表示的一类由事件驱动的特殊过程。用户操作,自动激活触发器。 2.1 定义触发器12345678910111213141516171819202122232425262728293031323334353637383940CREATE TRIGGER <触发器名>{BEFORE|AFTER} <触发事件> ON <表名>REFERENCING NEW|OLD ROW AS <变量>FOR EACH {ROW|STATEMENT}[WHEN<触发条件>]<触发动作体># 行级触发器示例:对SC的Grade属性进行修改时,若分数增加10%,则将此次操作记录到另一个SC_U(Sno,Cno,Oldgrade,Newgrade)中。CREATE TRIGGER SC_TAFTER UPDATE OF Grade ON SCREFERENCING OLDROW AS OLDTuple NEWROW AS ...
系统篇——1.查询处理和查询优化
1 查询处理1.1 查询处理的步骤 与编译器进行编译的步骤有点像,先对内容进行解析,优化然后执行。实际上执行查询的步骤就是对SQL语句进行编译并且执行的步骤。 查询分析 对语句进行扫描、词法分析和语法分析。从查询语句中识别出语言符号。处理语法错误。 123graph TB词法分析--> 语法分析 查询检查 对合法的查询语句进行语义检查。名称是否存在、视图操作转化为基本表操作、用户权限和完整性检查。将数据库对象的外部名称抓华为内部表示,生成等价的关系代数表达式,使用查询树(语法分析树)来扩展关系代数表达式。 12345graph TB语义分析-->符号名转换符号名转换-->安全性检查安全性检查-->完整性初步检查完整性初步检查-->生成查询树 查询优化 每个查询都会有许多可供选择的执行策略和操作算法,查询优化就是选择一个搞笑执行的查询处理策略。 代数优化指关系代数表达式的优化,按照一定的规则,通过对关系代数表达式进行等价变化,改变代数表达式中操作的次序和组合,使得查询效率更加高效。 物理优化指存取路径和底层操作算法的选择。选择可以使基...
设计篇——1.规范化
1 规范化1 函数依赖记 A->B 表示 A 函数决定 B,也可以说 B 函数依赖于 A。 如果 {A1,A2,… ,An} 是关系的一个或多个属性的集合,该集合函数决定了关系的其它所有属性并且是最小的,那么该集合就称为键码。 部分函数依赖 设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。 举个例子:学生基本信息表R中(学号,身份证号,姓名)当然学号属性取值是唯一的,在R关系中,(学号,身份证号)->(姓名),(学号)->(姓名),(身份证号)->(姓名);所以姓名部分函数依赖与(学号,身份证号); 完全函数依赖 设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。 例子:学生基本信息表R(学号,班级,姓名)假设不同的班级学号有相同的,班级内学号不能相同,在R关系中,(学号,班级)->(姓名),但是(学号)->(姓名)不成立,(班级)->(姓名)不成立,所以姓名完全函数依赖与(学号,班级); 传递函数依赖 设X,Y...
系统篇——2.并发控制
并发控制 参考文献 锁与并发 1 事务的特性概念事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。 ACID 原子性(Atomicity)事务被视为不可分割的最小单元,事务的所有操作要么全部提交成功,要么全部失败回滚。回滚可以用回滚日志(Undo Log)来实现,回滚日志记录着事务所执行的修改操作,在回滚时反向执行这些修改操作即可。 一致性(Consistency)数据库在事务执行前后都保持一致性状态。在一致性状态下,所有事务对同一个数据的读取结果都是相同的。 隔离性(Isolation)一个事务所做的修改在最终提交以前,对其它事务是不可见的。 持久性(Durability)一旦事务提交,则其所做的修改将会永远保存到数据库中。即使系统发生崩溃,事务执行的结果也不能丢失。系统发生崩溃可以用重做日志(Redo Log)进行恢复,从而实现持久性。与回滚日志记录数据的逻辑修改不同,重做日志记录的是数据页的物理修改。 事务的 ACID 特性概念简单,但不是很好理解,主要是因为这几个特性不是一种平级关系:...
设计篇——2.设计步骤
设计篇——设计步骤1 ER 图定义Entity-Relationship,有三个组成部分:实体、属性、联系。 用来进行关系型数据库系统的概念设计。 实体的三种联系包含一对一,一对多,多对多三种。 如果 A 到 B 是一对多关系,那么画个带箭头的线段指向 B; 如果是一对一,画两个带箭头的线段; 如果是多对多,画两个不带箭头的线段。 下图的 Course 和 Student 是一对多的关系。 表示出现多次的关系一个实体在联系出现几次,就要用几条线连接。 下图表示一个课程的先修关系,先修关系出现两个 Course 实体,第一个是先修课程,后一个是后修课程,因此需要用两条线来表示这种关系。 联系的多向性虽然老师可以开设多门课,并且可以教授多名学生,但是对于特定的学生和课程,只有一个老师教授,这就构成了一个三元联系。 表示子类用一个三角形和两条线来连接类和子类,与子类有关的属性和联系都连到子类上,而与父类和子类都有关的连到父类上。
Django-Manage管理工具
django-admin.py全局管理工具 django-admin.py 基本命令 [参数列表] check compilemessages createcachetable diffsettings dumpdata flush inspectdb loaddata makemessages [migrate]:数据库命令 makemigrations 让django工程记录数据模型的迁移内容。知道那一部分需要迁移,模型有哪些变化,但是不进行操作数据库。 migrate 真正的数据模型迁移工作,对应数据模型创建相应的数据表内容。 showmigrations 显示数据库迁移内容 flush 清空全部数据 dumpdata appname > app.json 导出json格式的数据 loaddata 导入json格式的数据 dbshell 项目数据库的终端环境,进入数据库的命令行 sendtestmail shell [sql]:数据库控制命令 sqlflush sqlsequencereset squa...
Django-Object-Class相关类和对象的使用方法
Request对象包含的信息 属性 描述 path 请求页面的全路径,不包括域名—例如, “/hello/“。 method 请求中使用的HTTP方法的字符串表示。全大写表示。例如: if request.method == ‘GET’: do_something() elif request.method == ‘POST’: do_something_else() GET 包含所有HTTP GET参数的类字典对象。参见QueryDict 文档。 POST 包含所有HTTP POST参数的类字典对象。参见QueryDict 文档。 服务器收到空的POST请求的情况也是有可能发生的。也就是说,表单form通过HTTP POST方法提交请求,但是表单中可以没有数据。因此,不能使用语句if request.POST来判断是否使用HTTP POST方法;应该使用if request.method == “POST” (参见本表的method属性)。 注意: POST不包括file...
DJango——模板层复习
这个模板层大致又复习了一遍之前没找到的东西又发现了 在模板层中有的内奸标签API真的很有用,还有很多有用的其他东西。
Django-admin后台管理
与yii框架相似,通过脚手架的方式直接生成对原始数据的管理,并且可以通过对数据的简单控制实现管理的基础功能。 class ContactAdmin(admin.ModelAdmin): list_display = (‘name’, ‘age’, ‘email’) search_fields = (‘name’, ‘age’) inlines = [TagInline, ] fieldsets = ( [‘Main’,{ ‘fields’:(‘name’,’email’), }], [‘Advance’,{ ‘classes’: (‘collapse’,), # CSS ‘fields’: (‘age’,), }] )













