‘壹’ 如何使用数据字典
为了对数据流程图中的各个元素作出详细的说明,有必要建立数据字典 (Data dictionary) 。数据字典的内容主要是对数据流程图中的数据项、数据结构、数据流、处理逻辑、数据存储和外部实体等六个方面进行具体的定义。数据流程图配以数据字典,就可以从图形和文字两个方面对系统的逻辑模型进行完整的描述。
一、数据项的定义
数据项又称数据元素,是数据的最小单位。分析数据特性应从静态和动态两个方面去进行。在数据字典中,仅定义数据的静态特性,具体包括: (1) 数据项的名称、编号、别名和简述; (2) 数据项的长度; (3) 数据项的取值范围;
例:数据项定义
数据项编号: I02 -01
数据项名称:材料编号
别名:材料编码
简述:某种材料的代码
类型及宽度:字符型, 4 位
取值范围:“0001 ”-“ 9999 ”
二、数据结构的定义
数据结构描述某些数据项之间的关系。一个数据结构可以由若干个数据项组成;也可以由若干个数据结构组成,还可以由若干个数据项和数据结构组成。例如表 5.l 所示订货单就是由三个数据结构组成的数据结构,表中用 DS 表示数据结构,用 I 表示数据项。
数据字典中对数据结构的定义包括以下内容: (1) 数据结构的名称和编号; (2) 简述;(3) 数据结构的组成。如果是一个简单的数据结构,只要列出它所包含的数据项。如果是一个嵌套的数据结构 ( 即数据结构中包含数据结构 ) ,则需列出它所包含的数据结构、的名称,因为这些被包含的数据结构在数据字典的其他部分已有定义。
例:数据结构定义
数据结构编号: DS03 - 08
数据结构名称:用户订货单
简述:用户所填用户情况及订货要求等信息
数据结构组成: DS03 - 02 + DS03 - 03 + DS03 -04
三、数据流的定义
数据流由一个或一组固定的数据项组成。定义数据流时,不仅要说明数据流的名称、组成等,还应指明它的来源、去向和数据流量等。
例:数据流定义
数据流编号: FD3 - 08
数据流名称:领料单
简述:车间开出的领料单
数据流来源:车间
数据流去向:发料处理模块
数据流组成:材料编号 + 材料名称 + 领用数量+ 日期 + 领用单位
数据流量: 10 份/时
高峰流量: 20 份/时 ( 上午9 : 00 -11 : 00)
四、处理逻辑的定义
处理逻辑的定义仅对数据流程图中最底层的处理逻辑加以说明。编写数据字典是系统开发的一项重要的基础工作。一旦建立,并按编号排序之后,就是一本可供查阅的关于数据的字典,从系统分析一直到系统设计和实施都要使用它。在数据字典的建立、修正和补充过程中,始终要注意保证数据的一致性和完整性。
数据字典可以用人工建立卡片的办法来管理,也可存储在计算机中用一个数据字典软件来管理。
‘贰’ 全面教你如何建立数据分析的思维框架
全面教你如何建立数据分析的思维框架
目前,还有一些人不会建立数据分析的思维框架,那么今天课课家,就一步一步的教大家怎么建立,大神路过还请绕道,当然还可以交流一下。有需要的小伙伴,可以参考一下。
曾经有人问过我,什么是数据分析思维?如果分析思维是一种结构化的体现,那么数据分析思维在它的基础上再加一个准则:
不是我觉得,而是数据证明。
这是一道分水岭,“我觉得”是一种直觉化经验化的思维,工作不可能处处依赖自己的直觉,公司发展更不可能依赖于此。数据证明则是数据分析的最直接体现,它依托于数据导向型的思维,而不是技巧,前者是指导,后者只是应用。
作为个人,应该如何建立数据分析思维呢?
一、建立你的指标体系
在我们谈论指标之前,先将时间倒推几十年,现代管理学之父彼得·德鲁克说过一句很经典的话:
如果你不能衡量它,那么你就不能有效增长它。
所谓衡量,就是需要统一标准来定义和评价业务。这个标准就是指标。假设隔壁老王开了一家水果铺子,你问他每天生意怎么样,他可以回答卖的不错,很好,最近不景气。这些都是很虚的词,因为他认为卖的不错也许是卖了50个,而你认为的卖的不错,是卖了100。
这就是“我觉得”造成的认知陷阱。将案例放到公司时,会遇到更多的问题:若有一位运营和你说,产品表现不错,因为每天都有很多人评价和称赞,还给你看了几个截图。而另外一位运营说,产品有些问题,推的活动商品卖的不好,你应该相信谁呢?
其实谁都很难相信,这些众口异词的判断都是因为缺乏数据分析思维造成的。
老王想要描述生意,他应该使用销量,这就是他的指标,互联网想要描述产品,也应该使用活跃率、使用率、转化率等指标。
如果你不能用指标描述业务,那么你就不能有效增长它。
了解和使用指标是数据分析思维的第一步,接下来你需要建立指标体系,孤立的指标发挥不出数据的价值。和分析思维一样,指标也能结构化,也应该用结构化。
我们看一下互联网的产品,一个用户从开始使用到离开,都会经历这些环节步骤。电商app还是内容平台,都是雷同的。想一想,你会需要用到哪些指标?
而下面这张图,解释了什么是指标化,这就是有无数据分析思维的差异,也是典型的数据化运营,有空可以再深入讲这块。
标体系没有放之四海而皆准的模板,不同业务形态有不同的指标体系。移动APP和网站不一样,SaaS和电子商务不一样,低频消费和高频消费不一样。好比一款婚庆相关的APP,不需要考虑复购率指标;互联网金融,必须要风控指标;电子商务,卖家和买家的指标各不一样。
这些需要不同行业经验和业务知识去学习掌握,那有没有通用的技巧和注意事项呢?
二、明确好指标与坏指标
不是所有的指标都是好的。这是初出茅庐者常犯的错误。我们继续回到老王的水果铺子,来思考一下,销量这个指标究竟是不是好的?
最近物价上涨,老王顺应调高了水果价格,又不敢涨的提高,虽然水果销量没有大变化,但老王发现一个月下来没赚多少,私房钱都不够存。
老王这个月的各类水果销量有2000,但最后还是亏本了,仔细研究后发现,虽然销量高,但是水果库存也高,每个月都有几百单位的水果滞销最后过期亏本。
这两个例子都能说明只看销量是一件多不靠谱的事情。销量是一个衡量指标,但不是好指标。老王这种个体经营户,应该以水果铺子的利润为核心要素。
好指标应该是核心驱动指标。虽然指标很重要,但是有些指标需要更重要。就像销量和利润,用户数和活跃用户数,后者都比前者重要。
核心指标不只是写在周报的数字,而是整个运营团队、产品团队乃至研发团队都统一努力的目标。
核心驱动指标和公司发展关联,是公司在一个阶段内的重点方向。记住是一个阶段,不同时期的核心驱动指标不一样。不同业务的核心驱动指标也不一样。
互联网公司常见的核心指标是用户数和活跃率,用户数代表市场的体量和占有,活跃率代表产品的健康度,但这是发展阶段的核心指标。在产品1.0期间,我们应把注意力放到打磨产品上,在大推广前提高产品质量,这时留存率是一个核心指标。而在有一定用户基数的产品后期,商业化比活跃重要,我们会关注钱相关的指标,比如广告点击率、利润率等。
核心驱动指标一般是公司整体的目标,若从个人的岗位职责看,也可以找到自己的核心指标。比如内容运营可以关注阅读数和阅读时长。
核心驱动指标一定能给公司和个人带来最大优势和利益,记得二八法则么?20%的指标一定能带来80%的效果,这20%的指标就是核心。
另外一方面,好的指标还有一个特性,它应该是比率或者比例。
拿活跃用户数说明就懂了,我们活跃用户有10万,这能说明什么呢?这说明不了什么。如果产品本身有千万级别的注册用户,那么10万用户说明非常不健康,产品在衰退期。如果产品只拥有四五十万用户,那么说明产品的粘性很高。
正因为单纯的活跃用户数没有多大意义,所以运营和产品会更关注活跃率。这个指标就是一个比率,将活跃用户数除以总用户数所得。所以在设立指标时,我们都尽量想它能不能是比率。
认识和看待事物
这类常见的提问方式包括了一个知名人物或历史事件如何评价?如何看待一个产品?你对某个事物是如何理解的?如何看待或分析一种行为或热点等?
对于看待或分析事物类的思维,则是我们前面一篇思维的逻辑里面讲到的很多内容,即事物本身应该结合外部环境+时间线+事物核心维度进行全面的分析,事物的外在交互关系,事物的内部结构和衔接,事物本身动态展现的行为特征等。这些首先分析清楚,即对事物本身有一个全面和客观的认识。
这类思维的一个核心即辩证思维,在这里我不太喜欢用批评性思维这个词,辩证思i维更加体现了这类思维的重点是全面,客观,以数据说话同时减少主观偏颇看法。对于这类问题你不一定要去表面自己的主观感受,而更加重要的是把事实和道理讲清楚,有理有据。
在真正分析清楚后,后续才过渡到这类问题的演进,即如何评估或评价一个事物,其前提仍然是分析清楚客观数据,但是数据本身不是评价或评估指标,因此一谈到评估自然会想到需要建立或参考一个评估体系。一个历史帝王有政治,经济,外交,军事和民生各种评价体系。对一辆车可能有动力,舒适性,油耗,操控等各种评价体系。一个产品本身有功能满足度,易用性,性能,价格等各种评价体系等。对于任何评估,则首先是找到现成可用的科学评价体系,然后将对事物分析后的数据映射到具体的评价体系上,即任何评估指标值的得出一定有事物本身内在数据和运作机制进行支撑的。
这些都想清楚后,即这类思维的重点是事物的分解和集成分析,事物的行为或活动分析,事物相关的内外环境因素分析,事物本身的关键属性维度分析和评估体系确定,事物各关键指标特性间的相互制约和促进力分析(类似系统思维中的正负循环)等。
坏指标有哪些呢?
其一是虚荣指标,它没有任何的实际意义。
产品在应用商店有几十万的曝光量,有意义吗?没有,我需要的是实际下载。下载了意义大吗?也不大,我希望用户注册成功。曝光量和下载量都是虚荣指标,只是虚荣程度不一样。
新媒体都追求微信公众号阅读数,如果靠阅读数做广告,那么阅读数有意义,如果靠图文卖商品,那么更应该关注转化率和商品销量,毕竟一个夸张的标题就能带来很高的阅读量,此时的阅读量是虚荣指标。可惜很多老板还是孜孜不倦的追求10W+,哪怕刷量。
虚荣指标是没有意义的指标,往往它会很好看,能够粉饰运营和产品的工作绩效,但我们要避免使用。
第二个坏指标是后验性指标,它往往只能反应已经发生的事情。
比如我有一个流失用户的定义:三个月没有打开APP就算做流失。那么运营每天统计的流失用户数,都是很久没有打开过的,以时效性看,已经发生很久了,也很难通过措施挽回。我知道曾经因为某个不好的运营手段伤害了用户,可是还有用吗?
活动运营的ROI(投资回报率)也是后验性指标,一个活动付出成本后才能知道其收益。可是成本已经支出,活动的好与坏也注定了。活动周期长,还能有调整余地。活动短期的话,这指标只能用作复盘,但不能驱动业务。
第三个坏指标是复杂性指标,它将数据分析陷于一堆指标造成的陷阱中。
指标能细分和拆解,比如活跃率可以细分成日活跃率、周活跃率、月活跃率、老用户活跃率等。数据分析应该根据具体的情况选择指标,如果是天气类工具,可以选择日活跃率,如果是社交APP,可以选择周活跃率,更低频的产品则是月活跃率。
每个产品都有适合它的几个指标,不要一股脑的装一堆指标上去,当你准备了二三十个指标用于分析,会发现无从下手。
三、建立正确的指标结构
既然指标太多太复杂不好,那么应该如何正确的选择指标呢?
和分析思维的金字塔结构一样,指标也有固有结构,呈现树状。指标结构的构建核心是以业务流程为思路,以结构为导向。
假设你是内容运营,需要对现有的业务做一个分析,提高内容相关数据,你会怎么做呢?
我们把金字塔思维转换一下,就成了数据分析方法了。
从内容运营的流程开始,它是:内容收集—内容编辑发布—用户浏览—用户点击—用户阅读—用户评论或转发—继续下一篇浏览。
这是一个标准的流程,每个流程都有指标可以建立。内容收集可以建立热点指数,看哪一篇内容比较火。用户浏览用户点击则是标准的PV和UV统计,用户阅读是阅读时长。
从流程的角度搭建指标框架,可以全面的囊括用户相关数据,无有遗漏。
这套框架列举的指标,依旧要遵循指标原则:需要有核心驱动指标。移除虚荣指标,适当的进行删减,不要为添加指标而添加指标。
四、了解维度分析法
当你有了指标,可以着手进行分析,数据分析大体可以分三类:
利用维度分析数据
使用统计学知识如数据分布假设检验
使用机器学习
我们先了解一下维度分析法。
维度是描述对象的参数,在具体分析中,我们可以把它认为是分析事物的角度。销量是一种角度、活跃率是一种角度,时间也是一种角度,所以它们都能算维度。
当我们有了维度后,就能够通过不同的维度组合,形成数据模型。数据模型不是一个高深的概念,它就是一个数据立方体。
上图就是三个维度组成的数据模型/数据立方体。分别是产品类型、时间、地区。我们既能获得电子产品在上海地区的2010二季度的销量,也能知道书籍在江苏地区的2010一季度销量。
数据模型将复杂的数据以结构化的形式有序的组织起来。我们之前谈到的指标,都可以作为维度使用。下面是范例:
将用户类型、活跃度、时间三个维度组合,观察不同用户群体在产品上的使用情况,是否A群体使用的时长更明显?
将商品类型、订单金额、地区三个维度组合,观察不同地区的不同商品是否存在销量差异?
数据模型可以从不同的角度和层面来观察数据,这样提高了分析的灵活性,满足不同的分析需求、这个过程叫做OLAP(联机分析处理)。当然它涉及到更复杂的数据建模和数据仓库等,我们不用详细知道。
数据模型还有几种常见的技巧、叫做钻取、上卷、切片。
选取就是将维度继续细分。比如浙江省细分成杭州市、温州市、宁波市等,2010年一季度变成1月、2月、3月。上卷则是钻取的相反概念,将维度聚合,比如浙江、上海、江苏聚合成浙江沪维度。切片是选中特定的维度,比如只选上海维度、或者只选2010年一季度维度。因为数据立方体是多维的,但我们观察和比较数据只能在二维、即表格中进行。
上图的树状结构代表钻取(source和time的细分),然后通过对Route的air切片获得具体数据。
聪明的你可能已经想到,我们常用的数据透视表就是一种维度分析,将需要分析的维度放到行列组合进行求和、计数、平均值等计算。放一张曾经用到的案例图片:用城市维度和工作年限维度,计算平均工资。
除了Excel、BI、R、Python都能用维度分析法。BI是相对最简便的。
谈到维度法,想要强调的是分析的核心思维之一:对比,不同维度的对比,这大概是对新人快速提高的最佳捷径之一。比如过去和现在的时间趋势对比,比如不同地区维度的对比,比如产品类型的区别对比,比如不同用户的群体对比。单一的数据没有分析意义,只有多个数据组合才能发挥出数据的最大价值。
我想要分析公司的利润,利润 = 销售额 – 成本。那么找出销售额涉及的指标/维度,比如产品类型、地区、用户群体等,通过不断的组合和拆解,找出有问题或者表现良好的原因。成本也是同理。
这就是正确的数据分析思维。总结一下吧:我们通过业务建立和筛选出指标,将指标作为维度,利用维度进行分析。
很多人会问,指标和维度有什么区别?
维度是说明和观察事物的角度,指标是衡量数据的标准。维度是一个更大的范围,不只是数据,比如时间维度和城市维度,我们就无法用指标表示,而指标(留存率、跳出率、浏览时间等)却可以成为维度。通俗理解:维度>指标。
到这里,大家已经有一个数据分析的思维框架了。之所以是框架,因为还缺少具体的技巧,比如如何验证某一个维度是影响数据的关键,比如如何用机器学习提高业务,这些涉及到数据和统计学知识,以后再讲解。
这里我想强调,数据分析并不是一个结果,只是过程。还记得“如果你不能衡量它,那么你就不能有效增长它”这句话吗?数据分析的最终目的就是增长业务。如果数据分析需要绩效指标,一定不会是分析的对错,而是最终数据提升的结果。
数据分析是需要反馈的,当我分析出某项要素左右业务结果,那么就去验证它。告诉运营和产品人员,看看改进后的数据怎么样,一切以结果为准。如果结果并没有改善,那么就应该反思分析过程了。
这也是数据分析的要素,结果作导向。分析若只是当一份报告呈现上去,后续没有任何跟进、改进的措施,那么数据分析等与零。
业务指导数据,数据驱动业务。这才是不二法门。
‘叁’ 数据库数据字典怎么写
数据字典是什么
进行数据库设计的时候,对数据库元素进行的解释说明就是数据字典。举个例子吧,假设有下面这个设计出来的数据库表:
player(fname, lname, account, pwd, email)
对应的数据字典就是:
player:玩家信息表
fname:玩家名
lname:玩家姓
account:账户名
pwd:密码
email:联系电邮
这里只是一个针对某一表的数据字典,还有针对表与表之间关系的数据字典、表内字段属性的数据字典等等。越是大型的数据库设计,越是需要数据字典来辅助进行设计说明,帮助设计人员之间的沟通野竖与交流。
SQL数据库数据字典怎么生成的?
数据字典是关于数据的信息的 *** ,也就是对数据流图中包含的所有元素的定义的 *** 。
数据库数据字典是一组表和视图结构。它们存放在SYSTEM表空间中。
数据库数据字典不仅是每个数据库的中心。而且对每个用户也是非常重要的信息。用户可以用SQL语句访问数据库数据字典。
生成数据库参考代码如下:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:
-- Create date: <2014-09-19>
-- Description:
-- =============================================
CREATE PROCEDURE [dbo].[CreateDatabaseDictionarie]
AS
BEGIN
DECLARE @TableName nvarchar(35),@htmls varchar(8000)
DECLARE @字段名称 VARCHAR(200)
DECLARE @类型 VARCHAR(200)
DECLARE @长度 VARCHAR(200)
DECLARE @数值精度 VARCHAR(200)
DECLARE @小数位数 VARCHAR(200)
DECLARE @默认值 VARCHAR(200)
DECLARE @允许为空 VARCHAR(200)
DECLARE @外键 VARCHAR(200)
DECLARE @主键 VARCHAR(200)
DECLARE @描述 VARCHAR(200)
SET NOCOUNT ON;
DECLARE Tbls CURSOR
FOR
Select distinct Table_name
FROM INFORMATION_SCHEMA.COLUMNS
order by Table_name
OPEN Tbls
PRINT ''
PRINT ''
PRINT ' '
PRINT ' ......
数据字典的组成
数据字典的组成:1、数据项2、数据结构3、数据流4、数据存储5、处理过程数据字典数据字典是数据库的重要组成部分。它存放有数据库所用的有棚脊毕关信息,对用户来说是一组只读的表。数据字典内容包括:1、数据库中所有模式对象的信息,如表、视图、簇、及索引等。2、分配多少空间,当前使用了多少空间等。3、列的缺省值。4、约束信息的完整性。5、用户的名字。6、用户及角色被授予的权限。7、用户访问或使用的审计信息。8、其它产生的数据库信息。数据库数据字典是一组表和视图结构。它们存放在SYSTEM表空间中。数据库数据字典不仅是每个数据库的中心。而且对每个用户也是非常重要的信息。用户可以用SQL语句访问数据库数据字典。关于数据的信息 *** ,是一种用户可以访问的记录数据库和应用程序元数据的目录,是对数据库内表信息的物理与逻辑的说明
数据字典与数据库设计之间有什么关系?
正文
1 引言
1.1编写目的
说明编写这份数据库设计说明链芹书的目的,指出预期的读者。
1.2背景
说明:
a.说明待开发的数据库的名称和使用此数据库的软件系统的名称;
b.列出该软件系统开发项目的任务提出者、用户以及将安装该软件和这个数据库的计算站(中心)。
1.3定义
列出本文件中用到的专门术语的定义、外文首字母组词的原词组。
1.4参考资料
列出有关的参考资料:
a.本项目的经核准的计划任务书或合同、上级机关批文;
b.属于本项目的其他已发表的文件;
c.本文件中各处引用到的文件资料,包括所要用到的软件开发标准。
列出这些文件的标题、文件编号、发表日期和出版单位,说明能够取得这些文件的来源。
2 外部设计
2.1标识符和状态
联系用途,详细说明用于唯一地标识该数据库的代码、名称或标识符,附加的描述性信息亦要给出。如果该数据库属于尚在实验中、尚在测试中或是暂时使用的,则要说明这一特点及其有效时间范围。
2.2使用它的程序
列出将要使用或访问此数据库的所有应用程序,对于这些应用程序的每一个,给出它的名称和版本号。
2.3约定
陈述一个程序员或一个系统分析员为了能使用此数据库而需要了解的建立标号、标识的约定,例如 用于标识数据库的不同版本的约定和用于标识库内各个文卷、、记录、数据项的命名约定等。
2.4专门指导
向准备从事此数据库的生成、从事此数据库的测试、维护人员提供专门的指导,例如将被送入数据 库的数据的格式和标准、送入数据库的操作规程和步骤,用于产生、修改、更新或使用这些数据文卷的操 作指导。 如果这些指导的内容篇幅很长,列出可参阅的文件资料的名称和章条。
2.5支持软件
简单介绍同此数据库直接有关的支持软件,如数据库管理系统、存储定位程序和用于装入、生成、修 改、更新数据库的程序等。说明这些软件的名称、版本号和主要功能特性,如所用数据模型的类型、允许 的数据容量等。列出这些支持软件的技术文件的标题、编号及来源。
3 结构设计
3.1概念结构设计
说明本数据库将反映的现实世界中的实体、属性和它们之间的关系等的原始数据形式,包括各数据项、记录、系、文卷的标识符、定义、类型、度量单位和值域,建立本数据库的每一幅用户视图。
3.2逻辑结构设计
说明把上述原始数据进行分解、合并后重新组织起来的数据库全局逻辑结构,包括所确定的关键字和属性、重新确定的记录结构和文卷结构、所建立的各个文卷之间的相互关系,形成本数据库的数据库管理员视图。
3.3物理结构设计
建立系统程序员视图,包括:
a.数据在内存中的安排,包括对索引区、缓冲区的设计;
b.所使用的外存设备及外存空间的组织,包括索引区、数据块的组织与划分;
c.访问数据的方式方法。
4 运用设计
4.1数据字典设计
对数据库设计中涉及到的各种项目,如数据项、记录、系、文卷、模式、子模式等一般要建立起数据字典,以说明它们的标识符、同义名及有关信息。在本节中要说明对此数据字典设计的基本考虑。
4.2安全保密设计
说明在数据库的设计中,将如何通过区分不同的访问者、不同的访问类型和不同的数据对象,进行分别对待而获得的数据库安全保密的设计考虑。...
mysql数据库数据字典表怎么写
你导出 rmation_schema 数据库里的所有表就OK了 新特性啊,以前只有ORACLE才有的
数据字典包括哪些内容
你好!
我用的是考研参考书,上面的答案是:
数据字典是数据库中描述信息和控制信息的 *** ,他是数据库设计和管理的有力工具。数据字典包含(1.数据项,2数据流,3.数据结构.4.数据存储.5.处理过程)五个部分。同时也是详细数据收集和数据分析的结果。
SQL怎么创建数据字典表,最好举个例子!
我的理解数据字典表就是普通的表,例如性别的数据字典表
而这个字典表即可以包含, xmdm(代码),xmmc(名称),xm *** (说明) 三列,可根据使用情况增加或减少列,里面的数据,即包含了 男,女,未知,三个选择 这男,女等就是字典
是可以列举完全的。
数据库中的字典是什么意思?
数据字典即为数据库说明。包含完整的表结构介绍。
数据字典是特殊的数据库数据库类型是按什么
数据库设计方法、规范与技巧
一、数据库设计过程
数据库技术是信息资源管理最有效的手段。数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,有效存储数据,满足用户信息要求和处理要求。
数据库设计中需求分析阶段综合各个用户的应用需求(现实世界的需求),在概念设计阶段形成独立于机器特点、独立于各个DBMS产品的概念模式(信息世界模型),用E-R图来描述。在逻辑设计阶段将E-R图转换成具体的数据库产品支持的数据模型如关系模型,形成数据库逻辑模式。然后根据用户处理的要求,安全性的考虑,在基本表的基础上再建立必要的视图(VIEW)形成数据的外模式。在物理设计阶段根据DBMS特点和处理的需要,进行物理存储安排,设计索引,形成数据库内模式。
1. 需求分析阶段
需求收集和分析,结果得到数据字典描述的数据需求(和数据流图描述的处理需求)。
需求分析的重点是调查、收集与分析用户在数据管理中的信息要求、处理要求、安全性与完整性要求。
需求分析的方法:调查组织机构情况、调查各部门的业务活动情况、协助用户明确对新系统的各种要求、确定新系统的边界。
常用的调查方法有: 跟班作业、开调查会、请专人介绍、询问、设计调查表请用户填写、查阅记录。
分析和表达用户需求的方法主要包括自顶向下和自底向上两类方法。自顶向下的结构化分析方法(Structured Analysis,简称SA方法)从最上层的系统组织机构入手,采用逐层分解的方式分析系统,并把每一层用数据流图和数据字典描述。
数据流图表达了数据和处理过程的关系。系统中的数据则借助数据字典(Data Dictionary,简称DD)来描述。
数据字典是各类数据描述的 *** ,它是关于数据库中数据的描述,即元数据,而不是数据本身。数据字典通常包括数据项、数据结构、数据流、数据存储和处理过程五个部分(至少应该包含每个字段的数据类型和在每个表内的主外键)。
数据项描述={数据项名,数据项含义说明,别名,数据类型,长度,
取值范围,取值含义,与其他数据项的逻辑关系}
数据结构描述={数据结构名,含义说明,组成:{数据项或数据结构}}
数据流描述={数据流名,说明,数据流来源,数据流去向,
组成:{数据结构},平均流量,高峰期流量}
数据存储描述={数据存储名,说明,编号,流入的数据流,流出的数据流,
组成:{数据结构},数据量,存取方式}
处理过程描述={处理过程名,说明,输入:{数据流},输出:{数据流},
处理:{简要说明}}
2. 概念结构设计阶段
通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型,可以用E-R图表示。
概念模型用于信息世界的建模。概念模型不依赖于某一个DBMS支持的数据模型。概念模型可以转换为计算机上某一DBMS支持的特定数据模型。
概念模型特点:
(1) 具有较强的语义表达能力,能够方便、直接地表达应用中的各种语义知识。
(2) 应该简单、清晰、易于用户理解,是用户与数据库设计人员之间进行交流的语言。
概念模型设计的一种常用方法为IDEF1X方法,它就是把实体-联系方法应用到语义数据模型中的一种语义模型化技术,用于建立系统信息模型。
使用IDEF1X方法创建E-R模型的步骤如下所示:
2.1 第零步——初始化工程
这个阶段的任务是从目的描述和范围描述开始,确定建模目标,开发建模计划,组织建模......
‘肆’ 怎么生成数据字典
数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。
数据库数据字典是一组表和视图结构。它们存放在SYSTEM表空间中。
数据库数据字典不仅是每个数据库的中心。而且对每个用户也是非常重要的信息。用户可以用SQL语句访问数据库数据字典。
生成数据库参考代码如下:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Carbe>
-- Create date: <2014-09-19>
-- Description: <生成数据库字典>
-- =============================================
CREATE PROCEDURE [dbo].[CreateDatabaseDictionarie]
AS
BEGIN
DECLARE @TableName nvarchar(35),@htmls varchar(8000)
DECLARE @字段名称 VARCHAR(200)
DECLARE @类型 VARCHAR(200)
DECLARE @长度 VARCHAR(200)
DECLARE @数值精度 VARCHAR(200)
DECLARE @小数位数 VARCHAR(200)
DECLARE @默认值 VARCHAR(200)
DECLARE @允许为空 VARCHAR(200)
DECLARE @外键 VARCHAR(200)
DECLARE @主键 VARCHAR(200)
DECLARE @描述 VARCHAR(200)
SET NOCOUNT ON;
DECLARE Tbls CURSOR
FOR
Select distinct Table_name
FROM INFORMATION_SCHEMA.COLUMNS
order by Table_name
OPEN Tbls
PRINT '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'
PRINT '<html xmlns="http://www.w3.org/1999/xhtml">'
PRINT ' <head>'
PRINT ' <title>KC管理系统-数据库字典</title>'
PRINT ' <style type="text/css">'
PRINT ' body{margin:0; font:11pt "arial", "微软雅黑"; cursor:default;}'
PRINT ' .tableBox{margin:10px auto; padding:0px; width:1000px; height:auto; background:#FBF5E3; border:1px solid #45360A}'
PRINT ' .tableBox h3 {font-size:12pt; height:30px; line-height:30px; background:#45360A; padding:0px 0px 0px 15px; color:#FFF; margin:0px; text-align:left }'
PRINT ' .tableBox table {width:1000px; padding:0px }'
PRINT ' .tableBox th {height:25px; border-top:1px solid #FFF; border-left:1px solid #FFF; background:#F7EBC8; border-right:1px solid #E0C889; border-bottom:1px solid #E0C889 }'
PRINT ' .tableBox td {height:25px; padding-left:10px; border-top:1px solid #FFF; border-left:1px solid #FFF; border-right:1px solid #E0C889; border-bottom:1px solid #E0C889 }'
PRINT ' </style>'
PRINT ' </head>'
PRINT ' <body>'
FETCH NEXT FROM Tbls INTO @TableName
WHILE @@FETCH_STATUS = 0
BEGIN
Select @htmls = ' <h3>' + @TableName + ' : '+ CAST(Value as varchar(1000)) + '</h3>'
FROM sys.extended_properties AS A
WHERE A.major_id = OBJECT_ID(@TableName)
and name = 'MS_Description' and minor_id = 0
PRINT ' <div class="tableBox">'
PRINT @htmls
PRINT ' <table cellspacing="0">'
PRINT ' <tr>'
PRINT ' <th>字段名称</th>'
PRINT ' <th>类型</th>'
PRINT ' <th>长度</th>'
PRINT ' <th>数值精度</th>'
PRINT ' <th>小数位数</th>'
PRINT ' <th>默认值</th>'
PRINT ' <th>允许为空</th>'
PRINT ' <th>外键</th>'
PRINT ' <th>主键</th>'
PRINT ' <th>描述</th>'
PRINT ' </tr>'
DECLARE TRows CURSOR
FOR
SELECT
' <td>' + CAST(clmns.name AS VARCHAR(35)) + '</td>',
' <td>' + CAST(udt.name AS CHAR(15)) + '</td>' ,
' <td>' + CAST(CAST(CASE WHEN typ.name IN (N'nchar', N'nvarchar') AND clmns.max_length <> -1 THEN clmns.max_length/2 ELSE clmns.max_length END AS INT) AS VARCHAR(20)) + '</td>',
' <td>' + CAST(CAST(clmns.precision AS INT) AS VARCHAR(20)) + '</td>',
' <td>' + CAST(CAST(clmns.scale AS INT) AS VARCHAR(20)) + '</td>',
' <td>' + isnull(CAST(cnstr.definition AS VARCHAR(20)),'') + '</td>',
' <td>' + CAST(clmns.is_nullable AS VARCHAR(20)) + '</td>' ,
' <td>' + CAST(clmns.is_computed AS VARCHAR(20)) + '</td>' ,
' <td>' + CAST(clmns.is_identity AS VARCHAR(20)) + '</td>' ,
' <td>' + ISNULL(CAST(exprop.value AS VARCHAR(500)),'') + '</td>'
FROM sys.tables AS tbl
INNER JOIN sys.all_columns AS clmns ON clmns.object_id=tbl.object_id
LEFT OUTER JOIN sys.indexes AS idx ON idx.object_id = clmns.object_id AND 1 =idx.is_primary_key
LEFT OUTER JOIN sys.index_columns AS idxcol ON idxcol.index_id = idx.index_id AND idxcol.column_id = clmns.column_id AND idxcol.object_id = clmns.object_id AND 0 = idxcol.is_included_column
LEFT OUTER JOIN sys.types AS udt ON udt.user_type_id = clmns.user_type_id
LEFT OUTER JOIN sys.types AS typ ON typ.user_type_id = clmns.system_type_id AND typ.user_type_id = typ.system_type_id
LEFT JOIN sys.default_constraints AS cnstr ON cnstr.object_id=clmns.default_object_id
LEFT OUTER JOIN sys.extended_properties exprop ON exprop.major_id = clmns.object_id AND exprop.minor_id = clmns.column_id AND exprop.name = 'MS_Description'
WHERE (tbl.name = @TableName and exprop.class = 1) --I don't wand to include comments on indexes
ORDER BY clmns.column_id ASC
OPEN TRows
FETCH NEXT FROM TRows INTO @字段名称,@类型,@长度,@数值精度,@小数位数,@默认值,@允许为空,@外键,@主键,@描述
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT ' <tr>'
PRINT @字段名称
PRINT @类型
PRINT @长度
PRINT @数值精度
PRINT @小数位数
PRINT @默认值
PRINT @允许为空
PRINT @外键
PRINT @主键
PRINT @描述
PRINT ' </tr>'
FETCH NEXT FROM TRows INTO @字段名称,@类型,@长度,@数值精度,@小数位数,@默认值,@允许为空,@外键,@主键,@描述
END
CLOSE TRows
DEALLOCATE TRows
PRINT ' </table>'
PRINT ' </div>'
FETCH NEXT FROM Tbls INTO @TableName
END
PRINT ' </body>'
PRINT '</html>'
CLOSE Tbls
DEALLOCATE Tbls
END