数据库物理模型

2024-10-03

数据库物理模型(共5篇)

数据库物理模型 篇1

摘要:依据数据模型, 一步一步地创建创新基金管理信息系统的数据库, 并详解方法和要点。

关键词:SQL Server,数据模型,数据库实现,数据库,数据表,数据结构,身份验证模式

主要任务是将数据模型变为实际的数据库, 即数据库实现, 包括创建数据库和数据表。

选择SQL Server作为数据库支持平台。SQL Server可以有两种方式创建数据库和数据表:

(1) 使用Transact-SQL的CREATE DATABASE或CRE-ATE TABLE命令编写代码, 然后在查询分析器中运行代码;

(2) 使用企业管理器中的数据库设计器或表设计器。采用后一种方式来创建项目实例的数据库和数据表。

1 创建数据库

首先, 为数据库确定一个名称Finnance。

然后, 按以下步骤创建数据库:

(1) 打开企业管理器, 展开服务器组, 然后展开服务器。

(2) 选择“数据库”->“新建数据库”, 打开“数据库属性”对话框。

(3) 在“数据库属性”对话框中, 键入新数据库的名称:Finnance, 如图1所示。

(4) 在“数据库属性”对话框中, 单击“数据文件”选项卡, 在“位置”处键入“D:FinnanceDataFinnance_Data.MDF”, 如图2所示。

(5) 单击“事务日志”选项卡, 在“位置”处键入“D::FinnanceDataFinnance_Log.LDF”, 如图3所示。

(6) 单击“确定”。

数据库Finnance被创建。

2 创建数据表

首先为数据表的列定义数据类型, 然后创建数据表。

2.1 数据结构设计

前文已经为数据表定义了列, 现在为列定义数据类型。

由于报销条件需要持久保存, 再增加一个表T_CtrlCondition, 用于保存报销条件信息。这样, 数据库包含4个数据表。

数据表的列的数据类型采用关系数据库SQL Server的数据类型。

2.1.1 表T_Project

表T_Project的数据结构如表1所示。

列“报销部门”的值来源于用户信息表T_User中“部门”列, 但不包括重复的值;列“报销人”的值来源于用户信息表T_User中“账户”列。

2.1.2 表T_Invoice

表T_Invoice的数据结构如表2所示。

列“报销内容大类”包含以下静态值:

(1) 耗材费

(2) 软件费

(3) 资料费

(4) 培训费

(5) 交通费

(6) 通讯费

(7) 劳务费

(8) 差旅费

(9) 会议费

(10) 咨询费

(11) 招待费

(12) 设备费

(13) 印刷费

(14) 测试费

(15) 外协费

(16) 开发费

(17) 其他

列“报销内容小类”包含以下静态值:

(1) (交通费) 汽油费

(2) (交通费) 出租费

(3) (交通费) 过路费

(4) (交通费) 过桥费

(5) (交通费) 其他

(6) (差旅费) 机票

(7) (差旅费) 火车票

(8) (差旅费) 长途汽车票

(9) (差旅费) 轮船票

(10) (差旅费) 会务费

(11) (差旅费) 住宿费

(12) (差旅费) 其他

列“付款方式”包含以下静态值:

(1) 现金

(2) 转账

列“是否附合同”包含以下静态值:

(1) 有

(2) 无

列“是否附通知”包含以下静态值:

(1) 有

(2) 无

列“状态”包含以下静态值:

(1) 1 (待送财务室)

(2) 3 (待审核报销)

(3) 5 (已报销)

2.1.3 表T_User

表T_User的数据结构如表3所示。

列“权限”包含以下静态值:

(1) 1 (高)

(2) 3 (中)

(3) 5 (低)

列“部门”包含以下静态值:

(1) 公司

(2) 财务室

(3) 总工办

(4) 产品设计所

(5) 工装设计科

(6) 材料研究所

(7) 动力科

(8) 质检科

2.1.4 表T_CtrlCondition

表T_CtrlCondition只需要两列:条件和控制值, 字段名称分别为f1和f2。表T_CtrlCondition的数据结构如表4所示。

2.2 创建数据表

定义数据结构以后, 现在就可以创建数据表。

(1) 展开数据库节点。

(2) 选择“Finnance”->“新建”->“表”, 打开表设计器。

