数据库设计、数据库需求分析、数据库结构设计

时间:2022-05-26
本文章向大家介绍数据库设计、数据库需求分析、数据库结构设计,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

一  基本概念

1 数据库设计面对的主要有哪些问题

(1) 懂数据库原理同时懂甲方软件专业知识的人缺少。

(2) 应用的数据库系统的最终目标往往在一开始不能完全明确,与开发者与用户方最初没在要求完全一致有关.

(3) 应用业务系统千差万别的,难以找到一种通用的工具和方法

2 数据库设计特点

(1) 对人员要求,综合性:成熟的开发人员涉及到的知识面,主要包括计算机专业和业务专业知识,要解决技术问题同时,还要去解决许多非技术方面的问题。

(2) 数据库结构设计与动态功能行为是分离的。

结构设计主要包括语义结构(概念性的),数据结构(逻辑性),存储结构(物理数据库)

动态行为设计:基于数据库的应用程序设计(动作操作,功能实现)

3 目前数据库设计主要方法

NEW ORLEANS--新奥尔良方法:一个数据库要成功设计,该流程:

需求分析(形成需求分析,得到说明书)---概念结构设计(概念结构)---逻辑结构设计(形成逻辑结构)----物理设计(生成磁盘上的物理数据库)

整个设计过程都要基于以前理论和范式。

4 常用的数据库设计细节步骤

把新奥尔良方法细化:

需求分析---结构设计—行为功能设计---数据库实施---数据库运行和维护

需求分析:了解用户方的真实需要,纸面化,形成需求说明书

结构设计:主要有概念结构,逻辑结构,物理结构的思考

行为设计:功能设计,事务设计,APP设计

数据库实施:加载数据库,调试运行应用程序

运行和维护:即使软件交付后,在保证期内维护

 

二 数据库需求分析

 是整个设计过程的起点,详细地明确用户方要求,直接影响后面所有阶段。

 主要难点:真实完整地明确要求;技术上可能存在难点;

 调查用户需求阶段主要包括:对方业务现状,信息源流,外部的其它要求

 信息源流:各种数据种类,类型,数据量;各种数据的来源,去向,结点是哪里;各种数据如何产生,修改,查询,更新,使用频率,效率;这些看起来分散的数据在业务如何联系起来?

 得到需求报告,过程中常用方法:检查用户方工作中的文档;面谈;观察用户方操作的中业务;甚至研究和问卷调查等

三 数据库结构设计

1数据库设计分类

数据库结构设计(静态描述的东西),数据库行为设计(功能行为,程序设计)

结构设计:数据库概念结构,逻辑结构,物理存储结构

行为设计:数据库的功能组织和流程控制,APP实现

2 概念结构设计(在人脑和纸上体现)常用E-R(实体—联系)

(1)设计局部E-R模型:定义某个功能或小范围内的模型,定义实体,明确实体的联系,各实体的属性(某个或某些表的定义)

(2)设计全局E-R模型:把所有的局部E-R图集成一个全局的E-R

(3)优化全局E-R模型

 

 E-R介绍:

  矩形框表示实体表,圆角长方或椭圆表示属性列;

  要描述出不同实体之间的联系:1:1, 1:m,  m:n

  原则:实体个数尽量少,但要满足各范式;一个实体包含的属性列尽量少,但要保证对实体属性列描述清楚。

  实体间的联系无冗余。

(要思考平衡各范式与实体集大小关系)

3 E-R模型如何向关系模型转换(数据库的逻辑结构设计概念)

说的是根据E-R图如何得到表的结构;根据E-R描述,设计出逻辑表;

一个实体转换为一个关系模式;实体中的属性就是关系表的列属性,实体中的标识符就是关系表的中的码.

难点在:如何处理实体之间的联系

(1) 两个实体是1:1关系:可直接把E-R图转换为关系模式.

如“学生”实体与“学生籍贯”实体之间是1:1,在转换时,两个实体各自独立转换

 

 

把上面的E-R实体“学生”转换为关系模式:

学生(学号 pk, 姓名,性别…)

(2) 实体间是1:m:  如实体“部门”和“职工”是一对多,如何转换为这个E-R到关系模型

 

 

部门(部门号 pk,部门名…)

职工(职工号 pk ,部门号 FK ,职工名,工资…)

(3)实体间是m:n ,多对多关系. 如有实体“教师”,“课程”,一个老师可教多门不同课程;一门课程可被不同的多个老师教。这种情况下如何转换为关系模型。

 

 

教师(教师号PK,教师名,职称….)

课程(课程号PK,课程名,学分…)

授课(教师号 FK,课程号FK,授课时数……)

说明:在教师表中教师号为主码,在课程表中课程号是主码;在授课表中教师号外键到教师表,课程号外键到课程表;授课表中教师号和课程号组合成主码PK

例:如下E-R如何写出关系模型?

 

 

 产品(产品号pk,性能参数……)

 零件(零件号pk,规格,价格….)

 材料(材料号pk,材料类型,库存量,材料参数….)

 产品零件(产品号fk,零件号fk,零件个数….)

 零件材料(零件号fk,材料号fk,使用量….)

 后台数据连接操作的类化,模块化:

应用开发:

MVC:模型-视图-控制器

 MVC标准规范,程序要遵守的,通用模型。

 模型:实现各个环节交换数据时的类CLASS

 视图:给用户最终呈现

 控制器:后台程序,如aspx.cs代码或 JAVA的servlet

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

 

/// <summary>

/// XsModel 的摘要说明

/// </summary>

public class XsModel

{

    private string 学号;

    private string 姓名;

    private int 年龄;

    private string 家庭住址;

    private float 身高;

    public void setXH(string t) { this.学号 = t; }

    public string getXH() { return 学号; }

 

    public XsModel()

    {

        //

        // TODO: 在此处添加构造函数逻辑

        //

    }

    public XsModel(string xh,string xm,int nl,string jtzz,float sg)

    {

        学号 = xh;姓名 = xm;年龄 = nl;家庭住址 = jtzz;身高 = sg;

        //

        // TODO: 在此处添加构造函数逻辑

        //

    }

}

 

 

在注册提交按钮编程:

  protected void bt1_Click(object sender, EventArgs e)

    {

      

        string xh0 = xh.Text.Trim();

        string xm0 = xm.Text.Trim();

        XsModel xs = new XsModel(xh0,xm0,0,"",0);

        double sg0=1.75;

        xs.setsg(sg0);

        new Class1().insertIntoTable0("学生表", xs);

 

 

    }

在数据操作工具类class1中新编写insertintotable0( )方法,实现对任意表,任意模型中的数据插入到数据库表中。

 

实现了的同学,把代码和运行结果截图发到作业邮箱中,平时成绩加5分

(文件名:学号+姓名+数据库操作工具+模型实现.docx )

 

 

 

 

 

原文地址:https://www.cnblogs.com/luyufan/p/16303430.html