首先简单的说一下我对数据、模型、数据模型、数据模型要素以及数据模型的分类的理解。
数据:是符号。例如 张三
模型:现实世界事与物特征的抽象与模拟。如飞机模型、空气动力模型。
数据模型:通过对现实世界的事与物主要特征的分析、抽象,为信息系统的实施提供数据存取的数据结构以及相应的约束。 数据模型的要素由操作、数据结构以及约束。通常情况下我们在数据模型设计的时候考虑最多的是数据结构而忽视了其他两个要素。
根据数据模型的应用层次可以分为概念数据模型模型(概念模型)、逻辑数据模型(数据模型)、以及物理数据模型(物理模型)。
概念模型:从业务的角度来考虑问题,主要用来描述事与物的概念化结构,其用途是统一业务概念,作为业务人员和技术人员之间沟通的桥梁。其描述方法有ER图、Merise图、Barker图等。在建立概念模型的过程中主要考虑的是现实世界中的事与物以及他们之间的关系而不用关注事与物的具体属性。
逻辑数据模型:从数据库的角度来考虑问题,在概念模型的基础上对事与物属性的细化以及对象整合。其描述方法有ER图。在这个层面数据模型可以分为层次、网状、关系模型。
物理模型:面向具体的物理计算环境。
下面我们来说一下什么样的数据模型才是好的数据模型。 数据模型的设计是自由的任意的,对于同一个系统或者同一个表每个设计人员的设计结果都是不一样的,那么有没有什么标准来评价数据模型的好与坏呢。我觉得应该从以下几个方面来考虑。
1:是否满足现有的业务需求。
2:是否易于应对未来的可能的业务变更。好的扩展性、很强的灵活性。
3:是否高效。对开发人员来是否简单高效,运行是否高效。
最后来说一下在数据模型设计过程中的感悟。
0:数据模型的分层与抽象,数据模型按照考察的系统不同可以分为三个层次:通用层、行业层、业务层,通用层从社会、自然的角度去考察对象;行业层从行业的角度去考察对象;业务层从所在公司的业务发展去考察对象,这三个层次是从抽象到具体的过程,越抽象越有通用性。在某个具体的层都可以分别对实体、关系进行抽象以达到相应的灵活性、扩展性。在具体实现的过程中,将稳定的实体、实体关系与多变的业务对象分别建模,保证模型的稳定性。
1:关于扩展性 可以通过横表转纵表的方式。 视图可以为开发人员提供一个接口屏蔽底层具体实现的复杂性同时提高系统的扩展性。
2:关于数据源 要有元数据的概念同样的数据尽量在一个源头去取,这对数据的维护以及数据一致性都很有好处。
3:关于抽象 抽象是我们分析问题解决问题非常重要的手段,抽象能力的高低充分体现了数据模型设计人员的水平。
4:关于动静分离 动静是相对的没有绝对的动与静。在实体属性的选取、表空间等方面考虑动态数据与静态数据分离。 用一个例子来说明这个问题吧。 在电子商务系统中从灵活的角度来看后端管理系统会涉及多个表,但是对于前端展现来说如果从多个表获取数据的话那么在高并发的情况下会严重的影响性能。于是乎就有了发布这个环节。发布的目的除了对信息进行审核外,还把相关的信息发布到一个表或者缓存中再或者生成静态页面,如果使用oralce的话还可以使用物化视图。
5:关于数据字典 要重视数据字典这对开发人员理解数据模型的设计以及以后的维护都非常重要。
6:如何进行数据模型设计
【01】首先是要了解业务然后建立概念模型,确定实体以及实体关系。
【02】在概念模型的基础上生成逻辑模型,确定实体属性,标准化数据(消除多值字段达到第一范式;消除部分依赖达到第二范式;消除传递依赖达到第三范式)。
【03】模型验证:通过具体的业务来验证模型是否能满足要求。
【04】在逻辑模型的基础上生产物理模型。
7:三少 整个模型中表应该尽量的少;在一个表中字段应该尽量的少同时复合主键字段应尽量的少
8:如果在大数据量或者高并发的情况下,要充分考虑数据库的压力,事先要考虑哪些表可能是热表。要尽量的降低模块的耦合。如果使用的是oracle RAC 的话要考虑一下多实例竞争的问题,不同的模块访问不同的实例。
9:一定要做压力测试、要做充分的压力测试,要不上线后会死的很惨,移动总部的一个web项目应为没有做充分的压力测试,导致上线后不的不挂维护页面,动用了n多的资源去解决问题。
10:在做模型设计的时候要考虑项目的各个生命周期阶段对模型的要求,不能仅仅把眼光限制在功能的实现,例如要考虑模型对以后维护的支持,对于大表的数据如何进行清除、转历史,显然delete、insert是首先可以想到的但是不可行的方法,建议做分区转换。
11: 数据模型设计对系统可变性的支撑:业务系统的变化点通常是流程相关部分,这部分会随着不同的公司、公司的不同发展阶段而变化,因此最好将这部分单独建模,独立于系统核心模型之外。
12:动静分离,11条说的是将多变的业务过程相关实体同稳定的实体以及实体关系分离,用来适应业务变化;动静分离从系统运行的角度,将实体进行分类、实体数据进行拆分,用以提升系统的稳定性、可扩展性。
13:数据模型是对现实世界的模拟,不是对现实世界的完全照搬,对于一个实体一定要重点考虑这个实体在系统内的角色,对这个角色建模而不是照搬现实世界。
以上是本人在数据模型设计方面的一点体会,写的不够细,以后会针对某点给出图文化的实例来具体说明,希望大家多给宝贵意见,共同交流。
相关推荐
这篇转自iteye博客的文章《数据模型设计心得》虽然链接不可用,但我们可以根据标题和标签来推测其可能涉及的内容。 在IT领域,数据模型设计通常包括概念数据模型、逻辑数据模型和物理数据模型三个层次。概念模型...
学生成绩管理系统设计是一个综合性的IT项目,涵盖了多个关键阶段,包括系统需求分析、系统用例模型设计、静态模型设计、系统动态模型设计以及系统部署模型设计。在本设计过程中,开发者段亦菲运用了《系统分析与设计...
【C6应用数据分析模型】是数据科学领域的一种高级方法,旨在通过复杂的数学和统计分析来理解和预测复杂系统的行为。在互联网行业中,C6应用数据分析模型主要用于处理海量数据,揭示潜在的模式、趋势和关联,从而支持...
CPU与简单模型机设计实验 CPU(Central Processing Unit,中央处理单元)是计算机的主要组成部分,负责执行指令和控制计算机的运算。简单模型机设计实验是计算机组成原理实验的重要部分,旨在掌握简单 CPU 的组成...
### 计算机组成原理课程设计(简单模型机设计)知识点详析 #### 一、设计目的与目标 - **目的**: 在掌握基础单元电路实验的基础上,进一步将各个部分组合成一个系统,构建出一台基本的模型计算机。 - **目标**: -...
逻辑模型设计进一步细化了概念模型,包括选择适当的数据模型(如关系、星型或雪花型)和设计数据库的表和字段,确保数据的存储和访问效率。 在数据仓库的建立阶段,数据仓库数据集的构建是核心步骤,这通常涉及数据...
在2019年的AI开发者大会上,旷视研究院的张祥雨博士分享了他在轻量级神经网络模型设计方面的研究心得,并以手机人脸解锁为例,详细阐述了轻量级架构、模型搜索、模型裁剪等关键技术。 首先,高效的模型设计面临准确...
其中,实验五的主题是“带移位运算模型机的设计与实现”,旨在通过对模型机的设计与调试,加深学生对微程序控制器以及数据通道控制的理解。 首先,让我们来明确一下实验的目标。实验的主要目的是通过设计与实现一款...
### r软件系统分析与设计心得 #### 一、前言:对软件开发的新认识 在正式进入软件系统分析与设计的学习之前,大多数人可能会认为编写代码是软件开发中最困难且核心的部分。然而,通过本课程的学习,我们会发现软件...
计算机组成原理是理解计算机系统内部工作机制的关键课程,其中带位移运算的模型机设计与实验是其重要组成部分。位移运算在计算机科学中扮演着重要角色,它涉及到数据的移动和位操作,广泛应用于算术运算、逻辑运算...
3. **数据仓库设计**:数据仓库设计的关键步骤包括数据仓库的概念模型设计和逻辑模型设计。概念模型设计阶段会根据业务需求完成ERD设计,而逻辑模型设计则关注主题域分析、粒度划分、数据分割策略等,确保模型符合...
数据仓库的设计流程通常包括概念模型设计和逻辑模型设计两个重要阶段。概念模型设计关注数据的高级抽象,涉及构建星型模型和雪花型模型。星型模型采用中心表与多个维度表的形式组织数据,而雪花型模型则是对星型模型...
《计算机组织结构》实验报告——复杂模型机设计实验旨在让学生深入理解计算机的工作原理,并通过实践操作来设计和实现一个相对复杂的计算机模型。这个实验涵盖了计算机科学的基础知识,包括指令系统、数据通路、控制...
例如,在设计数据库时,可以使用实体-关系模型(E-R模型)或对象-关系映射(ORM)来描述数据的结构和关系。此外,还可以使用数据库设计语言(DDL)来定义数据库的结构和约束。 最后,从部分内容中,我们可以看到,...
基于PaddleX的YOLOv3进行废水水质判断源码+全部数据(课程设计).zip 基于PaddleX的YOLOv3进行废水水质判断,包括自制数据集、数据加载和预处理、模型选择和调参、模型部署等步骤,同时总结了心得体会。 基于...
概念模型是数据仓库的高层设计,逻辑模型是数据仓库的中层设计,而物理模型是数据仓库的低层设计。 二、数据仓库的建立和管理 2.1 数据仓库的建立:数据仓库的建立需要经过数据仓库设计、数据加载、数据转换和数据...
在逻辑结构设计中,将E-R图转换为关系数据库模型。主要的表包括客户信息表、入住记录表、客房信息表和客房类型信息表。每个表的属性和数据类型被具体定义,例如,客房类型信息表包括类型名称、价格、房间面积等字段...
以上内容概述了计算机组成原理课程设计——基本模型机设计与实现的主要知识点,包括课程设计的目的、内容、原理、微代码表设计、机器指令程序、线路连接图、微程序流程及个人的心得体会等。这些内容旨在帮助学生深入...