(3) 在表设计器中, 按表1设计T_Project的数据结构, 添加列以及表的其他详细信息, 如图4所示。

(4) 关闭表设计器, 提示“您想要保存对表TABLE1的更改吗?”, 如图5所示。

(5) 回答“是”, 出现“选择名称”对话框。

(6) 在“输入表名”文本框中输入表的名称:T_Project, 如图6所示。

(7) 单击“确定”。

数据表T_Project被创建。

重复以上步骤3次, 分别按表2、3、4创建数据表T_In-voice、T_User和T_CtrlCondition。

3 设置身份验证模式

SQL Server服务器有两种身份验证模式:

(1) SQL Server和Windows

(2) 仅Windows

这里为SQL Server服务器选择SQL Server和Windows模式。

通过企业管理器设置身份验证模式, 步骤是:

(1) 打开SQL Server企业管理器。

(2) 展开一个服务器组。

(3) 右击一个服务器, 再单击“属性”。

(4) 在“安全性”选项卡的“身份验证”下, 单击“SQL Server和Windows”, 如图7所示。

(5) 在“审核级别”中选择在SQL Server错误日志中记录的用户访问SQL Server的级别:

1) “无”表示不执行审核。

2) “成功”表示只审核成功的登录尝试。

3) “失败”表示只审核失败的登录尝试。

4) “全部”表示审核成功的和失败的登录尝试。

(6) 单击“确定”。

为了使设置生效, 必须重新启动SQL Server服务器。

4 注册系统管理员

为了在后续系统编码过程中便于调试, 同时也为了让系统交付后用户能够启动系统, 在用户信息表T_User中必须注册一个用户。这个用户应该是系统管理员, 权限最高。注册信息如下:

(1) 账户:admin

(2) 姓名:管理员

(3) 权限:1

(4) 部门:财务室

(5) 密码:111

用企业管理器注册系统管理员:

(1) 在SQL Server企业管理器中, 右击T_User表。

(2) 选择“打开表”->“返回所有行”, 显示打开表窗口。

(3) 在窗格的空行中, 输入以上系统管理员信息。

(4) 关闭表窗口。

5 结语

数据库实现就是依据数据模型创建数据库和数据表。SQL Server创建数据库和数据表的方式有两种:使用Transact-SQL的CREATE DATABASE或CREATE TABLE命令编写代码, 然后在查询分析器中运行代码;使用企业管理器中的数据库设计器或表设计器。

参考文献

[1]范晓平.ASP.NET 2.0项目开发第一步UML+VB+C#+Crystal Reports.清华大学出版社, 2008.

数据库物理模型 篇2

为了形象、简捷的处理物理问题,人们经常把复杂的实际情况转化成一定的容易接受的简单的物理情境,从而形成一定的经验性的规律,即建立物理模型。高中物理的学习如果能渗透模型的话,大家就会很快成为持有利剑而心有剑法的剑客,时间稍长,谙熟于心,你就能手持木剑而能独步天下。现把高中物理常用物理模型小结如下,供大家参考:

1、质点模型:集中于典型运动规律、力能角度分析问题。

2、轻杆、轻绳、轻弹簧模型:三件的异同点,直线与圆周运动中的动力学问题和功能问题。

3、挂件模型:平衡问题,死结与活结问题。采用正交分解法,图解法,三角形法则。

4、追及模型:运动规律,追及规律,临界问题。采用数学法(函数极值法.图像法等)和物理方法等。

5、运动关联模型:一物体运动的同时性,独立性,等效性;多物体参与的独立性和相互联系。

6、皮带模型:摩擦力,牛顿运动定律,功能及摩擦生热等问题。

7、平抛模型:运动的合成与分解,牛顿运动定律,动能定理(包括带电粒子在电场中的类平抛运动)。

8、全过程模型:匀变速运动(a恒定的匀变速往复运动)的整体性,保守力与耗散力,动量守恒定律,动能定理,全过程整体法。

9、人船模型:动量守恒定律,能量守恒定律。

10、子弹打木块模型:力学中的牛顿运动定律,动量守恒定律,能量守恒定律,摩擦生热,临界问题。

11、单摆模型:简谐运动,圆周运动中的力和能问题,采用对称法,图象法。

