Linq表达式中Select以及SelectMany的用法,select是将一个源list投影到一个属性值或者多个属性值,也可以是另外一个属性类,通常和where子句连用,通过where子句对list进行筛选之后投影成我们需要的属性。有时我们只需要list中的单个属性,例如是需要查询井的信息,那么我们只需要知道井ID的list集合。那么我们就可以使用select语句投影成到这个井ID属性。
select单属性投影
石油软件类的项目通常左边为项目树,通过左边treeList的节点点击,向后台发送TreeNode属性集合,石油类部门的组织机构通常分为井区、井组、单井,当我们点击了井组集合,井区之下包含了很多口单井,井组之下包含该井组的单井,通常为5~10口单井。假设用户点击了井组节点之后,我们要获得他下面的单井节点。我们首先需要判断用户点击的是哪一级的节点,做法一般是给点击的节点赋值一个Level,通过spilt()方法判断点击是井区、井组还是单井级别。当然我们这里限定了用户点击的是井组节点,那么我们就要获取它下面所属的单井节点。需要注意的是,项目树节点传过来的类型为List<object>。WellOrganDescriptor类封装了组织机构单井信息类,利用ofType方法限定了方法属性名,通过select方法投影出单井的ID属性,使用var匿名定义方法返回值。看出区别没,对于select投影,定义一个item属性,然后进行new出这个list的属性集合,然后投影出自己需要的属性集合。但是细心的你可能会发现,后面还加了一层where筛选,这个是在石油生产环节井分为采油井、注水井,由于需求需要选出采油井的id,所以加了这层属性的筛选,最终拿出这些油井的id。
2、new出新的对象类,将投影出来的属性进行赋值获取
考点12关系数据模型
关系模型由关系数据结构、关系 *** 作集合和关系完整性约束3部分组成。
1关系数据结构
关系模型中的数据结构非常单一。实体及实体间的联系都用关系表示,一个关系就是一张二维表,是关系模型中数据的逻辑结构。
2关系 *** 作集合
关系模型中的关系 *** 作的理论依据为关系代数和关系演算。
关系模型中常用的关系 *** 作包括:选择(select)、投影(project)、连接(join)、除(divide)、并(union)交(intersection)和差(difference)等,以及查询(query) *** 作和增(insert)、删(delete)、改(update) *** 作两大部分。查询的表达能力是其中最主要的部分。
关系数据语言可以分为如下3类:关系代数语言、关系演算语言(包括元组关系演算语言和域关系演算语言)及具有关系代数和关系演算双重特点的语言。
3关系的完整性约束
数据库的数据完整性是指数据库中数据的正确性和相容性,那是一种语义概念,包括两个方面:与现实世界中应用需求的数据的相容性和正确性数据库内数据之间的相容性和正确性。
关系模型中有3类完整性约束:实体完整性、参照完整性和用户自定义的完整性。
45关系模型的数据结构
考点13关系模型的数据结构和基本术语
(1)关系( Relation) ;关系是个元素个数为K(K,1 )的元组集合。一个关系对应一个二维表,二维表名就是关系名。
(2)属性(Attribute)和值域(Domain):二维表中的列(字段),称为属性,属性的个数称为关系的元数,列的值称为属性值.属性值的取值范围称为值域
(3)关系模式(Relation Schema):关系的描述称为关系模式。
(4)元组(Tuple):二维表中的行(记录的值)称为一个元组。关系模式和元组的集合通称为关系。
(5)候选码(Candidate Key)或候选键:如果在一个关系中,存在多个属性(或属性集合)都能用来标识该关系的元组,这些属性(或属性集合)都称为该关系的候选码或候选键。而包含在任何一个候选码中的属性称为主属性或码属性,相反,不包含的为非主属性或非码属性。关系模式的所有数据组是这个关系模式的候选码,称为全码。
(6)主码(Primary Key)或主键:在一个关系的若十个候选码中指定一个用来标识该关系的元组,这个的码称为该关系的主码或主键。
(7)外码(Foreign Key)或外键:当关系中的某个属性(或属性组)不是该关系的主码或只是主码的一部分,但却是另一个关系的主码时,称该属性(或属性组)为这个关系的外码。
(8)参照关系(Referencing Relation)与被参照关系( Referenced Relation):它们是指与外码相关联的两个关系。以外码作为主码的关系称为参照关系;外码所在的关系称为被参照关系或目标关系。
(9)分量(Component):元组中的一个属性值。
(10)主属性(Primary Attribute)和非主属性(Nonprimary Attribute):关系中包含在任何一个候选码中的属性称为主属性或码属性,不包含在任何一个候选码中的属性称为非主属性或非码属性。
考点14关系的形式定义和关系数据库对关系的限定
1关系的形式定义
关系从数学的观点来定义有以下两种解释。
(1)集合论观点:即前面所述,关系是一个元素个数为K(K,1)的元组集合。
(2)值域的观点:关系是属性值域笛卡儿积的一个子集。
2关系数据犀对关系的限定
当关系作为关系数据模型的数据结构时,关系数据库对关系有如下的限制。
(1)列是同质的.即每一列中的分量是同一类型的数据,来自同一个域。
(2)不同的列可以出自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名。
(3)列的顺序无关紧要,即列的次序可以任意交换。
(4)任意两个元组不能完全相同。
(5)行的顺序无关紧要,即行的次序可以任意交换。
(6)每一个属性是不可分解的这是关系数据库对关系的最基本的一条限定。分量必须取原子值,即每一个分量都必须是不可拆分的数据项。
46关系模型的完整性约束
考点15数据完整性规则的分类
关系模型的完整性规则是对关系的某种约束条件。关系模型中可以有3类完整性约束:实体完整性、参照完整性和用户自定义的完整性。其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称为两个不变性、应该由关系系统自动支持。
1实体完整性规则
实体完整性规则:若属性“是基本关系“的主属性,则属性A不能取空。实体完整性关系的所有主属性都不能取空值,而不仅是主码整体不能取空值。说明实体完整性规则应包括如下几个方面:
(1)实体完整性规则是针对基本关系而言的。一个关系(基本表)通常对应现实世界的一个实体集。
(2)现实世界中的实体是可区分的,即它们具有某种性标识。
(3)相应地,关系模型中以主码作为标识。
(4)主码中的属性即主属性不能取空值。所谓空值就是“不知道”或“不确定”的值。
2参照完整性规则
若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:取空值(F的每个属性值均为空值)或者等于S中某个元组的主码值。
3用户有定义的完整性
用户定义的完整性通常是定义对关系中除外码与主码属性之外的其他属性取值的约束,即对其他属性值域的约束,也称为域完整性规则,包括数据类型、精度、取值范围、是否允许空值等。
47关系代数
考点16传统集合运算
传统的集合运算包括并、交、差和广义笛卡儿积4种运算。
1并(union)
设关系R和关系S具有相同的目n(即都有n个属性),且相应的属性取自同一个域,则关系R与S的并是由属于R或属于S的元组组成的,结果仍为n目关系,记做:
RUS={t/t∈R∨t∈S},t是元组变量。
2差(difference)
设关系R和关系S具有相同的目n,且相应的属性取自同一个域,则关系R与关系S的差是由属于R而不属于S的所有元组组成的,结果仍为n目关系,记做:
R-S={t/t∈R∧t¢S},t是元组变量
3交(intersection)
设关系R和关系S具有相同的目n,且相应的属性取自同一个域,则关系R与关系S的交是由既属于R而不属于S的所有元组组成的,结果仍为n目关系,记做:
R∩S={t|t∈R∧t∈S}t ER八:ES},t是元组变量。
显然R自s=R一(R一s)。
4广义笛卡儿积(Extended Cartesian Product)
设关系R和s的元数分别是厂和,,定义R和s的笛卡儿积是一个(r+s)元元组的集合,每一个元组的前r个分量来自R的一个元组,后s个分量来自S的一个元组。若R有m个元组,S有n个元组,则关系R 和S的广义笛卡儿积有m ×n个元组,记做:
R×S={t|t=<t¬¬¬¬r ,ts>∧t¬¬¬¬r ∈ts∈S
考点17专门的关系运算
专门的关系运算包括:对单个关系进行垂直分解(投影 *** 作)或水平分解(选择 *** 作)和对多个关系进行结合(连接 *** 作)等。
1选择(selection)
选择又称为限制,是在关系R中选择满足给定条件的各元组,记做:
(R)={t|t∈R∧F(t=′真′)},其中F表示选择条件,是一个逻辑表达式。
选择运算实际上是从关系R中选取使逻辑表达式F为真的元组。这是从行的角度进行的运算。
2投影(projection)
关系R上的投影是从R中选择出若干属性列组成新的关系,记做:
二1(R、={t[A〕I t ER{,A为R的属性列。
投影 *** 作实际上是从关系中选取某些列,即从列的角度进行的运算。
3连接(join )
连接是从两个关联的笛卡儿积中选取属性间满足一定条件的元组。
连接运算中有两种最为重要也是常用的连接,一种是等值连接( equi - join),一种是自然连接(naturaljoin)自然连接是构造新关系的有效方法。一般,自然连接使用在两个关系有公共属性的情况中。
4除(di%-ision)
给定关系R(X,州和别Y, Z),其中X,Y, Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集R与S的除运算得到一个新的关系尸(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X分量值的对象Yx包含S在Y上投影的集合。记做:
R÷S=t,[X]t,ER八二,(S) C-玖}
除 *** 作是同时从行和列的角度进行运算。
48 SQL概述:
考点18结构化查询语言SQL
SQL (Structured Query Language)称为结构化查询语言,是于1974年由Boyce和Chamberlin提出的,1975年IBM公司研制的关系数据库管理系统的原型系统System R实现了SQL语言。SQL是一个通用的、功能极强的关系数据库语言。我国制定了SQL的国家标准为GB12911, SQL已经成为关系数据库领域中的一种主流语言。
考点19 SQL的特点一
SQL语言集数据查询、数据 *** 纵、数据定义和数据控制功能于一体,主要特点包括以下几个方面:
(1)综合统一。
(2)高度非过程化。
(3)面向集合的 *** 作方式。
(4)以同一种语法结构提供两种使用方式。
(5)语言简洁,易学易用。
考点20 SQL数据库体系结构
SQL语言支持关系数据库三级模式结构:其中外模式对应于视图和部分基本表,模式对应于基本表,内模式对应于存储文件:
基本表是本身独立存在的表,在SQL中一个关系就是一个基本表。一个基本表对应一个存储文件,一个表可以带若干索引,索引也存放在存储文件中存储文件的逻辑结构组成了关系数据库的内模式。存储文件的物理结构是任意的,对用户是透明的。
视图是从一个或几个基本表导出的表二视图是一个虚表视图在概念上与基本表等同,用户可以在视上再定义视图。
49 SQL的数据定义
考点21基本表
1定义基本表
SQL语言使用CREATE TABLE语句定义基本表,其格式如下:
CREATE TABLE<表名>(<列名><数据类型>[列级完整性约束〕
[,<列名><数据类型>[列级完整性约束]…=
〔,<表级完整性约束>〕);
如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级,也可以定义在表级。
2修改基本表
SQL语言用ALTER TABLE语句修改基本表,其格式为:
ALTER TABLE<表名>
「ADD<新列名><数据类型>[完整性约束〕〕
[DROP<完整性约束名>〕
[MODIFY<列名><数据类型>」;
ADD子句用于增加新列和新的完整性约束条件。DROP子句用于删除指定的完整性约束条件。MOD-IFY子句用于修改原有的列定义,包括修改列名和数据类型。
3删除基本表
当某个基本表不再需要时,可以用DROP TABLE语句进行删除,其格式为:
DROP TABLE<表名>
基本表一旦被删除,表中的数据、此表上建立的索引和视图都将自动被删除。因此执行删除基本表的 *** 作时一定要格外小心。
Access method(访问方法):此步骤包括从文件中存储和检索记录。
Alias(别名):某属性的另一个名字。在SQL中,可以用别名替换表名。
Alternate keys(备用键,ER/关系模型):在实体/表中没有被选为主健的候选键。
Anomalies(异常)参见更新异常(update anomalies)
Application design(应用程序设计):数据库应用程序生命周期的一个阶段,包括设计用户界面以及使用和处理数据库的应用程序。
Attribute(属性)(关系模型):属性是关系中命名的列。
Attribute(属性)(ER模型):实体或关系中的一个性质。
Attribute inheritance(属性继承):子类成员可以拥有其特有的属性,并且继承那些与超类有关的属性的过程。
Base table(基本表):一个命名的表,其记录物理的存储在数据库中。
Binary relationship(二元关系):一个ER术语,用于描述两个实体间的关系。例如,panch Has Staff。
Bottom-up approach(自底向上方法):用于数据库设计,一种设计方法学,他从标识每个设计组建开始,然后将这些组件聚合成一个大的单元。在数据库设计中,可以从表示属性开始底层设计,然后将这些属性组合在一起构成代表实体和关系的表。
Business rules(业务规则):由用户或数据库的管理者指定的附加规则。
Candidate key(候选键,ER关系模型):仅包含标识实体所必须得最小数量的属性/列的超键。
Cardinality(基数):描述每个参与实体的可能的关系数目。
Centralized approach(集中化方法,用于数据库设计):将每个用户试图的需求合并成新数据库应用程序的一个需求集合
Chasm trap(深坑陷阱):假设实体间存在一根,但某些实体间不存在通路。
Client(客户端):向一个或多个服务器请求服务的软件应用程序。
Clustering field(群集字段):记录总的任何用于群集(集合)航记录的非键字段,这些行在这个字段上有相同的值。
Clustering index(群集索引):在文件的群集字段上定义的索引。一个文件最多有一个主索引或一个群集索引。
Column(列):参加属性(attribute)。
Complex relationship(复杂关系):度数大于2的关系。
Composite attribute(复合属性):由多个简单组件组成的属性。
Composite key(复合键):包含多个列的主健。
Concurrency control(并发控制):在多用户环境下同时执行多个十五并保证数据完整性的一个DBMS服务。
Constraint(约束):数据库不允许包含错误数据的一致性规则。
Data conversion and loading(数据转换和加载):数据库应用生命周期重的一个阶段,包括转换现有数据到新数据库中以及酱下耨应用程序转换到新的数据库上运行。
Data dictionary(数据字典):参见系统目录(system catalog)。
Data independence(数据独立性):使用数据的应用程序的数据描述部分。这意味着,如果将新的数据结构添加到数据库中,或者数据库中现有的结构被修改了,那么使用此数据库的就会受到影响,除非应用程序不直接依赖于被修改的部分。
Data model(数据模型):描述数据、数据间关系以及数据的约束的概念的一个集成的集合。
Data redundancy(数据冗余):参见冗余数据(redundant data)。
Data security(数据安全):包括对数据库对象(如表和视图)的访问和使用以及用户可以在这些对象上实施的 *** 作。
Database(数据库):是逻辑上相关的数据(以及这些数据的描述)的一个共享的集合,用于解决公司对信息的需求。
Database design(数据库设计):数据库应用生命周期中的一个阶段,包括创建一个支持公司的 *** 作和目标的数据库的设计。
Database integrity(数据库完整性):指存储数据的正确定和一致性。完整性通常用约束来表达。
Database Management System,DBMS(数据库管理系统):一个能够让用户定义、创建和维护数据库并控制对数据库的访问的软件系统。
Database planning(数据库规划):能尽可能有效的实现数据库应用的各阶段的管理活动。
Database server(数据库服务器):同服务器。
DBMS engine(DBMS引擎):同服务器。
DBMS selection(DBMS选择):数据库应用生命周期中的一个阶段,包括选择一个合适的DBMS来支持数据库应用。
Degree of a relationship(关系的度):一个关系中参与的实体的个数。
Denormalization(反规范化):形式上,这个术语指的是对基本表结构的修改,这样新的表比原始的表的规范化程度要低。但也可以用此属于更宽泛地形容将两个表和并成一个新表的情形,而这个新表与原来的表具有相同的范式,但比原表包含更多的空值。
Derived attribute(派生属性):表示其值可以从一个相关属性和属性集的值派生得到的属性,这个属性在实体中不是必须的。
Design methodology(设计方法学):一种结构化的方法,它使用过程、工具和文档来支持和简化设计过程。
Disjoint constraint(无连接约束):描述子类的成员间的关系,并指明超类某个成员是否有可能成为一个或多个子类的成员。
Domain(域):一个或多个属性的取值范围。
Entity(实体):具有相同性质的对象的集合,它是由用户或公司标识并可独立存在的。
Entity integrity(实体完整性):在一个基本表中,主健列的值不能为空。
Entity occurrence(实体出现):实体中的一个可标识的对象。
Entity-Relationship model(实体关系模型):公司的实体、属性和关系的详细逻辑表示。
Fact-finding(事实发现):使用诸如面谈和提问等技术收集关于系统的事实、需求和性能的形式化过程。
Fan trap(扇形陷阱):但从第三个实体扇出的两个实体有1:关系时出现扇形陷阱,但这两个实体在他们之间应该有直接关系以提供必要的信息。
Field(字段):同元组(Tuple)。
File(文件):存储在副主存储器中的相关记录的一个命名集合。
File-based system(基于文件的系统):一个文件集合,用来管理(创建、插入、删除、更新和检索)一个或多个文件中的数据,并产生基于这些文件中的数据的应用(通常是报表)。
File organization(文件组织):当文件存储在磁盘上时,对文件中的记录的安排方式。
First normal form(1NF,第一范式):表中的每个列的交叉处以及记录包含切进包含一个值的表。
Foreign key(外健):一个表中的一个列或者多个列的集合,这些列匹配某些其他(也可能是同一个)表中的候选键。
4GL, Fourth-Generation Language(第四代语言):一种非过程化语言,比如SQL,他只需要用户定义必须完成什么 *** 作,4GL负责将所进行的 *** 作翻译成如何实现这些 *** 作。
Full functional dependency(完全函数依赖):一个列在功能上依赖于复合主健,但不依赖于主健的任何一个子集的条件。
Functional dependency(函数依赖):描述表中列之间的关系。
Generalization(泛化):通过标识实体间的公共特征使实体间差别最小化的过程。
Generalization hierarchy(泛化层次结构):同类型层次(type hierarchy)。
Global data model(全局数据模型):代表整个公司(和被模型化的公司的一部分)的数据模型。
Implementation(实现):数据库应用生命周期中的一个阶段,包括数据库和应用程序设计的物理实现。
Index(索引):一种允许DBMS将特定的记录更快的放置到文件中,从而加快对用户查询的响应的数据结构。
Infomation system(信息系统):能够在整个公司范围内收集、管理、控制和分发数据/信息的资源。
Inheritance(继承):参见属性继承(attribute inheritance)。
Integrity constaints(完整性约束):防止出现数据库中的数据不一致的约束。
IS-A hierarchy(IS-A层次结构):同类型层次结构(type hierarchy)。
Local logical data model(局部逻辑数据模型):代表特定用户视图或用户视图的组合的数据模型。
Logical database design(逻辑数据库设计):基于特定的数据模型构建公司的数据的模型的过程,但不依赖于特定的DBMS以及其他的物理条件。
Meta-data(元数据):关于数据的数据,参见系统目录(system catalog)。
Mision objective(使命目标):标识数据库必须支持的特定任务。
Mission statement(使命语句):定义数据库应用程序的主要目标。
Multiplicity(多样性):定义与某个相关实体的一次出现有关的实体的出现数目。
Multi-valued attribute(多值属性):为一个实体的出现保存多个值的属性。
Nonkey attribute/column(非键属性/列):不是键的一部分的属性/列。
Normal forms(范式):规范化过程的一个阶段。前三个范式分别为第一范式(1NF)、第二范式(2NF)、第三范式(3NF)。
Normalization(规范化):一种产生带有需要的特性的技术,这种特性能支持用户和公司的需求。
Null(空值):表示当前不知道或对于这条记录来说不可使用的一个列的值。
Operational maintenance( *** 作维护):数据库应用生命周期的一个阶段,包括监视和维护系统安装后的运行。
Participation constraint(参与约束,EER模型):确定超类中的每个出现是否必须作为子类的一个成员进行参与。
Participation constraint(参与约束,ER模型):确定是否所有或者仅仅是某些实体出现参与到关系中。
Physical database design(物理数据库设计):在二级存储上产生数据库实现的描述的过程,它描述基本表、文件的组织、用于获得有效访问的索引以及所有与完整性约束和安全性限制有关的说明。
Primary index(主索引):在文件的有序键字段上构建的索引。一个文件最多可以有一个主索引或一个群集索引。
Primary key(主健,ER模型):用来标识每个实体的出现的候选键。
Primary key(主健,关系模型):在一个表中用来标识记录性的候选键。
Privileges(权限):允许用户在给定基本表和视图上执行的 *** 作。
Prototyping(原型):数据库的应用程序生命周期的一个阶段,包括勾践数据库应用程序的工作模型。
Query-by-Example(QBE):一种用于关系型DBMS的非过程化的数据库语言。QBE是一个图形化的“点-按”查询数据库的方法。
RDBMS:关系型DBMS。
Record(记录):同元组(Tuple)。
Recovery control(恢复控制):当时百事,将数据库还原到正确状态的过程。
Rcursive relationship(递归关系):一种关系,挡同一个实体在不同的角色中参与多次时就会出现递归关系。例如Staff Supervises Staff。
redundant data(冗余数据):在多个表中存储的重复数据。
Referential integrity(参照完整性):如果一个表中存在外健,则外健值必须匹配主表中的某些记录的候选键的值。
Relation(关系):一个关系是一张表,它也有列和行。
Relational model(关系模型):以表(或关系)的形式表示数据的数据模型。
Relational database(关系数据库):规范化表的集合。
Relation (关系):实体间有意义的关系。
Relationship occurrence(关系出现):两个实体出现之间的可标识的联系。
Requirements collection and analysis(需求收集于分析):数据库应用程序生命周期的一个阶段,包括收集和分析数据库应用程序所要支持的关于公司的信息,并使用这些信息来标识新的数据库应用需求。
Row(行):同元组(Tuple)。
Second normal form(第二范式):一个已经是第一范式的表,同时满足所有的非主健列只能从构成主健的全部列中获得。
Secondary index(二级索引):在数据文件的非有序字段上定义的索引。
Security(安全):指防止数据库被非授权的用户访问,包括有意的和无意的。RDBMS通常提供两种类型的安全:数据安全和系统安全。
Server(服务器):为发出请求的客户提供服务的软件应用程序。参见两层/三层客户端-服务器体系结构。
Simple attribute(简单属性):只有一个组件的属性。
Single -valued attribute(单值属性):对于一个实体出现只有一个值的属性。
Specialization(特化):通过标识用来区分实体间成员的特征来花实体间成员的差别的过程。
Specialization hierarchy(特化层次结构):同类型层次结构(Type hierarchy)。
SQL(Structured Query Language,结构化查询语言):一种用于RDBMS的非过程化数据库语言。换言之,你只需要指定你需要那些信息,而不需要指定如何得到这些信息。SQL已经被国际标准化组织(ISO)标准化了,因此SQL是定义和 *** 纵RDBMS的正式和实际上的标准语言。
Strong entity(强实体):一个不依赖于其他实体的主健的存在而存在的实体。
Subclass(子类):为(超类)实体中的某些出现并保持特定属性和关系并有不同角色的实体
Superclass(超类):为实体中的所有出现保存公共属性和关系的实体。可参见特化和泛化。
Superkey(超键,ER模型):一个属性或属性集,诶译的标识了每个实体地出现。
Superkey(超键,关系模型):一个列或者列集,的标识了表中地一个记录。
System catalog(系统目录):保存关于数据库地结构、用户、应用程序等信息地数据。
System definition(系统定义):数据库应用声明周期重的一个阶段,包括定义数据库应用程序以及他的主要用户视图地范围和边界。
System security(系统安全):在系统级保护数据库地访问和使用,不如用户名和密码。
Table(表):同关系(relation)。
Ternary relationship(三元关系):三个实体间的关系。例如panch,staff和member之间的Registers关系。
Testing(测试):数据库应用生命周期的一个阶段,包括执行应用程序并有意地发现错误。
Third normal form,3NF(第三范式):一个已经是1NF和2NF的表,同时满足所有的非主健的列的值仅能从主健列得到,而不能从其他列得到。
3GL, Third-Generation Language(第三代语言):一种过程化的语言,比如COBOL、C、C++,它需要用户(通常是程序员)指定必须要干什么事情以及如何干这些事情。
Three-tier client-server architecture(三层客户端-服务器体系结构):由处理用户界面的客户和处理业务逻辑的应用程序服务器以及数据处理曾组成,而数据库服务器是用来来运行DBMS的。
Top-down approach(自顶向下方法,用于数据库设计):一种设计方法,此种方法从定义系统的主要结构开始,然后将这些结构逐步细分成更小的单元。在数据库设计中,通过标识实体和数据间的关系开始这个顶层的步骤,然后逐步添加细节,比如你希望保存的关于实体和关系的信息(成为属性)以及在实体、关系和属性上的所有约束。
Transaction(事务):由用户和应用程序执行的一个动作或一系列动作,这些动作访问或修改数据库的内容。
Transaction Processing Monitor,TPM(事务处理监视器):控制数据在客户端和服务器键转换的程序,以便为联机事务处理(OLTP)提供一个一致的环境。
Transitive dependency(传递依赖):假设A、B、C是表中的列,如果B依赖于A(A-->B),并且C依赖于B(B- ->C),则C通过B传递而依赖于A(假设A不依赖于B或C)。如果在主健上存在一个传递依赖,则此表就不是3NF的。必须从表中去掉传递依赖以达到3NF的要求。
Tuple(元组):关系中的一行记录。
Two-tier client-server architecture(两层客户端-服务器体系结构):由处理主要业务和数据处理逻辑以及与用户的接口的客户端应用程序和管理和控制数据库访问的服务器程序组成。
Type hierarchy(类型层次结构):一个是提以及它的子类和他们的超类,等等。
UML(Unified Modeling Language,统一建模语言):在20世纪80年代和90年代引入的诸多面向对象分析与设计方法重的一种较新的方法。
Update anomalies(更新异常):当用户视图更新一个包含冗余数据的标识可能引起的不一致。有三种类型的异常:插入、删除和更新。
User view(用户视图):从特定的作业(比如经理或管理者)角度或业务应用领域(比如市场、职员或库存控制)定义的数据库应用的需求。
View(视图):一个“虚拟底表”,它不实际存在数据库中,但他由 DBMS从现有底它所涉及的基本表中产生。
View integration approach(视图综合法,用于数据库设计):每个用户视图的需求,用来构建代表用户试图底独立数据模型。在数据库设计阶段,结果数据库模型被合并成一个更大的模型。
简单的方法是:
variable_1 = "HELLO"
variable_2 = "WORLD"
varlist = [variable_1, variable_2]
print "INSERT INTO table VALUES %r;" % (tuple(varlist),)
关键是把list转换成tuple
数据库管理系统常见的数据模型有层次模型、网状模型和关系模型 3种
数据模型是对现实世界数据的模拟,是一个研究工具,利用这个研究工具我们可以更好地把现实中的事物抽象为计算机可处理的数据。
层次模型:层次模型以“树结构”表示数据之间的联系
层次模型是数据库系统最早使用的一种模型,它的数据结构是一棵“有向树”。根结点在最上端,层次最高,子结点在下,逐层排列。
层次模型的特征是:
在一个层次模型中的限制条件是:
(1)有且仅有一个节点,无父节点,它为树的根;(有且仅有一个结点没有双亲,该节点就是根结点。)
(2)其他节点有且仅有一个父节点。(根以外的其他结点有且仅有一个双亲结点
)这就使得层次数据库系统只能直接处理一对多的实体关系。
(3)任何一个给定的记录值只有按照其路径查看时,才能显出它的全部意义,没有一个子女记录值能够脱离双亲记录值而独立存在。
比如:一个教师学生层次模型。该层次模型有4个记录类型,即实体。
分别是:
(1)记录型(实体)系是根结点,由编号、名称、专业、人数属性(字段)组成。它有两个子结点,分别是学院老师实体和课程实体。
(2)记录型(实体)教师是学院的子结点,它有6个属性(字段)组成。
(3)记录型(实体)课程由4个属性(字段)组成。
(4)记录型(实体)教师由6个属性(字段)组成。课程与教师是叶子结点,由学院到老师、老师到课程都是一对多的联系。
数据完整性约束
其主要四个功能:增删查改;要满足完整性约束条件;
增加(插入):满足必须有双亲节点,即如果加入教师,就必须分配到学院中;
删除:如果是字节点,不影响,直接删除字节点,如果是双亲节点,则整个字节点被删除;如果删除整个教研室则教研室的老师不存在这个体系;
查找:根据树状结构自上而下查找;
修改:更新相应的关系的信息。
其优缺点:
优点:
比较简单,容易使用;
结构清晰,现实中公司、家族等都存在类似结构;
良好的完整性支持;
查询效率高,模型层次是有向边,常记录存取路径。
缺点:
有很多不是单向关系,一对多,多对一,只能通过引进冗余数据或建非自然的数据组织如创建虚拟节点的方法来解决,易产生不一致性;
插入删除限制太多
查找字节点必须通过双亲;
树结点中任何记录的属性是不可再分的简单数据类型;
网状模型:
网状模型是以“图结构”来表示数据之间的联系。
1、条件特征
(1)允许有一个以上的节点无双亲。
(2)至少有一个节点可以有多于一个的双亲。
网状模型中每个结点表示一个记录型(实体),每个记录型可包含若干个字段(实体的属性),结点间的连线表示记录类型(实体)间的父子关系。
从定义可以看出,层次模型中子结点与双亲结点的联系是唯一的,而在网状模型中这种联系可以不唯一。因此,在网状模型中要为每个联系命名,并指出与该联系有关的双亲记录和子记录。
2、表示方法:
实体型:用记录类型描述
每个结点表述一个记录类型(实体);
属性:用字段描述,每个记录类型包含若干个字段;
联系:用结点之间的连线表示记录类型(实体)之间的一对多的父子关系;
网状模型与层次模型的区别:
网状模型:允许多个结点没有双亲结点;
允许结点有多个双亲;
允许两个结点有多种联系(复合联系);
可以更直接的去描述现实世界;
层次模型是网状模型的一个特例。
要为每个联系命名(L1、L2),并指出该联系相关的双亲记录和子女记录。
3、多对多在网状模型的表示
用网状模型表示多对多的关系
方法:将多对多直接分解成一对多的联系
4、 举例:学生选课模型
它由3个数据项组成,即学号、课程号、成绩,表示某个学生选修某一门课程及其成绩。
每个学生可以选修多门课程。显然对于学生记录中的一个值,选课记录中可以有多个值与之联系。而选课记录中的一个值,只能与学生记录中的一个值联系。学生与选课之间的联系是一对多的联系,联系名为学生-选课。同样,课程与选课之间的联系也是一对多的联系,联系名为课程-选课。
5、 *** 纵
网状模型的数据 *** 作主要包括查询、插入、删除和更新:
插入:插入尚未确定双亲结点值的子结点值;
删除:只允许删除双亲结点值。如可删除一个教研室,而该科研室所有教师的信息仍保留在数据库中。
修改:可直接表示非树状结构,而无须像层次模型那样增加冗余结点,因此修改 *** 作时只需要指定更新记录即可。
网状数据系统(DBTG)对数据加了一些限制,提供了一定的完整性约束:
码:唯一标识记录的数据项集合;
一个联系中双亲记录和子女记录是一对多的关系;
支持双亲记录和子女记录之间的某些约束性条件;
关键:实现记录联系;
常用方法:单向、双向、环向、向首链接;
6、优缺点
网状数据模型的优点如下:
(1) 能够更为直接地描述现实客观世界,可表示实体间的多种复杂联系。
(2) 具有良好的性能,存取效率较高。
网状数据模型的缺点如下:
(1) 结构比较复杂,其数据定义语言(DDL)、数据 *** 作语言(DML)复杂,用户不容易使用。而且应用环境越大,数据库的结构就变得越复杂,不利于最终用户掌握。
(2) 数据独立性差,由于实体间的联系本质上是通过存取路径表示的,因此应用程序在访问数据时要指定存取路径。
关系模型:关系模型是用“二维表”(或称为关系)来表示数据之间的联系的。
1、基本术语
(1)关系(Relation):一个关系对应着一个二维表,二维表就是关系名。
(2)元组(Tuple):在二维表中的一行,称为一个元组。
(3)属性(Attribute):在二维表中的列,称为属性。属性的个数称为关系的元或度。列的值称为属性值;
(4)(值)域(Domain):属性值的取值范围为值域。
(5)分量:每一行对应的列的属性值,即元组中的一个属性值。[2]
(6)关系模式:在二维表中的行定义,即对关系的描述称为关系模式。一般表示为(属性1,属性2,,属性n),如老师的关系模型可以表示为教师(教师号,姓名,性别,年龄,职称,所在系)。
(7)键(码):如果在一个关系中存在唯一标识一个实体的一个属性或属性集称为实体的键,即使得在该关系的任何一个关系状态中的两个元组,在该属性上的值的组合都不同。
(8)候选键(候选码):若关系中的某一属性的值能唯一标识一个元组如果在关系的一个键中不能移去任何一个属性,否则它就不是这个关系的键,则称这个被指定的候选键为该关系的候选键或者候选码。
例如下列学生表中“学号”或“图书证号”都能唯一标识一个元组,则“学号”和“图书证号”都能唯一地标识一个元组,则“学号”和“图书证号”都可作为学生关系的候选键。
而在选课表中,只有属性组“学号”和“课程号”才能唯一地标识一个元组,则候选键为(学号,课程号)。
2、关系模型的数据 *** 作与完整性约束
关系数据模型的 *** 作主要包括查询、插入、删除和修改数据;这些 *** 作必须满足关系的完整性约束条件。
关系模型中数据 *** 作的特点是集合 *** 作方式,即 *** 作对象和 *** 作结果都是集合,这种 *** 作方式也称为一次一集合的方式。
相应地,非关系数据模型的 *** 作方式是一次一记录的方式。
关系的完整性约束条件包括三大类:
实体完整性、参照完整性和用户定义的完整性。
实体完整性定义数据库中每一个基本关系的主码应满足的条件,能够保证元组的唯一性。参照完整性定义表之间的引用关系,即参照与被参照关系。用户定义完整性是用户针对具体的应用环境制定的数据规则,反映某一具体应用所涉及的数据必须满足的语义要求。
3、关系模型的优缺点
优点
(1) 关系模型与非关系模型不同,它是建立在严格的数学理论基础上的。
(2) 关系模型的概念单一,实体与实体间的联系都用关系表示,对数据的检索结果也是关系(即表),所以其数据结构简单、清晰,用户易懂易用。
(3) 关系模型的物理存储和存取路径对用户透明,从而具有更高的数据独立性、更好的安全保密性,简化了程序员的数据库开发工作。
缺点
(1) 由于存取路径对用户透明,查询效率往往不如非关系数据模型高。因此,为了提高性能,必须对用户的查询请求进行优化,这就增加了开发数据库管理系统的难度和负担。
(2) 关系数据模型不能以自然的方式表示实体集间的联系,存在语义信息不足、数据类型过少等弱点。
1首先用法不同,__new__()用于创建实例,所以该方法是在实例创建之前被调用,它是类级别的方法,是个静态方法;
而 __init__() 用于初始化实例,所以该方法是在实例对象创建后被调用,它是实例级别的方法,用于设置对象属性的一些初始值。
由此可知,__new__()在__init__() 之前被调用。如果__new__() 创建的是当前类的实例,会自动调用__init__()函数,通过return调用的__new__()的参数cls来保证是当前类实例,如果是其他类的类名,那么创建返回的是其他类实例,就不会调用当前类的__init__()函数。
2其次传入参数不同
__new__()至少有一个参数cls,代表当前类,此参数在实例化时由Python解释器自动识别;
__init__()至少有一个参数self,就是这个__new__()返回的实例,__init__()在__new__()的基础上完成一些初始化的 *** 作。
3返回值不同
__new__()必须有返回值,返回实例对象;
__init__()不需要返回值。
另外谈谈__new__()的作用,__new__()方法主要用于继承一些不可变的class,比如int, str, tuple, 提供一个自定义这些类的实例化过程的途径,一般通过重载__new__()方法来实现。代码如下
另外__new__()方法还可以用来实现单例模式,也就是使每次实例化时只返回同一个实例对象。
以上就是关于 *** 作LINQ 中 怎么 Select Tuple 类的值全部的内容,包括: *** 作LINQ 中 怎么 Select Tuple 类的值、全国计算机三级数据库考点分析之数据库系统基本原理[2]、带你深入了解数据库设计中的英文术语表等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)