知识卡片

面向对象数据库把智能行为封装进对象本身

专业/工作 · 1293.h

内容

关系数据库把姓名这类信息存成表里的一个属性,一旦要支持”姓氏”“全名”“婚前姓氏”等多种格式的查询,就得把姓名拆成多个固定属性、还要应对不同文化姓名结构不一致的麻烦;面向对象数据库则可以把姓名做成一个”智能对象”,能自己按不同格式输出——这些格式差异被完整封装在对象内部,外部调用者不必关心。更进一步,面向对象数据库里的对象不只是数据,还能带有方法:员工对象自己就能报告或更新工作经历,不需要另外编写复杂的检索函数去拼装这些信息。发散:这体现的是数据库设计范型与应用程序设计范型统一带来的好处——如果应用软件是用命令式语言写的、数据库却是关系式的,两种范型之间天然存在概念上的错位(这也是不少软件缺陷的根源),而面向对象数据库让”数据库里的对象”和”程序里的对象”变成同一种东西,整个系统从数据存储到业务逻辑都在用同一套语言”思考”,减少了两种世界观之间反复翻译的摩擦成本。

参考来源

《计算机科学概论》第9章《数据库系统》