12、限流与分压器模型:电路设计,串并联电路规律及闭合电路的欧姆定律,电能,电功率等问题。

13、电路的动态变化模型:闭合电路的欧姆定律。

14、等效场模型:重力场与电场都是恒力,将两个力合成,并称合力为“等效重力”。力和运动,能量问题。

15、磁流发电机模型:平衡与偏转,力和能问题。

16、回旋加速器模型:加速模型(力能规律),磁偏转模型(圆周运动)。

18、对称模型:简谐运动(波动),电场,磁场,光学问题中的对称性,多解性。

18、电磁场中的单杆模型:棒与电阻,棒与电容,棒与弹簧组合。.平面导轨,竖直导轨等,一般从力电角度,电学角度,力能角度解决问题。

19、电磁场中的“双电源”模型:顺接与反接。一般采用力学中的牛顿运动定律,动量守恒定律,能量守恒定律,闭合电路的欧姆定律,电磁感应定律。

谈物理模型方法 篇3

关键词:物理学,物理模型方法,桥梁作用

从物理学发展史来看, 物理学概念、定律的创建过程都和物理模型密不可分。所以我们可以认为物理学的发展史就是一部物理模型方法史。

下面对物理模型方法做一粗浅介绍。

1 何谓物理模型方法

在现实生活中实际的物理现象一般是比较复杂的。如正在平直公路上行驶的汽车, 车身在平动, 车轮在转动, 发动机的一些部件也在运动。我们如何描述汽车的运动?如果在汽车的一系列复杂运动中, 我们要研究的是汽车运动的快慢, 那么只需要考虑车身的平动, 忽略其他运动形式, 于是汽车的实际运动便被想象地简化为一个有质量的点在一条直线上的运动。

在一定的情况与条件下, 考虑实际物理现象主要的、本质的特征, 忽略次要的、非本质的因素, 这种处理问题的方法叫做物理抽象, 被抽象出来的物理现象虽不再是原来的、实际的物理现象, 但它能反映出原来实际现象发展变化的基本规律, 称为原来实际现象的物理模型。运用建立物理模型研究物理问题的方法, 就是物理模型方法。

2 物理模型的种类

根据物理模型在实际物理现象、规律中所扮演角色或所起作用的不同, 它可分为:

条件模型:如自由落体运动规律就是在建立在“忽略空气阻力, 认为重力恒定”的条件模型之后才得出来的。

对象模型:如静力学中“刚体”“质点”, 电学中“点电核”“电场线”。

状态模型:如热平衡状态就是热学的一种状态模型。

过程模型:如完全弹性碰撞过程就是一种碰撞过程模型。

实验模型:如热学中等温、等容、等压实验, 就是一种实验模型。应该指出的是, 上述五类模型, 井非孤立分开毫无联系, 恰恰相反, 它们常常是互相牵制的、内在的统一于所研究的问题中。例如, 伽利略运用理想斜面实验模型揭示了惯性定律的本质。在这个实验中, “光滑的、无摩擦力的斜面与无限大平面”就是条件模型:“光滑的小球”就是对象模型;“小球在无限大平面上的速度不变”就是状态模型;“小球沿无限大平面永远以恒速运动”就是过程模型。

3 物理模型的形成及其特点

模型方法在物理研究中能起到从事实过渡到理论的桥梁作用。那么, 如何构造模型?物理模型有哪些特点?下面我们以原子结构的探索为例进行说明。

