分享
 
 
 

如何实现逻辑数据模型

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

业务和系统开发领域绝对不能容许设计上的重大失误。可是,很多开发人员却因为不了解设计步骤而恰恰轻视乃至完全忽略了整个设计过程。而实际上,我们中的大多数人也确实缺乏必要的有关技能和知识,结果令我们往往“旁路”了项目开发中最重要的阶段。

说真的,有本事敢直接绕过设计阶段的人还没诞生呢。

假如我们不花点时间创建一个逻辑模型,那么要实现一套高效和优秀的设计是完全不可能的。略过设计步骤会产生大量的错误,而这些错误又会令我们耗费大量的时间在发现它们的时候反复调试和纠正。下面我就大致讨论下设计的逻辑和物理模型,然后引领读者经过逻辑模型的创建全过程。本文是有关主题系列的开篇,在后续的第2部分里,我会根据已经发现的缺陷修改我们的原始设计。

数据库的设计方法

在对数据库项目的需求着手评估和分析周,接下来的一步就是设计出一套方案帮助你达到项目的要求和目标。在开发领域这一步骤被称做数据库设计方法。它是一种结构化的措施,支持设计流程同时还包括了诸如公司业务流程、规定和文档等一系列工具。步步进阶的整套流程帮助开发人员计划、治理和控制设计及其实现从而高效地完成任务。

这意味着,你拥有一整套方法,也就是按照特定顺序安排的项目列表,这些方法指引你经过数据模型创建的全过程。请不要错误地把这个过程理解为平常的过程,实际上它是完全必要的阶段。你应该从完全理解数据和用户需求这一目的出发研究该过程。

每一个项目无论其规模大小都能从以下三种模型中获益:

概念:明确和说明创建数据全局视图的主要对象,同时辅以一定的稍微细节。许多企业都局限于特定的数据库治理系统(DBMS),所以这一步可以忽略或者放到逻辑模型一组。

逻辑:构造采用特定数据的模型,但还不用考虑最终保存数据以及运营应用程序的具体数据库系统。由于SQL Server是一种关系型数据库治理系统(RDBMS),所以我们要依靠于实体关系模型(ER:Entity-Relationship)。在这一阶段你必须明确实体、关系、属性并对你的数据实行规格化。逻辑模型建立在数据集合的基础之上。为了更深入地了解ER模型,不不妨访问下 ITS数据库服务网站 或者参考。

物理:根据所采用的具体RDBMS设计实现逻辑模型的具体模型。在这一阶段,你需要说明数据表、索引等数据库对象,而物理模型就是根据数据表建立的。

建立逻辑模型的真实用意无非是为了确认应用程序能满足最终的需求(包括输入和输出两方面)。换句话说,逻辑模型必须能产生所有已知的报告、查询等结果。此外,用户还应该能够以合理的方式输入和操作数据。一旦逻辑模型到位,你就应开始把你所了解的情况应用到项目的物理需求方面——比如说——物理模型。图A就描述了逻辑和物理模型在这一阶段的差别。

图A

逻辑和物理数据模型

逻辑模型的实现

目前阶段的所谓“实现”其实就是完成逻辑模型的组件。在明确了实体、关系和属性的情况下,你应该揭示出那些在工作环境下可能会产生问题的缺陷:

缺少的实体

表示同一概念实体的多个实体

需要额外实体来解决问题的多对多关系

多值和冗余的属性

现在我们就以一个实际项目为例看看该如何创建一个合理的逻辑模型,通过这个模型帮助你避免今后的问题。假设你的这个最新项目是供旅行社使用的、一项足够简单、处理定单的数据库应用程序,这家旅行社针对4类客户实行批发或者零售服务:

Agency:授权接受定单上任务的另一家旅行社。

Aggregator:一家俱乐部,其成员可以享受打折服务。

Corporate:代表其职员下定单的公司。它们不能享受的打折优不过需要获得旅行社的全方位服务支持。比如说,旅行社必须帮助它们解决一些诸如取消计划、飞机票订位过多等方面的问题。企业客户总是一样的而旅行者只能是其职员。

Retail:不能享受任何折扣优惠的单独客户。

这时,你应该预备定义应用程序的主要对象或者实体。为了针对客户类型应用以上的业务规则,你可能会把每一种客户类型当作单独的实体,如表A所示。数据类型和其他信息都是针对SQL Server考虑的。

表A

定义应用实体

看图B,你可以简化当前的模型:

客户订单。

某种特定类型的客户。

图B

不同实体之间的关系

正如我们在上面所提到的那样,业务规则要求我们对客户实现区别对待。结果,客户不能总是具有同样的属性。我们的第1个解决方案是创建一个数据表,其中包含了各类客户的特定属性。这一原始设计带来了下列问题:

所有的客户数据表都采用系统生成的主键,大致以种子值1开始递增。那就是说,你完全会遭遇重复的ClientID值。结果我们就无法恰当地把每一定单关联到特定的客户,因为每一客户表都包含了重复的值。

因为每一客户表重复公共字段(如ClientID、ClientName、Address和Telephone)而产生了一些冗余的属性。

客户会有更多的地址吗?也许他们会具有一个当地地址和一个付费的单位地址。

客户只有一个电话号码?也许你应该列出多个电话号码乃至传真号码。

有必要根据客户的类型来标识定单吗?显然你不能。

找出和解决设计问题

你首先采取的行动可能和我们用的不同,但那还不是要害的问题。最重要的是你可能没有熟悉的到设计中隐藏的问题。在后续的文章里我会采用已知的、业已得到证实的方法来寻找和解决设计问题,免得它们在今后的工作中引出不少漏子。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有