0

0

第一章 数据库的设计

php中文网

php中文网

发布时间:2016-06-07 17:45:06

|

1378人浏览过

|

来源于php中文网

原创

1.1 为什么需要规范的数据库设计 在第一阶段,根据业务需求,我们直接创建库、创建表、插入测试数据,然后再查询数据,为什么现在需要强调先设计再创建库、创建表呢?原因非常简单,正如我们修造建筑物一样,如果您是盖一间茅屋或一间简易平房,您会花钱请人

1.1 为什么需要规范的数据库设计

  在第一阶段,根据业务需求,我们直接创建库、创建表、插入测试数据,然后再查询数据,为什么现在需要强调先设计再创建库、创建表呢?原因非常简单,正如我们修造建筑物一样,如果您是盖一间茅屋或一间简易平房,您会花钱请人设计房屋图纸吗?毫无疑问,没人请。但是,如果是房地产开发商开发一个楼盘,修建多栋楼的居住小区,他会请人设计施工图纸吗?答案是肯定的,不但开发商会考虑设计施工图纸,甚至很多专业的购房者也会在看房时要求开发商出示设计图纸。

  同样道理,在实际的项目开发中,如果系统的数据存储量较大,设计的表比较多,表和表之间的关系比较复杂,我们就需要首先考虑规范的数据库设计,然后再进行具体的创建库、创建表的工作。不管是创建动态网站,还是创建桌面窗口应用程序,数据库设计的重要性都不言而喻。如果设计不当,查询起来就非常吃力,程序的性能也会受到影响。无论您使用的是SQL Server 还是 Oracle 数据库,通常进行规范化的数据库设计,美国服务器,都可以使您的程序代码更具体可读性,更容易扩展,从而也会提升项目的应用性能。

  1. 什么是数据库设计

  数据库设计就是将数据库中的数据对象以及这些数据对象之间关系,进行规划和结构化的过程。

  2. 数据库设计非常重要

  数据库中创建的数据结构的种类,以及在数据对象之间建立的复杂关系是决定数据库系统效率的重要因素。

  糟糕的数据库设计表现为以下几点。

  (1)效率底下。

  (2)更新和检索数据时会出现许多问题。

  良好的数据库设计表现为以下几点。

  (1)效率高。

  (2)便于进一步扩展。

  (3)使得应用程序开发变得更容易。

1.2 设计数据库的步骤

  经过了毕业设计项目开发、我们对项目的开发有了一个整体上的认识,项目开发需要经过需求分析、概要设计、详细设计、代码编写、运行测试和打包发行几个阶段。下面,重点讨论在各个阶段中数据库的设计过程。

    需求分析阶段:分析客户的业务和数据处理需求。

    概要设计阶段:绘制数据库的E-R模型图,用于在项目团队内部、设计人员和客户之间进行沟通,确认需求信息的正确性和完整性。

    详细设计阶段:将E-R图转换为多张表,进行逻辑设计,确认各表的主外键,并应用数据库设计的三大范式进行审核。经项目组开会讨论确定后,还需根据项目的技术实现、团队开发能力以及项目的经费来源,选择具体的数据库(如SQL Server或Oracle等)进行物理实现,包括创建库、创建表,并创建我们后面将要学习的存储过程等。创建完毕后,开始进入代码编写阶段,开发前端应用程序。

  现在,我们共同讨论在需求分析阶段,后台数据库的设计步骤。

  需求分析阶段的重点是调查、收集并分析客户业务的数据需求、处理需求、安全性与完整性需求。

  常用的需求调研方法有在客户的公司跟班实习、组织召开调查会、邀请专人介绍、设计调查表,并请用户填写、查阅业务相关数据记录等。

  常用的需求分析方法有调查客户的公司住址情况、各部门的业务需求情况、协助客户分析系统的各种业务需求、确定新系统的边界。

  物理数据库的大小和复杂程度如何,在进行数据库的系统分析时,都可以参考下列基础步骤。

  (1)收集信息。

同徽B2C电子商务软件系统
同徽B2C电子商务软件系统

开发语言:java,支持数据库:Mysql 5,系统架构:J2EE,操作系统:linux/Windows1. 引言 32. 系统的结构 32.1 系统概述 33. 功能模块设计说明 43.1 商品管理 43.1.1 添加商品功能模块 53.1.2 商品列表功能模块 83.1.3 商品关联功能模块 93.

下载

  (2)标识对象。

  (3)标识每个对象需要存储的详细信息。

  (4)标识对象之间的关系。

  1. 收集信息

  创建数据库之前,必须充分理解数据库需要完成的任务和功能。简单地说,我们需要了解数据库需要存储哪些信息(数据),实现哪些功能。

  2. 标识对象(实体)

  在收集需求信息后,必须标识数据库要管理的关键对象或实体。对象可以是有形的事物,如人或产品;也可以是无形的事务,如商业交易,公司部门或发薪周期。在系统中标识这些对象以后,与它们相关的对象就会条理清楚。

  3. 标识每个对象需要存储的详细信息(属性)

  将数据库中的主要对象标识为表的候选对象以后,下一步就是标识每个对象存储的详细信息,也称为该对象的属性,这些属性将组成表中的列。简单地说,就是需要细分出每个对象包含的子成员信息。

  4. 标识对象(实体)之间的关系

  关系型数据库有一项非常强大的功能,它能够关联数据库中各个项目的相关信息。不同类型的信息可以单独存储,但是如果需要,数据库引擎可以根据需要将数据组合起来。在设计过程中,要标识对象之间的关系,需要分析数据库表,确定这些表在逻辑上是如何相关的,然后添加关系列建立起表之间的连接。