人们从观察得知, 自然界充满着千变万化的物质, 大的物质由小的物质构成, 小的又由更小的构成……构成万物的量小基本单元是什么?古希腊哲学家德谟克里特认为物质由一些不可再分的坚硬微粒———原子构成。这就是古代的无事实根据的、纯思考性质的原子模型。到了19世纪初, 英国化学家道尔顿将这一模型运用到研究化合物, 发现元素总是按确定的重量比互相化合。为了解释这一结果, 道尔顿提出了他的原于模型, 认为一切物质都是由不可分的原子组成, 同种元素的原子重量相同, 不同元素的原子重量不等, 氢元素的原子是最小的物质点。1879年, 英国人克鲁克斯发现了阴极射线。1897年, 英国物理学家汤姆逊证明了这种射线是由带一个单位负电荷的微粒组成, 命名这种微粒为电子;其质量只有氢原子质量的1/1836, 可见原子不是最小微粒, 而且是有结构的。汤姆逊用不同物质作阴极都能产生阴极射线, 这说明任何元素的原子中都有电子存在。道尔顿模型受到挑战, 1903年, 涵姆逊提出了原子的蛋糕结构模型, 认为原子是一个实心球, 原子的质量和正电荷均匀分布在球内, 电子像蛋糕中的果粒分散在原子中, 原子中正负电荷的电量相等, 整个原子不显电性。为了验证汤姆逊模型, 1911年, 汤姆逊的学生卢瑟福做了a粒子散射实验, 面对实验事实, 汤姆逊模型不能解释。于是, 卢瑟福提出了原子有核结构模型:在原子的中心有一个很小的核, 叫原子核, 原子的全部正电荷和几乎全部质量都集中在原子核里, 带负电的电子在核外空间里绕着核旋转。但卢瑟福模型不能解释原于的稳定性与氢原子的线状光谱。为此, 1913年, 卢瑟福的同事, 丹麦物理学家玻尔提出了量子化原子模型:电子只能在某些可能的轨道上运动, 电子在这些轨道上运动时不辐射能量, 处于稳定状态, 只有电子从一条轨道跃迁到另一条轨道上时才一份一份的辐射能量。玻尔模型虽成功地解释了原子的稳定性及氢原子线状光谱, 但对于含有多个电子的原子来说, 理论计算与实验结果并不完全相符。现代物理实验已经证明, 电子的运动没有固定的轨道, 服从德布洛意———薛定谔波原子模型或电子云模型……。

综上可知, 一个好的物理模型必须是建立在一定的实验事实和已有理论基础上的高度抽象与概括, 包括某些真实内容, 具有一定的客观性, 能够解释已知的现象。如果不是这样, 那么模型本身就成了空中楼阁, 还算什么模型。由于人们对所要认识的现象的原型并无确切了解, 所以一个好的物理模型只能是一种大胆的猜测, 能够预言未知的现象。否则, 模型就成了已知事实的堆积, 从而也就失去了模型应有的从事实过渡到理论的桥梁作用。由于人们所要认识现象的原型的深邃性、复杂性, 所以一个好的物理模型提出后不可能一下于就与原型符合, 还必须接受科学实践的检验而不断地修正和完善。量后, 要提出一个好的物理模型, 还应该对具体研究的问题做出系统的历史的考查。只有站在前人的肩膀上, 才能比前人看得更远。

4 物理模型方法的作用

4.1 推动物理学发展

创建物理学离不开建立物理模型的例子在物理学史上屡见不鲜, 比比皆是。

在力学中, 牛顿提出万有引力理论便是一个著名的例证。牛顿一方面运用了开普勒的行星运动的太阳系模型;另一方面借助数学方法证明了“一个物体吸引它外边的物体时, 它们的质量就好像都集中在它们各自的中心一样”, 太阳系中的所有星球可视为有质量而无形状与大小的质点, 据此, 建立了质点模型, 把宇宙万物视为质点。从而首先发现了万有引力定律。

4.2 促进物理教学

如前所述, 物理模型的提出与发展揭示了物理概念的进化与形成, 所以模型方法也就成为理解物理概念的基本思路。例如, 物理学中的专用或通用名词“物质”或“物体”是没有形状和大小的、是各种具体的物质或物体的抽象, 可视为物理学的语言模型。又如, 力学中单摆的振动是在建立了“忽略摩擦与空气阻力, 不计摆球的大小、摆线的质量与伸缩, 摆的偏角不超过5°”这样的模型后才可视为简谐振动。热学中的热平衡方程是建立在与外界无任何能量交换的孤立系统或封闭系统模型基础上的。电学中的库仑定律只适用于真空中的点电荷模型。几何光学反射、折射定律则是因为建立了“光线”、“点光源”、“平滑的反射面、折射面”这些光学模型后方才得出的等等。

4.2.1 推证物理规律

在物理教学过程中, 运用模型方法, 推证物理规律, 也不乏其例。牛顿的高山上的平抛运动实验模型, 从理论上阐述了人造卫星的原理。爱因斯坦的理想闪电实验模型, 从理论上得出了同时性的相对性概念。中学物理中理想气体状态方程的推导, 实际上是运用理想实验模型完成的。

