首页 > 知识点讲解
       类型继承
知识路径: > 数据库技术 > 数据库标准语言—SQL > SQL-99所支持的对象关系模型 > 继承 > 
相关知识点:2个      
        如希望在数据库中对那些是学生和教师的人分别存储一些额外的信息。
        由于学生和教师是人,所以可以使用继承。在SQL-99中定义学生和教师类型如下:
        
        Student和Teacher都继承了Person的属性,即name和address。Student和Teacher被称为Person的子类型,Person是Student的超类型,同时也是Teacher的超类型。像属性一样,结构类型的方法也被它的子类型继承。不过,子类型可以通过在一个方法声明中使用overriding method(重载方法)取代原method(方法)的方式重新声明方法,以重定义该方法的作用。
        现在假定要存储关于助教的信息,这些助教既是学生又是教师,甚至可能是在不同的系里。可以利用多重继承(multiple inheritance)的方法来做。SQL-99标准不支持多重继承,然而SQL-99标准是提供多重继承的,尽管SQL-99最终版中忽略了它,但SQL标准的未来版本可能会引入它。基于SQL-99标准的草案来讨论问题。
        TeacherAssistant将继承Student和Teacher的所有属性。由于name和address属性实际上是从同一个来源即Person继承来的,因此同时从Student和Teacher中都继承这两个属性不会引起冲突。但是,一个助教既可能是某个系的学生同时又是另一个系的教师,所以department属性在Student和Teacher中分别都有定义。为了避免两次出现的department之间的冲突,我们可以使用as子句将它们重新命名,如下面的TeachingAssistant类型定义所示:
        
        注意SQL-99只支持单继承,即一个类型只能继承一种类型,使用的语法如例8.35。TeachingAssistant例子中的多重继承在SQL-99中是不支持的。SQL-99标准还需要在类型定义的尾部有一个特别的字段,取值为final或not final。其中,关键字final表示不能从给定类型创建子类型,not final表示可以创建子类型。
        SQL中的一个结构类型的值必须恰好只有一个“最明确类型(most-specific type)”,即每一个值被创建时必须关联到一个确定的类型,称为它的最明确类型。依靠继承,它也与它的最明确类型的每个超类型相关联。举例来说,假定一个实体具有类型Person,同时又具有类型Student,那么这个实体的最明确类型为Student,因为Student是Person的子类型。然而一个实体不能同时既具有类型Student又具有类型Teacher,除非这个实体具有一个如TeacherAssistant那样既是Student子类型又是Teacher的子类型的类型。
 
 相关知识点:
 
软考在线指南
优惠劵及余额
在线支付
修改密码
下载及使用
购买流程
取消订单
联系我们
关于我们
联系我们
商务合作
旗下网站群
高级资格科目
信息系统项目管理师 系统分析师
系统架构设计师 网络规划设计师
系统规划与管理师
初级资格科目
程序员 网络管理员
信息处理技术员 信息系统运行管理员
中级资格科目
系统集成项目管理工程师 网络工程师
软件设计师 信息系统监理师
信息系统管理工程师 数据库系统工程师
多媒体应用设计师 软件评测师
嵌入式系统设计师 电子商务设计师
信息安全工程师
 

本网站所有产品设计(包括造型,颜色,图案,观感,文字,产品,内容),功能及其展示形式,均已受版权或产权保护。
任何公司及个人不得以任何方式复制部分或全部,违者将依法追究责任,特此声明。
本站部分内容来自互联网或由会员上传,版权归原作者所有。如有问题,请及时联系我们。


工作时间:9:00-20:00

客服

点击这里给我发消息 点击这里给我发消息 点击这里给我发消息

商务合作

点击这里给我发消息

客服邮箱service@rkpass.cn


京B2-20210865 | 京ICP备2020040059号-5 |京公网安备 11010502032051号 | 营业执照 | Copyright ©2000-2023 All Rights Reserved 软考在线版权所有