1.3 绘制E-R(实体-关系)图

  在需求分析阶段解决了客户的业务和数据处理需求后,就进入了我们的概要设计阶段,我们需要和项目团队的其他成员以及我们的客户沟通,讨论数据库的设计是否满足客户的业务和数据处理需求。和机械行业需要机械制图,建筑行业需要施工图一样,我们的数据库设计也需要图形化的表达方式---E-R(Entity-Relationship)实体关系图,它包括一些具有特定含义的图形符号。

1.3.1 实体-关系模型

  1. 实体

  所谓实体就是指现实世界中具有区分其他事物的特征或属性并与其他实体有联系的对象。例如,BBS论坛系统中的用户(如张三、李四、王五等)、帖子、板块(动画板块、情感天地板块等)等,实体一般是名词,它对应我们表中的一行数据,例如张三用户这个实体,将对应于“用户表”中,张三用户所在的一行数据,包括他的密码、出生日期、电子邮件等信息。严格地说,实体是指表中一行一行的特定数据,但我们在开发时,也常常把整个表也称为一个实体。

  2. 属性

  属性可以理解为实体的特征。例如,“用户”这一实体的属性有昵称、出生日期和电子邮件等。属性对应表中的列。

  3. 关系

  关系是两个或多个实体之间的联系。

  如图所示为用户实体和版块实体之间的关系。实体使用方块表示,实体一般是名词,属性使用椭圆标识,一般也是名词,关系使用菱形标识,一般是动词。

  

  4. 映射基数

  映射基数表示可以通过关系与实体关联的其他实体的个数。对于实体集X和Y之间的二元关系,映射基数必须为下列基数之一。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

6

2026.02.28

Golang 工程化架构设计:可维护与可演进系统构建
Golang 工程化架构设计:可维护与可演进系统构建

Go语言工程化架构设计专注于构建高可维护性、可演进的企业级系统。本专题深入探讨Go项目的目录结构设计、模块划分、依赖管理等核心架构原则,涵盖微服务架构、领域驱动设计(DDD)在Go中的实践应用。通过实战案例解析接口抽象、错误处理、配置管理、日志监控等关键工程化技术,帮助开发者掌握构建稳定、可扩展Go应用的最佳实践方法。

6

2026.02.28

Golang 性能分析与运行时机制:构建高性能程序
Golang 性能分析与运行时机制:构建高性能程序

Go语言以其高效的并发模型和优异的性能表现广泛应用于高并发、高性能场景。其运行时机制包括 Goroutine 调度、内存管理、垃圾回收等方面,深入理解这些机制有助于编写更高效稳定的程序。本专题将系统讲解 Golang 的性能分析工具使用、常见性能瓶颈定位及优化策略,并结合实际案例剖析 Go 程序的运行时行为,帮助开发者掌握构建高性能应用的关键技能。

8

2026.02.28

Golang 并发编程模型与工程实践:从语言特性到系统性能
Golang 并发编程模型与工程实践:从语言特性到系统性能

本专题系统讲解 Golang 并发编程模型,从语言级特性出发,深入理解 goroutine、channel 与调度机制。结合工程实践,分析并发设计模式、性能瓶颈与资源控制策略,帮助将并发能力有效转化为稳定、可扩展的系统性能优势。

14

2026.02.27

Golang 高级特性与最佳实践:提升代码艺术
Golang 高级特性与最佳实践:提升代码艺术

本专题深入剖析 Golang 的高级特性与工程级最佳实践,涵盖并发模型、内存管理、接口设计与错误处理策略。通过真实场景与代码对比,引导从“可运行”走向“高质量”,帮助构建高性能、可扩展、易维护的优雅 Go 代码体系。

17

2026.02.27

Golang 测试与调试专题:确保代码可靠性
Golang 测试与调试专题:确保代码可靠性

本专题聚焦 Golang 的测试与调试体系,系统讲解单元测试、表驱动测试、基准测试与覆盖率分析方法,并深入剖析调试工具与常见问题定位思路。通过实践示例,引导建立可验证、可回归的工程习惯,从而持续提升代码可靠性与可维护性。

2

2026.02.27

漫蛙app官网链接入口
漫蛙app官网链接入口

漫蛙App官网提供多条稳定入口,包括 https://manwa.me、https

130

2026.02.27

deepseek在线提问
deepseek在线提问

本合集汇总了DeepSeek在线提问技巧与免登录使用入口,助你快速上手AI对话、写作、分析等功能。阅读专题下面的文章了解更多详细内容。

8

2026.02.27

AO3官网直接进入
AO3官网直接进入

AO3官网最新入口合集,汇总2026年可用官方及镜像链接,助你快速稳定访问Archive of Our Own平台。阅读专题下面的文章了解更多详细内容。

208

2026.02.27

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Git 教程
Git 教程

共21课时 | 3.9万人学习

Excel 教程
Excel 教程

共162课时 | 19.4万人学习

C# 教程
C# 教程

共94课时 | 10.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号