4.2.2 解答物理习题

广义地说, 物理学所研究的问题都是物理现象在特定过程与条件下的科学抽象, 即物理学所研究的都是物理模型。解答物理习题亦可以说是应用模型方法的过程, 其基本思路大体如下:分析题意, 确定对象模型;察看对象所处环境, 确定条件模型;根据对象的变化情况, 确定状态与过程模型;将对象、条件、状态、过程模型转换为相应的数学模型, 推算出结果。

5 物理模型方法的局限性

由于物理模型是建立在一定事实与已有理论基础上的一种大胆的猜测, 所以模型方法必有局限性。翻开物理学史, 无论是力、热、光、电的研究, 还是原子、粒子结构的探索, 一个模型接着一个模型, 总是后者否定前者, 层出不穷, 就充分说明了模型方法的局限性。

高中物理模型教学现状研究 篇4

【摘要】本文针对高中学生在学习物理的过程中关于物理模型学习的实际情况,从学生的学习兴趣、学习方法和教师的教法等方面进行调查。期望以此了解学生对于物理模型的学习习惯、方法,以及学生对哪些模型的特点、规律掌握比较好,对哪些了解的很模糊。从而有针对性的总结相关物理模型的教法与学法,期望有助于提高学生学习物理的效果及学习成绩。

【关键词】高中学生;物理学习;物理模型

中学生在学习物理过程中,有时虽然在物理科目上花了不少时间,但进步不明显,甚至没有进步。从物理教师的角度来讲,虽然付出的很多,但学生成绩还是很难有较大突破。期望据此总结出有助于学生学、老师教的关于物理模型的教学方法。

一、调查对象与研究方法

1.调查对象。咸阳市实验中学高一年级160名学生,高二年级160名理科生。其中回收有效调查问卷高一年级148份,高二年级158份。2.研究方法。采用不记名问卷调查法,并对有效问卷的调查结果进行了完全统计。

二、调查结果

调查结果显示,对物理学习感兴趣的为75.5%。认为物理难学的学生合计83.6%,比“对物理学习感兴趣”的比例还要高出8.1%。也就是说尽管对物理学习感兴趣的学生,仍然会觉得物理难学。在听课过程中,能想到老师所讲题目属于哪个物理模型的学生比例为33.3%;在所记笔记中有意识记录题目所属模型及普遍方法的学习比例为36.9%;某一章节的学习之后一定会去做一个本章的主要物理模型小节的学生比例更是少到13.7%。从会做一道题,到会做一类题,认为物理模型的学习起到很大作用和有些作用的学生比例合计为93.5%;认为“物理模型”教学方法理念较好的学生比例合计为85.9%。但在“理念较好”的学生中半数以上的学生认为“实施较难”。在14—19题中列出了24个物理模型中,学生选出了认为自己对其相关特点及规律知道的很清楚的模型。其中被半数以上的学生选择的物理模型,高

一、高二分别统计如下:高一:质点(71.2%)、自由落体运动(65.6%)、平抛运动(65.5%)。高二:质点(69.0%)、自由落体运动(74.7%)、平抛运动(74.1%)、点电荷(58.2%)、远距离输电(52.5%)。最后,给出了一个具体题目,让学生选出解决这个题目所涉及的物理模型。统计结果显示,选择正确的学生比例仅为33.0%。

三、物理模型教学的现状

