数据库系统的三级模式结构
模式(逻辑模式)
数据库全体数据的逻辑结构和特征的描述
所有用户的公共数据视图
中间层逻辑级
外模式(子模式/用户模式)
数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述
数据库用户的数据视图
与某一应用有关的数据的逻辑表示
模式的子集
内模式(存储模式)
一个数据库只有一个内模式
数据物理结构和存储方式的描述
数据在数据库内部的组织方式
数据库的二级映像
外模式/模式映像
定义外模式与模式之间的对应关系
当模式改变时,由数据库管理员对各个外模式/模式的映像作相应改变,可以使外模式保持不变。
应用程序仅依据外模式编写,保证数据的逻辑独立性
模式/内模式
定义数据全局逻辑结构与存储结构之间的对应关系
当存储结构改变时,由数据库管理员对各个模式/内模式的映像作相应改变,可以使模式保持不变,从而应用程序也不必改变,保证物理独立性。
直接看这些晦涩难懂的概念可能无法完全准确理解其意义,那么让我们来举一个贴近生活的例子。
明天 疯狂星期四(V ME 50,继续看接下来的重磅知识点)
你想吃汉堡,要那种:两片烤的香喷喷的面包皮,中间夹着令人疯狂分泌唾液的肉和菜,简直就是人间仙品,但具体口味你还没想好。
于是你来到一家汉堡店,看着菜单栏上的香辣鸡腿堡,新奥尔良烤鸡腿堡,双层嫩牛堡,藤椒风味鸡排堡……
画面感有了,肚子也饿了,那让我们回到三层结构这个知识(芝士)点上。
汉堡,所有人都知道它大致的样子,就像上面描述的一样(两块面包皮夹着肉和菜)。这就是汉堡的概念,我们可以把它看做数据库的逻辑模式即模式,也就是三层模式结构的中间层。
那么菜单上的各种口味的汉堡分身,就可以视为外模式(用户模式)。鸡肉,牛肉还是素食,全都由用户直接接触和选择。你可以看到,且只能看到你选择的这款汉堡,在两片面包皮里加了什么,以及它的价格等。但你不可能知道它的制作方法,面包皮里有多少面粉,调味酱里到底加了什么。
而内模式就可以是汉堡的制作和存储秘方,像美味蟹黄堡秘方一样,痞老板不知道,比奇堡居民不知道,同样你也不知道。但蟹黄堡秘方决定了蟹黄堡的制作流程,配料,比例等等,就像数据需要规定排序方式,存储记录结构等等。
那么外模式/模式映像就像是餐厅的菜单与顾客点的汉堡之间的关系。餐厅的菜单(模式)提供了所有可供选择的汉堡种类(外模式),顾客根据自己的喜好(用户视图)选择特定的汉堡。即使餐厅内部改变了某些汉堡的配方(模式的变更),只要这些变更不影响顾客点的汉堡(外模式),顾客就不需要知道这些变化(可能它为了提高盈利悄悄减少了配方的沙拉酱含量,从原来的两圈变成一圈,但店家才不会告诉你嘞)
那么,模式与内模式之间的映像就像是餐厅的后厨与菜单之间的关系。餐厅的菜单(模式)定义了汉堡的组成,而后厨(内模式)负责具体的制作和存储。如果后厨改变了烹饪方法(内模式的变更),比如今天的鸡排少炸了10秒,只要这些变更不影响菜单上汉堡的描述(概念模式),顾客也不需要知道这些变化,吃就完了!
个人理解,如有不合理的地方请指出
谢谢(^0^)/