初识数据库
Database笔记 -- 介绍篇
Why use a DBMS ?
我想这是我们首先要回答的问题:
Data independence 这意味着我们不需要知道数据是如何具体地被储存在disk上面,而只需要了解更高级别的数据模型,以便有效的访问数据。
Efficient access 这涉及到如何访问数据库中的数据,如何检索,使用一些检索,进行比较查询之类的功能。因为不适用DBMS而在一个普通的file system中这会涉及到Beschränkte Zugriffmöglichkeiten的问题,其中这些数据并没有互“相关联”,一组数据的信息与另一组的信息并没有逻辑上的联系。
Data integrity 这会涉及到一个”integrity constraints“的概念,举例来说,有一个公司要找更多的人,但是预算不一定够,于是每次要雇佣某个人,都要去检查这个约束,而如果不使用DBMS则可能会造成Interitätsverletzung的情况出现。
Security 如果使用DBMS,则更容易管理数据库和控制数据库的访问权限,因为并不是所有的用户都有权限去访问数据库各种各样的数据。
Concurrent access 这其实是可以归属于Verlust von Daten这一类的问题,而在DBMS中则可以很好的避免。
Recovery from crashes 数据库管理系统有一个复杂的恢复组件,以支持用户在所有可预见的错误情况下防止数据丢失。
Data Models
A data model is a collection of high-level constructs for describing stored data that hides low-level storage details.
或者引用书中的话:
Das Datenmodell ist somit analog zu einer Programmiersprache: Es legt die generischen Strukturen und Operatoren fest, die man zur Modellierung einer bestimmten Anwendung ausnutzen kann. Eine Programmiersprache legte die Typkonstruktoren und Sprachkonstruckte fest, mit deren Hilfe man spezifische Anwendungsprogramme realisiert.1
Data Models 其实更像是编程语言,定义了为了特定使用的结构和操作。
三个主要的data model 是:
-
Network data Model
-
Hierarchical data Model
-
Relational data Model
当然我们后面会关注的的其实只有Relational data model就是了 :)
就像名字所描绘的那样,在Relational data Model中描述了所有的“relations”, 包括“entities”and“relationships”,其中的主要概念是:relation, 对于relation我们基本上可以想像成一系列的“Tabellen”,也即“table with rows and columns”,更深入的理解为“table”与“table”之间的关系。举例来说:对于,学生听讲座,我们有学生组成的表,Vorlesung组成的表,还有“听”的表,所以才有学生组成的表“听”讲座组成的表。同时,每一个“relation”都有一个“schema”或者说“Spalten”,来描述内部储存的数据,也即各列的意义,所表示的“attributes”。
Datenabstraktion
下图展示了DBMS的三个抽象层级,分别是physical Ebene, logische Ebene(对应 conceptual Schema),以及die Schichten(对应external Schema)。
Level of Abstraction
-
Die physische Ebene: 描述了data是如何储存的,并且定义了使用的files和indexes,换句话说总结了上一层逻辑层中的“relations”是如何存储在储存设备上的。
-
Die logische Ebene: 定义了基于data model的逻辑结构,也即确定了“Datenbankschema”,也就是如何去组织数据,值得注意的是也就是在这里描述了前文中提到的“data model”。
-
Die Sichten: 这里其实已经是“external schema”的层面了,在这里描述了不同的用户如何访问“看见”这些数据,不同用户可能访问同一个数据库但是看到的数据可能是不同的,我们可以说这里是不同“views”的集合,允许数据访问被客制化,并且不会储存这些客制化的表格:)
Datenunabhängigkeit
-
Logische Datenunabhängigkeit: 当然AKA logical data independence, protection from changes in logical structure of the data.值得注意的是adding new entities 是属于logical 这一层的,因为当你新加入实体的时候,是conceptual schema这一层的概念。
-
Physische Datenunabhängigkeit: AKA physical data independence, protection from changes in physical structure of data. 举例来说,当physical schema 变化,可能会改变引索的属性、以及索引的方式,但是上层并不清楚这些变化。
Datenbankschema und Ausprägung
不妨先来看看书中的定义: “Das Datenbankschema legt die Struktur der abspeicherbaren Datenobjekte fest. Das Schema sagt also noch nichts über die individuellen Datenobjekte "
Queries in a DBMS
Questions involving the data stored in a DBMS are called queries.
A query language is used to pose queries.
Structural Query Language(SQL), which supports a rich class of queries, has contributed greatly to the success of relational DBMS.
Relational algebra and relational calculus are two formal query languages providing theoretical foundation for relational DBMS.
Summary
上面的内容从比较宏观的视角讨论了DBMS中的一些主题,像是Datenmodel啊,SQL语言的基础概念啊,relational algebra啊,接下来我们要讨论的就是非常著名的ER-Model了呢。
-
[Kemper, Alfons and Eickler, André, Datenbanksysteme: Eine Einführung, 7.,ISBN:9783486590180] ↩︎