1.学生对物理科目的态度。多数学生虽然喜欢物理科目,但是却觉得物理难学。当学生在物理科目花费了较多时间,但发现收效甚微甚至是没有效果的时候,学生对物理的兴趣得不到鼓励和强化,则渐渐会产生消极情绪,进而会影响学生学习物理科目的积极性。2.学生对物理模型的理解。物理模型的建立是为了忽略次要因素、突出问题本质,从而使实际问题便于解决,这才是物理模型意义的真谛。而学生认为物理模型只在解题方面有一定的作用,对物理模型意义的理解存在不小的偏差。3.学生在物理模型方面的学习习惯学生运用物理模型意识淡薄。在学生听课、课后复习及总结、审题几个方面中都可以看出学生没有主动了解与学习物理模型的意识,更没有运用物理模型解决问题的习惯。取而代之的是受力分析、解题过程、公式等常规思路。4.学生对物理模型教学方法的态度。绝大部分学生都认为物理模型这种方法无论对物理的学习还是解题都起到了积极作用,但却对物理模型的教学方法不抱太大的希望。5.在高中阶段涉及的物理模型中学生。的掌握情况。在所列24个物理模型中,两个年级的学生普遍认为掌握较好的合计仅有5个物理模型。而学生自己认为掌握较好的这5个模型都是在解决问题时经常会用到的。例如,在高中阶段研究物体的运动时,大多数情况下都是将物体的大小形状忽略看作质点。在多次反复运用模型的过程中,学生对相关模型的本质及特点的理解就会更清晰、透彻。6.现阶段学生建立物理模型解决实际问题能力学生通过建立物理模型来解决实际问题的能力薄弱,对物理模型方面的知识没有一定的积累。遇到具体问题不善常于发散思维,难以联想到类似的模型并将知识加以迁移应用。

四、关于物理模型教学的建议 如何提高学生建立物理模型、及利用物理模型解决问题的能力。现针对日常教学,提出以下几点建议:1.调动学生积极性,提升物理学习的兴趣。兴趣是做好一件事的根本动力,做自己感兴趣的事,一般会达到事半功倍的效果。所以我们可以通过提升学生学习物理的兴趣,来达到提升学习效果的目的。我们在日常教学中可以通过运用物理模型的教学方法,达到简化问题、增强物理课堂趣味性的作用,进而达到提升学生学习兴趣的目的。2.教师需增强物理模型教学意识。实际教学中,教师受到的束缚太多,例如要保证学生的升学率、教学任务重而课时量有限等压力,使得教师不敢大胆去尝试新教学方法,以至于使得物理模型教学没有落到实处。教学过程中最多只是对个别重要的物理模型加以讲解说明,没有系统的对物理模型进行介绍指导,从而制约了物理模型教学方法的推广。3.将物理模型教学贯穿于日常教学中,增强学生运用物理。模型的意识,提高学生建模能力把物理模型融入常规物理教学中,在适当的时候提出物理模型的知识,并对其进行归纳总结,使学生对物理知识和物理模型的掌握在日常教学中得以巩固。分析、讲解习题或解决实际物理问题时,既运用传统的教学方法加以分析,同时也要注意对物理模型知识的运用。再配合适当的练习,从而使学生在遇到实际问题时建立物理模型解决的能力得到强化。每章节学习完成后,教师更应督促学生对本章节涉及的物理模型加以归类总结,使知识得到升华。

本课题小组将对高中阶段所涉及的物理模型,尤其是调查中显示出学生掌握情况较差的物理模型,进行具体教法与学法的探讨并总结成文。期望能达到减轻教师教学负担、提高学生学习物理的效果的目的。

作者:刘颖 单位:陕西省咸阳市实验中学

参考文献:

从类模型到数据模型 篇5

在为系统建立数据库之前, 首先要对数据库进行总体设计, 设计过程产生的结果就是数据模型。

数据模型主要包含数据表以及数据表之间的关系。用面向对象方法建立数据模型, 依据是类模型。从类模型建立数据模型, 主要工作是:依次将类映射到数据表、将类属性映射到数据表的列、将类之间的关联映射到关系数据库, 最后将得到的数据表、表之间的关系画在一张图上, 数据模型便大功告成。

1 设计方法

数据模型从层次上可以分为3类:概念数据模型、逻辑数据模型和物理数据模型。

概念数据模型是面向用户、面向现实世界的数据模型, 与数据库管理系统 (DBMS) 无关;逻辑数据模型反映了DBMS的存储结构, 是用户从数据库看到的数据模型;物理数据模型是特定的DBMS, 它定义实际中的数据如何存储在持久存储设备 (例如磁盘) 上。

项目实例要设计的数据模型是逻辑数据模型。本讲座后面提到的数据模型, 除特别说明外, 均指逻辑数据模型。

用传统方法设计数据模型, 依据是ER图。用面向对象方法设计数据模型, 除依据UML类图外, 其他与用传统方法设计数据模型差别不大。

1.1 UML中的实体与E-R图中的实体

