数据库设计(一)

news2024/11/18 3:42:38

目录

数据库设计的基本概念:

                数据库设计包括以下几个部分:

需求设计:

                1、数据:

                2、处理:

概念结构设计:

实体:

例如:

联系类型:

                1、一对一:

                2、一对多:

                3、多对多:

E-R模型

1、E-R图

2、E-R图中的主要构件

3、E-R图演示示例

逻辑结构设计


数据库设计的基本概念:


        我们要做好一个数据库,是不是要先规划好要做什么,如何做,需要存储哪些数据,这些数据之间的关系是什么。需要满足用户的哪些用户等。

                我们把这个数据库规划的过程规范化,就称为数据库设计

                数据库设计包括以下几个部分:

                                                                                                需求设计 

                                                                                                概念结构设计

                                                                                                逻辑结构设计

                                                                                                物理结构设计

                                                                                                数据库的实施

                                                                                                数据库的运行与维护

需求设计:

                需求设计又称为需求分析,主要是根据用户的要求,分析其功能的可行性与实现方法等

                一般是由项目经理负责的,采用从上到下,从简单到复杂,从整体到部分的方式进行分析,把整个系统分为几个模块,又把这几个模块又分为多个功能,分析这多个功能那个实现的可行性

                探明需求是整个数据库设计中比较重要的一部分。数据库设计人员采用一定的辅助工具对应用对象的功能,性能和限制等要求所进行科学分析,主要包括数据和处理两方面

                1、数据:

                                        数据字典、系统的数据项、数据流和数据存储的描述

                2、处理:

                                        数据流图和判定表、数据字典中处理过程的描述

概念结构设计:

                概念结构设计是对信息分析和定义,如视图模型化,视图分析化和汇总,对应用对象精确的抽象、概括而形成的独立计算机系统的企业信息模型

                描述概念模型常用的工具就是E-R图

                概念结构设计就是从需求分析中找到实体和联系,画出E-R图

实体:

                实体是现实世界中可以区别于其他对象的“事件”或“物体”。

例如:

        学校中的每一个老师和学生都是一个实体。每个实体都有一组特性(属性)来表示,其中的某一部分属性可以唯一标识实体,如学生实体中的学号。实体集是具有相同属性实体的集合,如:学校的所有老师具有相同的属性,所有老师的集合可以定义为一个实体集;学生具有相同的属性,因此学生的集合可以定义为另一个实体集

