cs130数据库:PgSql模块(下)
pgSQL 3.1主外键主键外键的概念主键是定义的,一个数据字段唯一的标识符,在表中,不会存在相同的主键
创建主键我们可以直接增加primary key约束来创建主键我们还可以使用constraint语法来创建主键:constraint <主键名称> primary key(创建主键的字段的名称)
创建外键constraint <外键名称> foreign key(创建外键的字段) references <参考的表>(<参考的字段>)
比如constraint fk_em3_dept foreign key(deptID) references dept(id)在这个表中,将字段deptID设置为外键,它引用至dept这张表的id字段外键关联/引用的字段,一定是另外一张表的主键
主键约束和外键约束的作用主键约束:唯一标识一条记录提高数据的检索效率
外键约束:保证数据的完整性提高数据的检索效率
非空、唯一、默认值约束非空 NOT NULL不能向对应字段插入null值
唯一 UNIQUE是对应字段不能出 ...
cs130数据库:PgSql模块(上)
pgSQL 1概念级数据库基础概述数据库表实质上就是一系列二维数组的集合:横向的行(记录)和纵向的列(字段、属性)DDL语言:数据库定义语言,主要包括DROP,CREATE,ALTER等语句操作DML语言:数据库操作语言,INSERT,UPDATE,DELETE等语句操作DQL语言:数据库查询语言,SWLECT语句DCL语言:数据库控制语言,GRANT,REVOKE,COMMIT,ROLLBACK等语句操作
数据类型数值类型整数类型SMALLINT 范围是-32768到32767INT(INTEGER) 普通大小的整数,范围是-2147483648到2147483647
任意精度浮点数类型:REAL 6位十进制数字精度NUMERIC(m,n) 任意精度类型 m代表一个字段所能存储的数值最大长度,n代表精度
NUMERIC(5,2) 存储5位,其中可以保留两位小数。另外,小数点不占有一位。比如123.88可以,但1234.88不行但是如果插入部分多的在小数部分,那么会四舍五入而不会报错,比如 123.888->123.89
日期与时间类型TIME:只用于一日内的时间,8字 ...
cs130数据库:理论知识模块(上)
Lecture1-2
数据库是一个存储和处理数据(任何类型的信息)的系统。数据库引擎可以对数据库中的信息进行排序、更改和保存。
数据库 The Database
一个由逻辑上相关的数据及其描述组成的共享集合,旨在满足一个组织的信息需求。可能是大型的数据储存库–由许多部门和用户同时使用
逻辑相关 “logically related”
当我们分析一个组织的信息需求时,我们试图确定实体、属性和关系。实体entity: 是在数据库中表示的组织中的一个独特的对象(一个人,地方,概念或事件)属性attribute:是描述我们希望记录的对象的某些方面的属性关系relationship:实体之间的联系
The Database Management System (DBMS)
一种软件系统,使用户能够定义、创建、维护和控制对数据库的访问它允许用户定义数据库,通常是通过数据定义语言(DDL:Data Definition Language)
它允许用户插入、更新、删除和检索数据库中的数据,通常通过数据操作语言、(DML:Data Manipulation Language)
拥有一 ...
cs130数据库:理论知识模块(下)
Lecture 7-8INSERT想要从table中得到数据,那么我们需要使用INSERT语句去完成它INSERT 拥有着特别的结构INSERT INTO TABLENAME (COLUMN LIST)VALUES(VALUE LIST)\ INSERT INTO 表名称 (纵行) VALUES (数值表VALUE LIST)
比如有Table:
我们想要在moviename,movieminutes,movierating,movieguide插入值,值分别是’Interstellar’,169,8.7,’PG-13’
123INSERT INTO mymovies (moviename,movieminutes,movierating,movieguide)values('Interstellar',169,8.7,'PG-13')
得到结果是:
INSERT 语句中列名的顺序很重要。最好与您在 CREATE 语句中的排列方式相匹配
示例:
主键 primary keysprimary keys 主键总是具有唯一性的数 ...
cs210算法与数据结构(三)
Lecture 9 Recursion&DP递归 Recursion简介我们把一个调用它自己的方法称为递归当我们想要且可以比较简单地“把复杂问题分解为简单问题”的时候,就可以使用它
递归的关键在于两个部分,一个是最对重复问题的分解与解答,而另一个就是“停下”的操作,即Base Case
递归不断调用自身,直到达到基本情况Base Case,然后再一步步调用回来,得到答案
递归与效率递归实现往往非常简单对最初初几次调用非常快对于较大的值,程序在输出之间暂停的时间惊人地长(结果表明,使用递归计算斐波那契数非常糟糕)
方法需要很长时间,因为每个级别都会使递归调用的数量增加一倍
递归可以简化代码,但并不总是有效
也就是说,我们不希望递归经常调用自身,如果我们想在调用次数不呈指数增长的条件下使用递归,我们可以使用动态规划
动态规划 Dynamic Programming简介动态规划(也称为动态优化)是一种解决复杂问题的方法它将复杂问题分解为一组更简单的子问题,只解决每个子问题一次,然后存储它们的解,这样自然就解决了“为了某个值不得不重复调用”的 ...
cs210算法与数据结构(一)
CS210 lecture1概述在此,我们将学习“存储信息的有效结构” 和 “操作信息的便捷算法”,简单来说,就是学习数据结构和算法
预告将包含以下四个主要部分:Recursion递归Data structures 数据结构Algorithms算法Analysis of algorithms算法分析
算法:A step-by-step procedure for solving a problem via a computational process 通过计算过程逐步解决问题的过程
阿兰-图灵终于在20世纪30年代成功地为 “算法 “提供了一个全面的定义:一个可以在图灵机上运行的程序An algorithm is:1.A well-defined, step-by-step procedure 2.That is guaranteed to terminate
程序:An implementation of an algorithm in some programming languages 一种算法在某些编程语言中的实现
数据结构:A conceptual syst ...
cs210算法与数据结构(二)
Lecture 7 Stacks and Queues1Stack Interface堆栈机制称为后进先出(LIFO),因为插入的最后一项是删除的第一项
对于stack,我们有以下几件操作可以进行:pop ( ) –pop the top item off the stack 将新的元素移至顶部push ( ) –put another item onto the top 将顶部元素移除peek ( ) –look at the top item and copy it 复制顶部元素
makeEmpty(): Remove all items from the stackisEmpty():True if stack is empty, false otherwiseisFull():True if stack is full, false otherwise
使用Java实现一个Stack12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849public ...
cs265软件测试(一)
Lecture0Module Overview
Principles of software testing 软件测试原理
Program Inspections,Walkthroughs and Reviews 软件检查、演练与视图
Mathematical foundation for testing 测试的数学基础
Unit testing/object-oriented testing 单元测试,面向对象测试
Test cased esign 测试用例设计
Integration,system and acceptance testing 集成、系统和验收测试
Fault,Error,FailureFault: 1.软件中错误的一个声明 2.计算机程序中不正确的步骤、过程、数据定义 3.可能导致对象发生错误的情况
Error: 1.系统的错误状态 2.产生错误的人为操作
Failure: 1.终止系统执行所需 ...
cs265软件测试(二)
Lecture7 结构测试 - 语句覆盖StatementCoverage结构测试 StructuralTesting结构测试也称为白盒测试,是基于实现或基于代码的测试测试旨在评估程序代码的特定方面,例如语句或决策提供实现的覆盖范围,但不提供规范的覆盖范围通常在功能测试后使用
StatementCoverage确保每一行代码都在测试过程中得到执行,即实现 100% 的语句覆盖率步骤如下:1.构建一个被测试软件的控制流图(CFG)2.每个节点都是独立的源码语句的序列3.CFG上的每个节点都是测试案例4.确定覆盖每个源代码语句所需的输入值5.使用规范(非源码)确定相应的输出
控制流图 Control Flow Graphs控制流图CFG 是一个有向图,它通过代码段显示控制流CFG 主要用于源代码级别CFG 中的一个节点代表源代码中的一个或多个不可分割的语句每条边代表控制流中的分支或跳转一个有两个出口的例子代表了一个决定,有正确和错误的出口CFG 是语言独立的 CFG is language independentCFG 提供了源代码的简化模型
如果i和j是程序图中的节点,当且 ...
cs265软件测试(三)
Lecture11 结构测试——数据流覆盖 Dataflow Coverage简介1.数据流测试集中于变量被接收的节点和这些变量值被使用或引用的节点2.使用所有可能的数据流来验证程序的正确性,即测试定义变量中的值及其子序列使用的每个路径的执行情况3.DU(Definition/Use)对:指的是从变量的定义到后续的使用中的每个可能的路径4.目标是在代码中实现DU对的完全覆盖
数据流异常 Dataflow Anomalies
早期的数据流分析侧重于与变量(参数、局部变量和属性)相关的一组故障,称为数据流异常或定义/引用异常它们包括:1.已定义但从未使用或引用的变量2.在使用之前被多次定义的变量
大多数现代集成开发环境,例如Eclipse 和Netbeans,都可以检测到此类问题。
数据的定义和使用在以下情况,我们认为变量被定义:1.它是一个Input参数,比如 public void test(String str){...}2.在赋值语句左侧的变量 int num = 10 ;3.它充当输出参数
在以下情况,我 ...