目前, 传统的数据库设计是采用实体-关系E-R (EntutyRelationship) 图。E-R图中的实体表示系统中持久的元素。UML中的实体除表示系统中持久的元素外, 还具有行为特性———操作。因此, 可以认为, UML中的实体是E-R图中的实体所提供的内容的超集。

1.2 UML类图与E-R图

由上述1可知, UML类模型的描述功能更强, 它在本质上是扩展的实体-关系 (E-R) 模型。

1.3 建模依据

由上述1.2可知, 将UML类图转换为数据模型是很方便的, 可以用类图为数据库中持久存在的数据结构建立模型。

1.4 选择数据库系统

持久性数据库层可以是关系型的数据库, 也可以是对象关系型的数据库或者对象数据库。从关系型数据库技术到对象数据库技术是一个演化过程, 对象关系数据库技术是这个演化过程的中间阶段。尽管未来将属于对象数据库, 但关系型数据库在目前的数据库软件市场中仍占主流。因此, 仍为项目实例选择关系型数据库作为持久性数据库层的数据库管理系统。

对于关系数据库来说, 可以用类图描述数据库模式 (Database Schema) , 用类描述数据表, 用类的操作描述触发器和存储过程。将UML类图用于数据库建模可以看作是类图具体应用的一个例子。

2 关系数据库术语

前面选择关系型数据库为项目实例建立数据模型。在建模过程中要涉及关系数据库的几个术语, 本节对这几个术语进行介绍。

2.1 主键和外键

主键和外键涉及关系表。关系表是由它的固定列集定义的, 列具有系统内建的或用户定义的数据类型。表可以有任意多行, 但没有重复的行。特定行的值可以是NULL, NULL意味着“值目前不知道”或“值不明确”, NULL值不等同于零或空格。

由于关系数据模型要求“没有重复的行”, 所以每个表都有一个主键 (Primary Key) 。键是列值可以用来唯一地标识表中一行的列的最小集合 (也可能只有一列) 。一个表可以有多个这样的键, 可以任意选择其中一个作为用户最重要的主键, 其他的键则称为备用键 (Alternate Keys) 。

2.2 参照完整性

在关系数据库中, 表之间的关系不是固定的行到行的连接, 而是当用户请求系统发现关系时, 才去发现行到行的连接。这种发现是通过比较一个表的主键值与另一个表的外键值来实现的。外键 (Foreign Key) 被定义为表中列的集合, 其值或者为NULL, 或者匹配同一个表或另一个表中的主键值。主、外键的一致性被称作参照完整性。参照完整性中的主键和外键必须是同一种数据类型, 但可以有不同的名字。

2.3 范式

在关系数据库中, 表与表之间的关系要满足一定的条件, 不同的范式 (Normal Forms) 指的是满足不同级别条件的关系。范式被分为6种:

(1) 第一范式

(2) 第二范式

(3) 第三范式

(4) BC范式 (Boyce-Codd范式)

(5) 第四范式

(6) 第五范式

第一范式是满足最基本条件的关系, 而这个最基本条件是指表的每个列都是不可再分的数据项。对于第一范式, 如果它又继续满足一定的条件, 就称它属于第二范式。以此类推, 可以得到其他规范程度更高的形式。高一级的范式是低一级的范式的子集, 低一级的范式则包含了高一级的范式。

3 类之间多重性向关系数据库转换的规则

数据模型是通过将关联映射到关系数据库来建立的。

在将关联映射到关系数据库之前, 首先介绍一下由关联的多重性向关系数据库转换的一些规则。

类之间的多重性可以分为:一对一、一对多和多对多3种情况。对3种多重性的处理已经有一些一般的转换规则, 如表1所示。

4 设计数据模型

如前所述, 数据模型是通过将关联映射到关系数据库来建立的。现在按照前几节介绍的方法或原则, 再依据第二讲设计的结果, 为系统设计数据模型。

4.1 将类映射为关系数据表

将类映射为关系数据表, 必须遵循表的第一范式, 列必须是不可再分的数据项。

从类到表的映射可以是一对一, 即一个类映射为一个表。但是, 一对一映射可能会导致一些问题, 如表太多、连接太多、表丢失以及对泛化关系处理不合理等, 在设计中要灵活调整。