联系类型:

                实体的联系方式分为实体内部的联系和实体与实体之间的联系。实体内部的联系反映数据在同一记录内部各字段间的联系,这里主要讨论实体集之间的联系

                两个不同实体之间存在一对一、一对多和多对多的联系类型

                1、一对一:

                                指实体集1中的一个实体最多只能与实体集2中的一个实体相联系,记为1:1

                        (    如:老师和学生一对一辅导

                2、一对多:

                                表示实体集1中的一个实体能与实体集2中的多个实体相联系,记为1:n

                                (如:班级中一位老师给一群孩子们讲课

                3、多对多:

                                表示实体集1中的多个实体能与实体集2中的多个实体相联系,记为m:n

                                (如:多位学生对应不同科目的老师

E-R模型

                在数据库设计中,常用实体联系模型(E-R模型)来描述现实世界到信息世界的问题,它是软件设计中的一个重要工具。E-R模型易于用户理解,使用户和数据库设计人员交流的语言

1、E-R图

        概念模型中常用的方法为E-R方法。此方法直接从现实世界中抽象出实体和实体之间的联系,然后用直观的E-R图表示数据模型

        E-R图强调的是语义,与现实世界的问题密切相关。例如:不同的学校教学管理的方法可能也有所不同,所以根据具有不同的语义,会得到不同的E-R模型。E-R模型的主要概念有实体,联系和属性

2、E-R图中的主要构件

矩形:表示实体集

双边矩形:表示弱实体集

菱形:表示联系集

双边菱形:表示弱实体集对应的标识性联系

椭圆:表示属性

双椭圆:表示多值属性

虚椭圆:表示派生属性

线段:将属性与相关的实体集连接,或将实体集与联系集相连

双线:表示一个实体全部参与到联系集中

3、E-R图演示示例

 

 

 

 

逻辑结构设计

                逻辑结构的目的是把概念设计阶段的概念模型(如基本的E-R图)转换成与选用的具体机器上的DMS所支持的逻辑模型,它是物理设计的基础,包括模型初始设计,子模型设计、应用程序设计、模型评价以及模式求精。

                逻辑设计可分为以下3个步骤

                        1、将概念模型(E-R图)转换成一般的关系、网状、层次模型

                        2、将关系、网状、层次模型向特定的DMS支持下的数据模型转换。

                        3、对数据模型进行优化

在将概念结构转换成逻辑结构时需要遵循一定的规范,这就有涉及到规范化理论了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/72781.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Hbase和Mysql存储数据量对比

目录 前言 生成数据 转换成hbase能够识别的HFile文件 导入HFile到hbase中 导入数据到Mysql 总结 前言 由于想知道hbase和mysql存储同样的一份数据需要的存储是否一样,故做的一下实验。 生成数据 脚本如下: #!/bin/basharray_brand([1]huawei […

Java-MySQL

数据库基础知识 先谈发音 MySQL如何发音?在国内MySQL发音有很多种,Oracle官方文档说他们念作My sequal[si:kwəl]。 数据库基本概念 1 ● 数据 数据(Data)是指对客观事物进行描述并可以鉴别的符号,这些符号是可识别的、…

目标检测算法——人脸识别数据集汇总(附下载链接)

>>>深度学习Tricks&#xff0c;第一时间送达<<< &#x1f384;&#x1f384;近期&#xff0c;小海带在空闲之余&#xff0c;收集整理了一批人脸识别数据集供大家参考。 整理不易&#xff0c;小伙伴们记得一键三连喔&#xff01;&#xff01;&#xff01;&am…

用python给女朋友写个圣诞树玩玩~

嗨害大家好鸭&#xff01;我是小熊猫~ 虽然我们不过洋节&#xff0c;但是女朋友要的话&#xff0c;那顺手写一个吧 代码&#x1f386; 模块 [源码、资料电子书点击此处] import turtle as t from turtle import * import random as r import time圣诞树细节以及画布大小 画布…

如何读取MySQL中的数据存放到HDFS_大数据培训

大数据培训读取MySQL中的数据存放到HDFS 1 查看官方模板 [atguiguhadoop102 ~]$ python /opt/module/datax/bin/datax.py -r mysqlreader -w hdfswriter { “job”: { “content”: [ { “reader”: { “name”: “mysqlreader”, “parameter”: { “column”: [], “conne…

ROS2初学者2022教程

ROS2初学者2022教程 掌握 ROS2 基础知识并成为机器人操作系统开发人员 – 一步一步 课程英文名&#xff1a;ROS2 For Beginners (ROS Foxy, Humble - 2022) 此视频教程共15.0小时&#xff0c;中英双语字幕&#xff0c;画质清晰无水印&#xff0c;源码附件全 下载地址 课程编…

手机视频如何修改封面?推荐这些修改方法

大家在社交平台上发布视频的时候会发现&#xff0c;一个好看的视频封面可以吸引很多的网友进行浏览和观赏。所以视频封面一直是视频创作者们不可忽略的一部分。那么你们知道手机视频怎么修改封面吗&#xff1f;如果你们想知道的话&#xff0c;那就接着往下看看吧&#xff0c;下…

Java_笔记_多态_包_final_权限修饰符_代码块

封装&#xff1a;对象代表什么&#xff0c;就得封装对应的数据&#xff0c;并提供数据对应的行为。 一、多态&#xff1a;对象的多种形态。同类型的对象&#xff0c;表现出的不同形态。 1.多态的表现形式&#xff1a;父类类型 对象名称 子类对象; 学生形态 对象 Student s …

Java异常(比较全)

前言&#xff1a;想要学好异常&#xff0c;需要了解JVM虚拟机知识&#xff0c;这里涉及面试常问的内存溢出错误解决办法 一、异常是什么&#xff1f; 定义 程序运行过程中&#xff0c;由于某些原因导致程序出错&#xff0c;从而结束程序运行&#xff0c;这就称为异常 java异常…

C++经典题目

目录 P62 3.6 求圆周长面积 P80 3 华氏转摄氏 P80 10 分段函数 P81 21 数列求和 P82 24 打印图形 P229 6 长方体体积 P384 4 printArea 题目来源于C程序设计&#xff08;第4版&#xff09; P62 3.6 求圆周长面积 设圆半径r1.5&#xff0c;圆柱高h3&#xff0c;求圆周长…

React生命周期中有哪些坑?如何避免?

在讨论React 的生命周期的时候&#xff0c;一定是在讨论类组件&#xff0c;因为函数组件并没有生命周期的概念&#xff0c;它本身就是一个函数&#xff0c;只会从头执行到尾巴 其实生命周期只是一个抽象的概念&#xff0c;大部分人看到生命周期想到的往往都componentDidMount&…

CMMI2.0配置管理工作及访谈学习笔记

1. 配置管理概述 1.1. 关于配置管理 配置管理是通过技术或其他手段对软件产品及其开发过程和生命周期进行控制、规范的一系列措施&#xff0c;通过配置标识、版本控制、版本管理、基线管理和配置审计来管理工作产品的完整性。 配置管理的主要目的是进行工作产品管理&#xf…

JavaScript -- 12. jQuery

文章目录jQuery1 jQuery简介2 使用jQuery2.1 下载jQuery2.2 引用jQuery3 jQuery的核心函数3.1 作为工具类使用3.2 作为函数使用3.2.1 将一个函数作为$的参数3.2.2 将选择器字符串作为参数3.2.3 将DOM对象作为参数3.2.4 将html代码作为参数4 jQuery对象4.1 获取DOM对象4.2 隐式迭…

Python——基础知识

前面主要讲解了javaEE的基础知识&#xff0c;基本上可以用servlet写一些简单的网页程序&#xff0c;后续的博客将围绕spring进行讲解&#xff0c;并且其中穿插一些python的知识 变量 命名 和其他的编程语言一样&#xff0c;java的变量命名需要遵循下面几个原则 由数字&…

世界杯竞猜项目Dapp-第二章(hardhat部署合约)

创建 hardhat 项目 # 创建 npm 空项目 npm init # 安装 npm install --save-dev hardhat2.11.1 # 创建工程 npx hardhat -> 选择高级ts项目运行测试 # 编译合约 npx hardhat compile # 单元测试 npx hardhat test添加合约 将 Worldcup.sol&#xff08;上节编写的合约&am…

【Flink】自定义keyBy的KeySelector

我们通常在写Flink程序的时候都会遇到keyBy,比如按照某条数据的某个字段进行分类计算,或者计算pv,还有需要用到Flink定时器的高级功能。 下面我们根据keyby的源码,看下keyBy的用法(本博客基于Flink1.13) 源码有5种方式定义keyBy, 但是其中的2种已经不用了,如果用户想…

PC的ARM的安全启动

其实还是很不习惯将PC和ARM联系起来&#xff0c;当然主要是因为我刚刚接触嵌入式没有多久&#xff0c;更别说服务器、PC端了。 脑子里固化了的X86。 于是这一篇学习一下&#xff0c;基于ARM的PC&#xff0c;是怎么利用这个ATF框架&#xff0c;进行安全启动的。 文章内容来自…

9个做好动效设计的好方法

动态效果意味着充满生命和兴奋&#xff0c;为静态事物增添生命。然而&#xff0c;在软件方面&#xff0c;动态效果不仅是为了获得乐趣&#xff0c;也是为了解决问题。 作为人类&#xff0c;我们习惯于看到世界在我们周围移动。如果任何软件有连贯的动画&#xff0c;它都会感到…

【Python游戏】Python基于第三方库pygame实现一个魂斗罗小游戏,毕业设计必备 | 附源码

前言 halo&#xff0c;包子们下午好 今天给打击整一个魂斗罗小游戏 很多小伙伴接触魂斗罗应该是在小时候的一个手柄游戏上面吧 我记得作为90后的我&#xff0c;玩这一款游戏是在小学的时候 废话不多说&#xff0c;直接上才艺 今天给大家直接安排 相关文件 关注小编&#xff…

30分钟了解linux操作系统内核总结

【推荐阅读】 概述Linux内核驱动之GPIO子系统API接口 一篇长文叙述Linux内核虚拟地址空间的基本概括 轻松学会linux下查看内存频率,内核函数,cpu频率 纯干货&#xff0c;linux内存管理——内存管理架构&#xff08;建议收藏&#xff09; Linux 内核性能优化的全景指南&#xff…