数字科技馆建模探析
摘 要:通过分析数字科技馆对科普资料数字化的特殊要求,对科普资料形成层次关系,据此创建具有相同层次关系的实体类,最后由实体类驱动生成结构上与科普资料层次关系相一致的数据库,从而完成数字科技馆建模过程。这种开发方式符合面向对象的思维开发方式,并方便维护与更新。
关键词:数字科技馆 数据库 建模
中图分类号:TP39 文献标识码:A 文章编号:1007-3973(2012)007-092-03
1 数字科技馆的现状
许多国家早就开始了场馆数字化建设。美国国会图书馆从1990年开始就启动了“American Memory”计划,将图书馆内保存的珍贵的文献、手稿、照片、影音资料等进行数字化处理。美国旧金山探索馆于1993年在互联网上建立了自己的博物馆网站。加拿大也启动了一些较著名的数字计划,如“魁北克专案计划”,通过网络化环境为大众提供文化资产的服务。在欧洲方面也很重视文化历史主题科技馆的数字化工作,包括梵蒂冈博物馆、巴黎卢浮官、大英博物馆等,都在藏品数字化上面做了大量的工作。在我国,数字科技馆建设发展较快,中国数字科技馆作为国家级公益性科普服务平台,现已正式开通,将在网络科普中发挥重要作用。但对于省市地来说,数字科技馆的建设还处于探索之中。
2 科普资料数字化
数字科技馆一个关键和基础的步骤就是科普资料数字化。音像、文字、图片等科普资料组成数字科技馆的内容。数字科技馆通过计算机技术手段实现互动、虚拟场景等科普教育,是数字科技馆的表现形式,而这些表现形式离不开数字化的科普资料。
2.1 数字科技馆数字化的特殊性
据监测,中国网络科普设施为618个(统计时间截止到2010年7月),这些网络科普设施与普通的网站一样,展示的内容为多媒体信息,包括文字,图片,视频,音频等。这些信息往往也为共享信息。但对于数字科技馆来说,科普资料数字化是有着特殊的要求。数字科技馆综合运用计算机、网络、多媒体等技术,充分运用视觉、听觉等因素,实现人机互动,虚拟现实等,增强对公众的吸引力。因此,数字科技馆一个展项就可能不仅需要文本、图片,还同时需要视频、音频等多种资源。数字科技馆的功能是通过业务编程来实现,为方便业务实现数字科技馆建模必须考虑到这一数字化的特殊性。
普通科普网站科普资料数字化与数字科技馆数字化具有不同的要求。普通科普网站一般是单纯地显示文章信息,或播放视频,显示一篇文章,通过文章ID可以到文章数据表查询到其信息;播放一段视频,通过视频ID到视频数据表查找到相关的信息。但对于一个数字科技馆的展示项目,如果按照这种方式,因为项目可能包含文章、视频、音频等多种信息,就需要知道多个ID(文章ID,视频ID,音频ID等),并到多个数据表进行查询,这在业务实现上相对复杂,数据库查询效率也低。
通过将科普资料划分层次,可以适当地解决这个问题。
2.2 建立科普资料层次关系
考虑到数字科技馆对科普资料数字化的特殊要求,将科普资料按层次分类,各类的科普资料存在层次关系,各类科普资料的共同属性就可以都归到“科普资料”(Material)这个基类,这样,不管属于哪个类别的科普资料都拥有基类数据表Material中的ID(比如命名MaterialID),展示项目需要多种信息,都可以根据MaterialID到 Material数据表获取共同属性(如标题等)信息,如果需要额外的信息,再根据MaterialID到其他数据表查询(MaterialID为其他数据表的外键)。这实际上也大大简化了业务开发,理由是:这种层次关系可以对应于实体类中的基类与子类的关系,子类不仅拥有自己的属性,还拥有了父类(自然包含基类)的属性,一个子类实例化后,就可以对所有属性进行操作,而所有子类通过拥有共同的基类而成为一个整体,对应到现实世界就是科普资料。
按此思路,先对科普资料进行分类。如图1所示。为了便于说明,对分类进行了简化。
3 建模过程
使用面向对象的思维开发方式,结合数字科技馆数字化特殊要求,本文给出的建模思路是:根据科普资料的层次关系建立实体类,再由实体类驱动生成具有相对应层次关系的数据库。
3.1 建立实体类
类这种概念就从现实世界中的事物抽象出来的。首先,根据科普资料关系,建立与之相对应实体类。科普资料的层次关系,可以使用类的基类、子类的继承关系来模拟实现。下面的类定义中为了便于说明,对类的属性进行了简化,实际建立类的框架时,可能要复杂得多,但方法步骤是一样的。
以Visual Studio 2010为开发平台。新建工程项目,在项目中新建一个类文件,建立如下5个类,代码如下:
public class Material
{
public int MaterialID { get; set; }
public string Title { get; set; }
public DateTime DateAdded { get; set; }
}
public partial class Article : Material
{
public string SubTitle { get; set; }
public string Source { get; set; }
public string Keyword { get; set; }
}
public partial class Picture : Material
{
public byte[ ] Data { get; set; }
}
public class Media : Material
{
public double During { get; set; }
}
public class Audio : Media
{
public byte[ ] Data { get; set; }
}
public class Video : Media
{
public string DataUrl { get; set; }
}
各个属性的含义通过其名称自明,如SubTitle表示副标题,DateAdded表示添加日期,During表示时长,Source表示来源,Keyword表示关键词等。查看VS2010关系视图(右击项目,在弹出的菜单中点击“View Class Diagram”),形成的类关系图如图2所示。
比较图1和图2,可以看到二者存在对应关系。
实体类实现了,下一步就由实体类生成数据库。这可以通过Entity Framework自动生成。
3.2 生成数据库
在Entity Framework 4.1以前的实体框架中,通常是先建立数据库,再由数据库生成业务实体模型。这种数据库驱动的开发方法不符合面向对象的开发思维。Entity Framework 4.1以后版本可以先根据实际需要先建立实体类,然后由实体类再生成相关的数据库,这种开发方法被称为“Code First”(代码先行)。这里仅简单介绍实现方法(详细内容可以参见Entity Framework 4.1相关资料)。
首先建立一个新类,该类继承DbContext类,有6个DbSet类的实例,分别代表将要在数据库中生成的6个表:Material、Article、Picture、Media、Audio、Video表。
public partial class AppContext : DbContext
{
public DbSet
public DbSet
public DbSet
public DbSet
public DbSet
public DbSet
}
实例化AppContext对象,调用Load方法,Entity就可以自动生成数据库。打开SQL Server Management Studio,就可以发现生成了新的数据库,如图3所示。
从图3可以看到,Article表自动生成了外键MaterialID,这跟类关系中Article类继承Material类相一致。为了更清楚地看清这些表之间的关系,查看数据库关系图。关系图如图4所示。
现在,从科普资料关系图(图1)、实体类关系图(图2)以及生成数据库关系图(图4)可以形象地看出,三者都呈现相同的层次关系,科普资料层次与数据库关系相一致。
3.3 维护与更新
对科普资料数字化是一个非常大的工程,一定做好前期准备工作。一方面,要对科普资料进行科学分类,确定其层次关系,一方面要选择和确定各类科普资料需要采集哪些信息(相当于类中的属性)。目前尚无这方面统一的标准,这成为数字科技馆发展的瓶颈,增加各地数字科技馆建设的重复劳动,并且由于生成的数据库结构各不相同,影响资料共享。前期工作做好了,就可以节省日后的修改成本。但任何事物都有一个不断发展完善的过程,科普资料数字化无论先期工作准备得多么充分,以后肯定还会进行修改完善。对于Entity Framework中的Code First(代码先行),借助插件,可以通过修改实体类来驱动更新已经存在的数据库结构,最重要的是还能保留数据库的原有数据。这就为科普资料数字化过程中对其基本结构的修改提供了非常方便的条件。
例如,在上述科普资料分类中的“文章”类别中,添加一个“摘要”,只需要在Article类中添加Abstract属性:
public partial class Article : Material
{
public string SubTitle { get; set; }
public string Source { get; set; }
public string Keyword { get; set; }
public string Abstract { get; set; } //添加Abstract属性
}
然后,由代码驱动,就可以将数据库的Article表的结构修改,相应地增加Abstract字段,并且原有的Article表中的数据记录还保留。
4 结语
依据科普资料的层次关系,相应地产生相同关系的实体类,再由实体类生成跟科普资料层次关系相一致数据库,这不仅探索出一条科普资料数字化中产生与科普资料层次关系相一致的方法,也符合面向对象的思维开发方式,为科普资料数字化提供了一个建模与维护更新的新思路。
参考文献:
[1] 张锋.我国数字科技馆及其发展现状[EB/OL]..cn/qkpdf/kxlt/kxlt201207/kxlt20120757-1.pdf" style="color:red" target="_blank">原版全文
上一篇:为科学传播插一对科普信息化的翅膀
下一篇:加强科普教育,提升创新能力