第二讲1节2小节为本项目实例已经定义了3个类。这里将3个类分别映射为一个关系数据表。表的名称以T_打头, 其后紧跟相应的类的名称, 如表2所示。

4.2 将类的属性映射为表的列

第二讲4节已经为3个类分别定义了属性, 现在将类的属性映射为表的列。

4.2.1 项目信息表T_Project

项目信息表T_Project用于保存项目的信息。T_Project除了包含由Project类属性映射的列:项目大类、项目小类、项目经费、已报销金额、报销部门和报销人, 还要插入一个主键项目号。此外, 公司财务室还要求每个项目应有一个备注, 用于保存项目的文字描述信息。这样, 表T_Project包含的列如表3所示。

4.2.2 票据信息表T_Invoice

票据信息表T_Invoice用于保存票据的信息。

在表T_Invoice中, 由Invoice类属性映射的列有:供应商、报销内容、报销金额、报销时间、报销人、付款方式、是否附合同、是否附通知、凭证号和票据张数。其中“报销内容”公司财务室要求有大类、小类之分, 因此将列“报销内容”拆分为“报销内容大类”和“报销内容小类”两列。为了区分票据的不同状态, 还要增加一列“状态”。其次, 插入一个主键票据号。最后, 考虑到表T_Project与T_Invoice的关系, 再插入一个外键“项目号”以与表T_Project中的主键“项目号”匹配。这样, 表T_Invoice包含的列如表4所示。

4.2.3 用户信息表T_User

用户信息表T_User用于保存用户的注册信息。

表T_User包含由User类属性映射的列:账户、姓名、权限、部门和密码。其中账户对每一用户都是唯一的, 可以作为主键。这样, 表T_User包含的列如表5所示。

4.3 将关联映射到关系数据库

从第二讲2、3节知道, 3个类中包含两种类与类之间的关系。这两种关系都是关联关系。下面分别分析这两种关系向关系数据库的转换。

(1) Project与Invoice之间关系的转换

Project类与Invoice类之间存在着一到0或多的双向关联。在表T_Project和T_Invoice中, 可以通过表T_Invoice中外键“f7” (项目号) 匹配表T_Project中的主键“f0” (项目号) 来模拟类Project与Invoice之间的关系。

(2) Project与User之间关系的转换

Project类与User类之间存在着0或多到一或多的双向关联。

从表1看到, 对于类之间多对多关系向关系数据库转换, 是通过创建另外一个交叉表来解决的。这里采取一种变通的办法来处理:不增加交叉表, 而在表T_Project中的列“f5” (报销人) 中保存多个报销人的账户, 每个账户用空格‘’隔开。这样处理后, 虽然为编码增加了一点负担, 但是减少了存储空间。

⒋4数据模型

归纳以上设计结果, 可以得到系统的数据模型如图1所示。

5 结语

在传统方法中创建数据模型的依据是实体-关系 (E-R) 模型。在面向对象方法中, 创建数据模型的依据是类模型。类模型在本质上是扩展的实体-关系 (E-R) 模型。

将类模型映射到数据模型时, 要处理两种映射:由类映射到表 (包括由类属性映射到表的列) , 将关联映射到关系数据库。

为项目实例建立的数据模型表很简单, 只包含3个数据表。

回顾前面的工作, 会有两点缺憾:

(1) 在处理类Project与User之间多对多关系的转换时, 没有创建另外一个交叉表, 而是采取了一种变通的办法来处理, 即:在表T_Project中的列“f5” (报销人) 中保存多个报销人的账户, 每个账户用空格“”隔开。这样的处理虽然减少了存储空间, 但是违背了第一范式:表的每个列都是不可再分的数据项。

(2) 公司的部门被作为用户表T_User的一个列将导致公司的部门如果有变动, 系统维护会涉及修改程序代码。合理的做法是:在建立类模型时, 将部门识别为一个类, 进而在本讲将这个类映射为一个数据表, 这样, 公司的部门如果有变动, 系统维护只涉及修改数据。

参考文献

[1]范晓平.ASP.NET2.0项目开发第一步UML+VB+C#+Crystal Reports.清华大学出版社, 2008.

上一篇:进行体育游戏教学下一篇:框架混凝土结构