- 博客(61)
- 收藏
- 关注
原创 十一、 数据库设计
什么是数据库设计数据库设计是指对于一个给定的应用环境,构造(设计)的数据库逻辑模型和物理结构,并据此建立数据库及其应用系统,使其能够有效地存储和管理数据,满足各种用户的应用需求,包括和。在数据库领域内,常常把使用数据库的各类系统统称为。大型数据库应用系统的设计和开发是一项庞大的工程,涉及多学科的综合性技术。数据库设计的目标高效率的运行环境数据库设计的特点数据库建设有“”的说法。数据库的设计应将数据库设计和应用系统设计相结合,即将和紧密结合起来。传统的软件工程:重“行为设计”
2025-06-22 13:57:30
1083
原创 十、关系数据库设计理论(二)
定义 10.18设R∈1NFR \in 1NFR∈1NF,若在RRR中没有非主属性传递依赖于RRR的候选键,则关系模式R∈3NFR \in 3NFR∈3NF。如果数据库模式RRR中每个关系模式都是 3NF,则数据库模式R∈3NFR \in 3NFR∈3NF。一个 2NF 的关系模式不一定属于 3NF。2NF 仅消除了非主属性和主属性之间的部分依赖,如果存在传递依赖还需要进一步规范化。一个关系模式若是 3NF 的,则一定属于 2NF。
2025-06-22 13:54:38
674
原创 十、关系数据库设计理论
关系关系模式关系数据库关系数据库模式关系数据库模式设计如何设计一个好的关系数据库模式?先得解决关系模式设计的性能好坏问题关系模式设计示例需求:某学校图书馆要建一个图书数据库,其中借阅管理包括借书证号(CARDNO)、借书人姓名(NAME)、借书人所在单位(DEPT)、所在单位负责人(MN)、图书编号(BNO)、借阅日期(DATE)等信息。关系模式:借阅图书登记可以用如下关系模式来描述:BORROW(CARDNO,NAME,DEPT,MN,BNO,DATE)BORROW (CARDNO, NAME, DEPT
2025-06-22 13:53:26
966
原创 九、并发控制
多用户数据库系统数据资源共享外在表现:多个用户同时使用的数据库系统系统内部:允许多个事物以并发的方式运行多事务执行方式事务串行执行每个时刻只有一个事务运行,其他事务必须等到这个事务结束以后方能运行;不能充分利用系统资和数据库资源。交叉并发模式(interleaved concurrency)适应于单**处理机(CPU)**系统;并行事务的并行操作轮流交叉运行;能够减少处理机的空闲时间,提高系统的效率。同时并发方式(simultaneous concurrency)
2025-06-22 13:43:26
1084
原创 八、数据库恢复技术
数据库恢复技术是一种事务处理技术。什么是事务(Transaction)?事务处理技术主要包括数据库恢复技术和并发控制技术。【例】银行转账事务:从账号 A 转 1000 元到账号 B如何定义事务?COMMIT 表示提交,提交事务的所有操作事务正常结束,事务中所有操作结果被保存,即:事务中所有对数据库的更新永久生效;ROLLBACK 表示回滚,撤销事务的所有已完成的操作事务运行过程中出现故障,事务异常终止;系统撤销已完成的更新操作(回滚事务的所有更新操作),恢复到事务开始时的状
2025-06-08 16:25:31
1383
原创 七、数据库的完整性
用户定义的完整性是限定某一具体应用的数据必须满足的语义要求:列值不能为空列值唯一一定的数据格式RDBMS提供定义和检验用户定义的完整性的机制,不必由应用程序承担这部分功能。用户定义的完整性的定义唯一(UNIQUE非空(NOT NULLCHECK约束默认值DEFAULT等用CHECK短语定义元组上的约束条件元组级的限制可以设置不同属性之间的相互约束条件【例】创建选课表并添加属性约束条件SMALLINT类型:整数类型范围-32768到32767无符号(
2025-06-06 18:29:58
1487
原创 六、数据库的安全性
SQL Server什么是计算机系统安全性为计算机系统建立和采取的各种安全保护措施,以保护计算机系统中的硬件、软件及数据,防止其因偶然或恶意的原因使系统遭到破坏、数据遭到更改或泄露等。计算机系统安全性的三个方面技术安全指计算机系统中采用具有一定安全性的硬件、软件来实现对计算机系统及其所有数据的安全保护。当系统受到无意或恶意的攻击时,仍能保证系统正常运行,保证系统内的数据不增加、不丢失、不泄露。管理安全:通过制度、流程、权限控制等防止内部风险政策法律:依靠法律法规和政策规范使用行为。
2025-06-05 17:11:42
1156
原创 五、查询处理和查询优化
查询是数据库管理系统中使用最频繁、最基本的操作,对系统性能有很大影响。对于同一个SQL查询,通常可以有多个等价的关系代数表达式。由于存取路径的不同,每个关系代数表达式的查询代价和效率也是不同的。为了提高查询效率,需要针对具体查询请求,建立一个相对高效的查询计划,即进行查询优化。查询优化技术是关系数据库的关键技术。DBMS的查询优化器包括了很多查询优化技术。查询语句的执行方式下面是SQL的两种使用/执行方式解释方式(交互式)DBMS。
2025-06-05 14:19:32
984
原创 四、关系数据库标准语言SQL_3
SQL语言提供了两种不同的使用方式交互式嵌入式SQL迁入到C,C++,Java,COBOL等程序设计语言中,称为嵌入式SQL(Embedded SQL)。宿主语言(主语言)被嵌入SQL的程序设计语言,称为宿主语言,如C、C++、Java等,称为宿主语言,简称主语言。引入嵌入式SQL的原因SQL语言是非过程语言事务处理一般是过程性的,需要应用高级语言将SQL嵌入主语言后SQL语句负责数据库的操纵宿主语言负责控制程序流程和数据的输入输出嵌入式SQL和交互式SQL主要命令语句相同。
2025-06-03 13:49:53
902
原创 四、关系数据库标准语言SQL_1
SQL简介SQL的特点SQL的系统结构结构化查询语言是一种介于关系代数与关系演算之间的语言;是一个通用的、功能极强的关系数据库语言;目前已成为关系数据库的标准语言,大多数关系数据库产品都支持SQL语言;其前身是1974年Boyce和Chamberlin提出的,并在System R上实现的SQURARE语言。不区分大小写SQL-86SQL-89SQL:1999(SQL3)增加了面向对象的概念,超1000页SQL:2008SQL:2011。
2025-05-30 15:40:04
1188
原创 三、关系数据库
笛卡尔积(Cartesian Product)给定一组集合D1,D2,……,Dn(可以有相同的),其笛卡尔积D1×D2××Dnd1d2dn∣di∈Dii12nD1×D2×……×Dn{(d1d2……dn∣di∈Dii12……nD1123D2abD1×D21a1.b2a2b3a3bD1123D2。
2025-05-18 16:21:49
915
原创 二、数据模型
数据模型(Data Model)说明:数据模型主要分为三类:概念数据模型、基本数据模型、物理数据模型概念模型数据模型数据模型的三要素:在数据库中使用来抽象、表示和处理和信息。基本过程—
2025-05-17 12:31:53
1412
原创 一、数据库系统概述
数据(Data)描述事物的符号记录(表示信息的符号,信息的载体形式多样:数组、文字、图形、图像、声音……数据处理收集、加工、应用、储存、传播等过程数据管理对数据进行分类、组织、编码、存储、检索和维护等是数据处理的中心问题怎么管?——数据管理技术数据的语义数据的含义数据的解释(对数据含义的说明)数据与其语义是不可分的。(例如刻舟求剑、结绳记事,单单拿出这些是没有意义的,要对这些成语进行解释)数据及其语义示例学生记录(李明,男,199505,江苏南京市,计算机系,2013)语义。
2025-05-15 11:54:40
1016
原创 十六、Template(模板)
Template重用的是源代码,而不是像继承和组合那样重用对象代码。Template 通过使用类型作为参数,直接支持泛型编程(写一次代码,用多种类型)。Template(模板) 包括类模板和函数模板。从模板生成类或函数的过程被称为模板实例化。模板实例化fill:#333;color:#333;color:#333;fill:none;实例化Instantiation实例化Instantiation实例化Instantiation模板Templates。
2025-05-13 08:56:36
1151
原创 十五、多态与虚函数
如果一个函数在其基类中被声明为virtual, 那么它在所有派生类中也是virtual的。在派生类中重新定义一个virtual函数,通常称之为重写(Overriding)。多态(Polymorphism):同名但不同实现的函数。虚函数(通过重写)是动态决定调用哪一个函数的。函数重载(Function overloading):是静态决定调用哪个版本的函数。示例 C15:Instrument2.cpppublic:public://重写虚函数。
2025-05-12 21:04:13
985
原创 十四、继承与组合(Inheritance & Composition)
方面public继承protected继承private继承基类的public成员在派生类中变成publicprotectedprivate基类的proitected成员在派生类中变成protectedptivate基类的private成员在派生类中变成不可访问不可访问不可访问派生类成员函数能访问哪些基类成员public和protectedpublic和protectedpublic和protected派生类对象能访问哪些基类成员public无法访问任何成员无法访问热河成员。
2025-05-12 21:01:10
1281
原创 十三、动态对象创建(Dynamic Object Creation)
使用newdelete创建和销毁一个对象使用new[]delete []创建和销毁一个数组。
2025-05-12 20:55:08
292
原创 十二、操作符重载
运算符函数的命名方式按运算元个数分类:一元、二元、三元运算符可以重载的运算符不可重载的运算符重载实现方式成员函数方式友元函数方式[]++--、类型转换、<<>>以访问类的私有成员变量,同时<<和>>左边是ostream或istream类型(例如<<的左边就是ostream类型),因此要把流运算符重载为友元函数下面示例定义了一个date类,并重载<<和>>运算符以支持日期的输入和输出。public:private://注意ost引用ostream类对象。
2025-05-12 20:54:12
633
原创 十一、引用与拷贝函数(References & the Copy-Constructor)
引用() 通常用于函数参数列表和函数返回值,但你也可以创建一个独立存在的引用。引用在创建时必须被初始化(指针可以先创建,然后再初始化)。一旦引用被初始化为指向某个对象,它就不能被更改为去引用另一个对象。(指针可以重新指向另一个对象)引用始终不能是NULL。必须始终能够假设引用连接到了一个合法的存储区域。示例int& m=a;int n = m;m = m + 5;
2025-05-12 20:47:03
699
原创 十、名字控制(Name Control)
所谓的静态对象(静态元素)是指:在程序运行期间,存储在静态存储区(static storage area)生命周期贯穿整个程序的对象。类型示例说明全局变量int x = 5;存在于整个程序静态局部变量函数内部static,记住上次值类的静态成员变量属于整个类namespace作用域的静态对象同样是静态存储静态类对象构造一次,用到最后关键字static对象被创建在一个特殊的静态数据区(static data area),而不是每次函数调用时创建的**栈(stack)**上,
2025-05-12 20:43:52
741
原创 九、内联函数(Inline Functions)
当一个函数代码只有几行,但会被频繁调用时,我们可以使用inline来节省时间并提高效率。内联函数是一个真正的函数,它在调用处被直接展开,就像预处理宏一样,因此可以消除函数调用的开销。内联函数 = 真正的函数 + 具有宏替换的效率。因此,我们在写代码是,应该永远不要使用宏,而是使用内联函数。示例内联函数 = 结合了宏的效率和函数的安全性。类内定义的函数默认使inline大型工程中,最好将inline函数定义写在类外,保持接口整洁。
2025-05-12 20:40:23
755
原创 八、Constants(常量)
如果你是通过地址传递和返回const表示你承诺不会改变该地址所指向的内容。如果你是通过值传递对象, 指定cosnt对于调用者来说是没有意义的。如果你是以const方式按值返回一个类对象,这意味着返回值不能作为左值使用(即不能被赋值或修改)。但是这里需要强调的是cosnt修饰指针与cosnt修饰一些比如intchar等等非指针类型不同。int a = 9;对于非指针类型,const。
2025-05-12 20:38:29
967
原创 七、函数重载与默认参数(Function Overloading & Default Arguments)
默认参数是在函数声明中给定的一个值,当你在调用函数时没有提供对应的参数值,编译器会自动填入这个默认值。就像函数重载一样,默认参数允许你在不同情况下使用相同的函数名和函数重载不同之处在于,是用默认参数时,是编译器在替你填补参数值,而不是你手动写出多个函数版本。函数重载:使用相同函数名,处理不同类型或数量参数。默认参数:简化函数调用,提升接口友好性。
2025-05-12 20:33:58
811
原创 六、初始化与清理(Initialization & cleanup)
在C++中,清理适合初始化一样重要的。析构函数(Destructor)可以用于对象销毁的清理操作。特点名字为~类名无参数,不可重载无返回值编译器在对象销毁时自动调用C++支持在作用域的任意位置定义变量。最佳实践尽可能靠近使用初定义变量定义时初始化这样做有助于提升安全性与代码可读性聚合初始化是C++中一种通过大括号{}一次性为所有成员赋值的方式。它专门用于“简单的结构体或类”,也就是所谓的“聚合类型”,但也不限于聚合类型。构造函数(初始化对象)析构函数(销毁时清理资源)
2025-05-12 20:32:38
539
原创 五、实现隐藏(Hiding the Implementation)
友元函数是一种有特权的函数。允许外部函数(友元函数)或类(友元类)访问本类的私有成员。一个普通的public该函数可以访问类对象的私有部分。该函数属于类的作用域中。(这个函数是在类的”命名空间里面“定义的,它是类的一部分)该函数必须通过对象调用(拥有一个this指针)。一个成员函数仅具有前两个特性。一个friend函数仅具有第一个特性。使用作用域解析符。month = m;day = d;
2025-05-12 20:32:02
585
原创 四、数据抽象(Data Abstraction)
C++类与结构体的区别:类与结构体相似,唯一的区别在于类默认是private,而结构体默认是public。在C++中,类是面向对象编程(OOP)的基础概念。在C++中,对象就是一快有唯一标识或内存地址的存储区域。那些仅仅把函数打包进数据结构的语言是_面向对象的基础语言(object-based)_ ,而不是_真正面向对象的语言(object-oriented)_。**封装(encapsulation):**将数据和相关的操作包装成一个新的数据类型,称为抽象数据类型(ADT)。Stash。
2025-05-12 20:30:44
671
原创 三、The C in C++
int i,j;delet p;由此可见f()的地址在代码段/文本段,属于静态分配dog,cat,bird,全局变量地址,地址相邻,分配在静态区(BSS段)i、j, 局部变量,地址较低,且和全局变量区分明显,属于栈区,且高地址向低地址增长&p , 局部变量int * p本身的地址,也是栈区&(_p) , 动态分配的int 类型变量地址(通过*_new int),属于堆区。T[size]表示“由size个T类型元素组成的数组”。
2025-05-12 15:29:44
685
原创 二、Making & Using Objects
项目含义声明 declaration告诉compiler“这个名字存在”定义 definition给这个名字“分配空间/代码”一个名字可以声明多次,但定义只能一次。//只是声明,没有分配空间int i = 0;//定义//声明//声明//声明int func1(int length,int width){}//定义int i = 0;b = 1.2;i = 2;f(b);h(i);
2025-05-12 15:19:36
847
原创 十一、引用与拷贝函数(References & the Copy-Constructor)
引用() 通常用于函数参数列表和函数返回值,但你也可以创建一个独立存在的引用。引用在创建时必须被初始化(指针可以先创建,然后再初始化)。一旦引用被初始化为指向某个对象,它就不能被更改为去引用另一个对象。(指针可以重新指向另一个对象)引用始终不能是NULL。必须始终能够假设引用连接到了一个合法的存储区域。示例int& m=a;int n = m;m = m + 5;
2025-04-28 21:41:28
1210
原创 十、名字控制(Name Control)
所谓的静态对象(静态元素)是指:在程序运行期间,存储在静态存储区(static storage area)生命周期贯穿整个程序的对象。类型示例说明全局变量int x = 5;存在于整个程序静态局部变量函数内部static,记住上次值类的静态成员变量属于整个类namespace作用域的静态对象同样是静态存储静态类对象构造一次,用到最后关键字static对象被创建在一个特殊的静态数据区(static data area),而不是每次函数调用时创建的**栈(stack)**上,
2025-04-28 14:33:00
899
原创 九、内联函数(Inline Functions)
当一个函数代码只有几行,但会被频繁调用时,我们可以使用inline来节省时间并提高效率。内联函数是一个真正的函数,它在调用处被直接展开,就像预处理宏一样,因此可以消除函数调用的开销。内联函数 = 真正的函数 + 具有宏替换的效率。因此,我们在写代码是,应该永远不要使用宏,而是使用内联函数。示例内联函数 = 结合了宏的效率和函数的安全性。类内定义的函数默认使inline大型工程中,最好将inline函数定义写在类外,保持接口整洁。
2025-04-26 14:48:24
660
原创 八、Constants(常量)
如果你是通过地址传递和返回const表示你承诺不会改变该地址所指向的内容。如果你是通过值传递对象, 指定cosnt对于调用者来说是没有意义的。如果你是以const方式按值返回一个类对象,这意味着返回值不能作为左值使用(即不能被赋值或修改)。*cip = 2;t(ip);//okt(cip);//error:const不可变非constu(ip);//oku(cip);
2025-04-26 11:16:27
918
原创 七、函数重载与默认参数(Function Overloading & Default Arguments)
默认参数是在函数声明中给定的一个值,当你在调用函数时没有提供对应的参数值,编译器会自动填入这个默认值。就像函数重载一样,默认参数允许你在不同情况下使用相同的函数名和函数重载不同之处在于,是用默认参数时,是编译器在替你填补参数值,而不是你手动写出多个函数版本。函数重载:使用相同函数名,处理不同类型或数量参数。默认参数:简化函数调用,提升接口友好性。
2025-04-25 14:47:18
1036
原创 六、初始化与清理(Initialization & cleanup)
在C++中,清理适合初始化一样重要的。析构函数(Destructor)可以用于对象销毁的清理操作。特点名字为~类名无参数,不可重载无返回值编译器在对象销毁时自动调用C++支持在作用域的任意位置定义变量。最佳实践尽可能靠近使用初定义变量定义时初始化这样做有助于提升安全性与代码可读性聚合初始化是C++中一种通过大括号{}一次性为所有成员赋值的方式。它专门用于“简单的结构体或类”,也就是所谓的“聚合类型”,但也不限于聚合类型。构造函数(初始化对象)析构函数(销毁时清理资源)
2025-04-24 16:56:23
931
原创 五、实现隐藏(Hiding the Implementation)
友元函数是一种有特权的函数。允许外部函数(友元函数)或类(友元类)访问本类的私有成员。一个普通的public该函数可以访问类对象的私有部分。该函数属于类的作用域中。(这个函数是在类的”命名空间里面“定义的,它是类的一部分)该函数必须通过对象调用(拥有一个this指针)。一个成员函数仅具有前两个特性。一个friend函数仅具有第一个特性。使用作用域解析符。month = m;day = d;
2025-04-23 19:39:00
1017
原创 四、数据抽象(Data Abstraction)
C++类与结构体的区别:类与结构体相似,唯一的区别在于类默认是private,而结构体默认是public。在C++中,类是面向对象编程(OOP)的基础概念。在C++中,对象就是一快有唯一标识或内存地址的存储区域。那些仅仅把函数打包进数据结构的语言是面向对象的基础语言(object-based),而不是真正面向对象的语言(object-oriented)。封装(encapsulation):将数据和相关的操作包装成一个新的数据类型,称为抽象数据类型(ADT)。Stash。
2025-04-23 08:56:44
1025
原创 三、The C in C++
int i,j;delet p;由此可见f()的地址在代码段/文本段,属于静态分配dog,cat,bird,全局变量地址,地址相邻,分配在静态区(BSS段)i、j, 局部变量,地址较低,且和全局变量区分明显,属于栈区,且高地址向低地址增长&p , 局部变量int * p本身的地址,也是栈区&(_p) , 动态分配的int 类型变量地址(通过*_new int),属于堆区。T[size]表示“由size个T类型元素组成的数组”。
2025-04-15 20:35:35
1186
原创 二、Making & Using Objects
项目含义声明 declaration告诉compiler“这个名字存在”定义 definition给这个名字“分配空间/代码”一个名字可以声明多次,但定义只能一次。//只是声明,没有分配空间int i = 0;//定义//声明//声明//声明int func1(int length,int width){}//定义int i = 0;b = 1.2;i = 2;f(b);h(i);
2025-04-14 11:56:28
994
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