数据模型的三个层次:一场从现实到机器的奇妙旅程
当我们使用一个数据库系统轻松地查询、存取那些井然有序的数据时很少会去想这些数据究竟是如何一步步从纷繁复杂的现实世界最终变成计算机磁盘上那些由零和一构成的物理信号的。这中间其实经历了一段漫长而奇妙的旅程跨越了好几个截然不同的境界。从我们身边活生生的人和事到计算机里冷冰冰的二进制比特这之间的距离不可谓不大。如果想要一步登天直接把现实世界塞进计算机那是绝无可能的必然会陷入混乱。聪明的人们深知欲速则不达的道理于是设计了一套循序渐进、层层递进的转化机制把这段宏大的旅程划分成了几个不同的层次让数据在每一个层次上完成一部分转化的任务逐级过渡平稳前行。这就是数据模型的三个层次。理解了这三个层次我们就如同拿到了一张旅行地图能够清晰地看到数据是如何从现实世界出发途经一个个中转站最终抵达计算机内部的。今天就让我们用最生动形象的方式踏上这场从现实到机器的奇妙旅程去逐一探访数据模型的三个层次。一、为什么要分层循序渐进的智慧在正式踏上旅程之前我们先要明白一个根本的问题那就是为什么数据模型要分成三个层次而不是一步到位这个问题的答案蕴含着一种深刻的智慧那就是循序渐进、各司其职。我们前面说过从现实世界到计算机内部跨度极大。现实世界是面向人的它丰富、生动、复杂充满了人类的语言和概念。而计算机内部是面向机器的它精确、刻板、底层只认得二进制的信号。这两者之间的差异如此巨大思维方式如此不同要想直接跨越无异于让一个只会说中文的人和一个只会说某种机器语言的对象直接对话必然鸡同鸭讲难以沟通。于是人们巧妙地在现实世界和计算机之间设立了若干个中间的层次作为过渡。每一个层次都比上一个层次更靠近计算机一些更精确、更形式化一些。数据从现实世界出发先转化到第一个层次在这里完成贴近人类理解的初步抽象再从第一个层次转化到第二个层次在这里完成贴近数据库技术的规范化组织最后从第二个层次落实到底层在这里完成贴近计算机存储的物理实现。每一层只负责一段相对较小的跨越每一层都有自己明确的任务和面向的对象层层衔接环环相扣最终就平稳地完成了从现实到机器的全部跨越。这种分层的好处显而易见。它把一个复杂的大问题分解成了几个相对简单的小问题使得每个阶段的工作都目标明确、易于把握。它还让不同的人可以专注于不同的层次业务人员关心最贴近现实的层次数据库设计人员关心中间的层次系统底层的开发者关心最靠近机器的层次分工协作各展所长。明白了分层的智慧我们就能更好地理解接下来要探访的这三个层次了。它们分别是概念模型、逻辑模型和物理模型。二、第一个层次概念模型最贴近现实的画像我们旅程的第一站是数据模型的第一个层次概念模型。这是离现实世界最近的一个层次是数据从现实世界迈出的第一步。概念模型的使命是按照人们对现实世界的理解把现实世界中需要管理的事物以及它们之间的关系抽象成一个便于人类理解和交流的模型。这里的关键在于概念模型完全是面向人的它不考虑任何计算机和数据库技术的细节只关心如何忠实而清晰地反映现实世界的本来面貌。它使用的是贴近人类自然思维的概念比如有哪些事物、这些事物有什么特征、它们之间存在什么关系等等。正因为如此概念模型通俗易懂无论是懂技术的还是不懂技术的人都能看明白、聊得来。概念模型就好比是为现实世界画的一幅素描画像。画家在作画时并不关心这幅画将来要印在什么材质上、用什么油墨印刷他只专注于一件事那就是把眼前的对象的神韵和特征准确地描绘出来。概念模型也是如此它专注于把现实世界描绘准确至于将来怎么在计算机里实现那是后面层次的事情此刻无需操心。在概念模型这个层次最著名、最常用的工具就是我们熟悉的实体联系模型也就是E-R模型。它用实体来表示现实世界中的事物用属性来描述实体的特征用联系来刻画实体之间的关系并用直观的E-R图把这一切描绘出来。比如在一个学生选课的场景中我们识别出学生和课程这两个实体分别描述它们的属性再刻画出它们之间选修这个多对多的联系画成一张E-R图。这张E-R图就是这个场景的概念模型是对这部分现实世界最贴近、最直观的一幅画像。概念模型这一层是整个数据建模的起点和基础。它的好坏直接决定了后续工作的质量。一幅描绘准确、清晰的概念模型能为后面的层次打下坚实的基础反之如果在这一层就理解错了现实、画偏了画像那么后面无论怎么努力建出来的数据库都不可能真正符合业务的需要。所以概念模型虽然不涉及技术细节却是至关重要的一环。三、第二个层次逻辑模型面向数据库的规范蓝图旅程的第二站是数据模型的第二个层次逻辑模型。这是承上启下的关键一层它一头连着面向人的概念模型一头连着面向机器的物理模型起着重要的桥梁作用。逻辑模型的使命是把第一层的概念模型按照某种具体的数据库类型所要求的规范转化成一种规整的、形式化的数据组织结构。这里的关键转变在于逻辑模型不再像概念模型那样自由随意地贴近现实而是要遵循特定数据库技术的章法和规则把数据组织成这种数据库所能接受和处理的标准形式。换句话说逻辑模型已经开始向数据库技术靠拢了它考虑的是数据在某一类数据库系统中应该怎样有条理地组织起来。逻辑模型就好比是把素描画像转化成了一张规范的工程设计蓝图。素描画像是艺术化的、贴近人眼的而工程蓝图则是标准化的、有严格规范的它用统一的制图标准和符号把对象的结构精确地表达出来以便工程人员据此施工。逻辑模型也是如此它把概念模型中那些贴近现实的描述按照数据库技术的规范翻译成了严谨而标准的数据结构蓝图。在逻辑模型这个层次历史上出现过几种不同的类型比如早期的层次模型、网状模型以及后来大放异彩、至今仍占据主流的关系模型。其中关系模型以其简洁优雅而著称它要求把数据统一组织成一张张规整的二维表的形式。以关系模型为例逻辑模型这一层要做的就是把上一层概念模型中的E-R图按照一套转换规则翻译成一张张二维表的设计。比如把学生这个实体转换成学生表把课程这个实体转换成课程表把学生和课程之间选修这个多对多联系单独转换成一张选课表。这些二维表的结构设计就构成了关系模型下的逻辑模型。逻辑模型这一层的特点是它已经是面向具体数据库类型的了但又还没有落实到某一个具体的数据库产品上更没有涉及数据在磁盘上的物理存放细节。它处在一个承上启下的中间位置把贴近现实的概念规范化成了贴近数据库的结构为最后一步落实到物理实现做好了准备。可以说逻辑模型是整个旅程中最为关键的中转站。四、第三个层次物理模型落地于机器的具体实现旅程的最后一站也是离计算机最近的一站是数据模型的第三个层次物理模型。这是数据建模的最底层是数据真正落地、变为计算机内部实际存储的一层。物理模型的使命是描述数据在计算机存储设备上究竟如何具体地物理存放。到了这一层所有面向人的、面向逻辑的考虑都已退居其次取而代之的是最实际、最底层的物理存储问题。比如数据采用什么样的存储结构来组织记录在磁盘上按什么方式存放是否建立索引来加快查找速度数据是否需要压缩存储数据在不同存储介质上如何分布等等。这些都是物理模型所要关心的内容它们直接关系到数据库实际运行的性能和效率。物理模型就好比是按照工程蓝图真正进行施工建造的环节。蓝图再完美终究是纸上的设计只有经过实实在在的施工用砖瓦水泥把它建造出来才能变成可以居住使用的真实房屋。物理模型也是如此它把逻辑模型这张规范的蓝图真正落实到计算机的存储设备上让数据具有了实实在在的物理存在形式。物理模型这一层是与具体的数据库产品和计算机硬件环境密切相关的。同样一份逻辑模型在不同的数据库产品上、在不同的硬件条件下其物理实现可能大不相同因为不同的系统有着不同的存储机制和优化手段。物理模型的设计往往追求的是高效也就是如何安排数据的物理存储才能让数据库运行得最快、占用资源最少。这一层的工作通常由数据库管理系统在很大程度上自动完成同时也允许数据库管理员通过一些手段比如建立索引、调整存储参数等来进行优化。到了物理模型这一层数据就真正地落地生根从抽象的概念和逻辑变成了计算机磁盘上实实在在的物理存储。至此数据从现实世界出发经过概念模型的初步抽象、逻辑模型的规范组织最终在物理模型这里完成了全部的转化安然抵达了计算机内部。这场从现实到机器的奇妙旅程也就圆满地画上了句号。五、三个层次的整体回望走完了这三站旅程让我们站在高处对数据模型的三个层次做一番整体的回望去体会它们之间环环相扣、层层递进的精妙关系。数据从现实世界启程首先来到概念模型这一层。在这里它被抽象成贴近人类理解的画像关心的是如何忠实地反映现实面向的是人使用的是E-R模型这样通俗易懂的工具完全不涉及技术细节。接着数据来到逻辑模型这一层。在这里它被转化成贴近数据库技术的规范蓝图关心的是如何按照特定数据库类型的章法来组织数据面向的是数据库技术使用的是关系模型这样的工具把概念画像翻译成了规整的二维表结构。最后数据来到物理模型这一层。在这里它被落实成贴近计算机的物理存储关心的是如何在存储设备上高效地存放数据面向的是具体的机器和产品最终让数据真正地落地生根。从概念模型到逻辑模型再到物理模型我们可以清晰地看到一条主线那就是离现实越来越远离机器越来越近越来越不关心人的理解越来越关心机器的实现越来越具体越来越底层。每一层都比上一层更进一步地向计算机靠拢每一层都在前一层的基础上完成了一段新的转化。三个层次首尾相接构成了一座从现实世界通往计算机内部的完整阶梯让数据得以平稳、有序地拾级而下最终抵达终点。这种由抽象到具体、由面向人到面向机器、层层过渡的设计正是数据建模领域最为核心的思想之一。它把一个看似不可逾越的鸿沟巧妙地化解为几个可以从容跨越的台阶体现出一种举重若轻、化繁为简的卓越智慧。六、结语行文至此数据模型的三个层次这场从现实到机器的奇妙旅程已经在我们面前完整地铺展开来。概念模型是最贴近现实的画像它面向人用实体和联系忠实地描绘现实世界是旅程的起点和基础。逻辑模型是面向数据库的规范蓝图它承上启下把概念画像翻译成规整的二维表结构是旅程中至关重要的中转站。物理模型是落地于机器的具体实现它面向计算机把规范的蓝图落实为磁盘上实实在在的高效存储是旅程的终点。三个层次循序渐进、各司其职、环环相扣共同完成了数据从现实世界到计算机内部的伟大跨越。理解了数据模型的这三个层次我们就拥有了一张观察数据世界的全景地图。我们不再会把数据建模看作一团乱麻而是能够清晰地分辨出此刻自己正处在哪一个层次正在完成哪一段转化应该关心哪些问题。当我们在概念层用心地分析业务、绘制E-R图时当我们在逻辑层认真地设计二维表结构时当我们在物理层精心地优化存储和索引时我们其实都是在这座宏伟阶梯的不同台阶上各尽其责地推动着数据的旅程。这种从现实到机器、由抽象到具体、层层递进的分层智慧不仅成就了数据建模的科学方法也深深地启迪着我们认识和改造复杂世界的思路。当我们真正领悟了数据模型三个层次的精妙安排也就真正读懂了数据库设计中那循序渐进、化繁为简的深邃哲理。这座架设在现实与机器之间、由三级阶梯构筑而成的智慧之桥正是人类在驾驭数据的漫漫征途上凭借非凡的洞察与匠心搭建起的一座通向数据世界深处的康庄大道。