数据库设计 Step by Step (1)——扬帆启航
一直在从事数据库开发和设计工作也看了一些书籍算是略有心得。很久之前就想针对关系数据库设计进行整理、总结但因为种种原因迟迟没有动手主要还是惰性使然。今天也算是痛下决心开始这项卓绝又令我兴奋的工作。这将是一个系列的文章我将以讲座式的口吻展开讨论个人偷懒这里的总结直接拿去公司培训新人用。系列的第一讲我们先来回答下面几个问题数据库是大楼的根基大多数程序员都很急切在了解基本需求之后希望很快的进入到编码阶段可能只有产出代码才能反映工作量对于数据库设计思考得比较少。这给系统留下了许多隐患。许多软件系统的问题如输出错误的数据性能差或后期维护繁杂等都与前期数据库设计有着密切的关系。到了这个时候再想修改数据库设计或进行优化等同于推翻重来。我经常把软件开发比作汽车制造。汽车制造会经过图纸设计模型制作样车制造小批量试生产最后是批量生产等步骤。整个过程环环相扣后一过程是建立在前一过程正确的前提基础之上的。如果在图纸设计阶段发现了一个纰漏我们可以重新进行图纸设计如果到了样车制造阶段发现这个错误那么我们就要把从图纸设计到样车制造的阶段重来越到后面发现设计上的问题所付出的代价越大修改的难度也越大。数据库是整个应用的根基没有坚实的根基整个应用也就岌岌可危了。强大的数据库面对不良设计也无能为力现代数据库管理系统DBMS提供了方便的图形化界面工具通过这些工具可以很方便的创建表、定义列但我们设计出的结构好吗关系数据库有许多非常好的特性但设计不当会使这些特性部分或完全的丧失。我们来看看以下几个数据库不良设计造成的场景1. 数据一致性的丧失一个订单管理系统维护着客户和客户下的订单信息。使用该系统的用户在接到客户修改收货地址的电话后在系统的客户信息页面把该客户的收货地址进行了修改但原先该客户的订单还是送错了地址。2. 数据完整性的丧失公司战略转移准备撤出某地区。系统操作人员顺手把该地区的配置信息在系统中进行删除系统提示删除成功。随后问题就来了客服人员发现该地区的历史订单页面一打开就出错。3. 性能的丧失一个库存管理系统仓库管理员使用该系统记录每一笔进出货情况并能查看当前各货物的库存情况。在系统运行几个月后仓库管理员发现打开当前库存页面变得非常慢而且整个趋势是越来越慢。上面这些场景都是由于数据库设计不当造成的根源包括设计时引入了冗余字段没有设计合理的约束对性能没有进行充足设计等上面的例子也只是沧海一粟。数据库平台无关性我在这个系列博客里讨论的数据库设计不针对任何一个关系数据库产品。无论你使用的是OracleSQL ServerSybase亦或是开源数据库如MySQLSQLite等都可以用来实践我们这里讨论的设计方法和设计理念设计是这个系列博文的核心和灵魂。注在文中我会选用一个数据库产品来进行演示大家可以选用自己熟悉的数据库产品来实验。本文最后会给出一些免费数据库产品的链接大家可以下载学习。一起学习共同进步无论你是数据库设计师应用架构师软件工程师数据库管理员DBA软件项目经理软件测试工程师等项目组成员都能从该系列博文中有所收获。大家一起讨论共同进步。内容涉及领域我对这一系列博文现在的设想是涉及数据库设计的整个过程。从需求分析开始到数据库建模概念数据建模进行范式化直至转化为SQL语句。在我们一头扎进数据库设计之前我们先了解一下除了关系型数据库之外的数据存储方式。平面文件Flat File包括以.txt和.ini结尾的文件。eg: 一个.ini文件的内容------------------------------------------------------------[WebSites]MyBloghttp://www.cnblogs.com/DBFocus[Directorys]ImageE:\DBFocus Project\ImgTextE:\DBFocus Project\DocumentsDataE:\DBFocus Project\DB------------------------------------------------------------优点文件的存储形式非常简单普通的编辑器都能对其进行打开、修改缺点无法支持复杂的查询没有任何验证功能对平面文件中间的内容进行插入、删除操作其实是重新生成了一个新文件适用场景存放小量修改不频繁的数据如应用配置信息Windows注册表错误的修改Windows注册表会引起系统的紊乱故不建议把很多数据存放在注册表中。Windows注册表为树形结构存放着一些系统配置信息和应用配置信息。通过把不同的配置存放在注册表的不同分支上使得应用程序公共配置信息与用户个人配置信息分离。eg某文档版本管理系统能通过配置与本主机上安装的文件比较器建立关联进行文档比较。这是一个公共配置信息文件比较器路径可以存放在注册表的HKEY_LOCAL_MACHINE\SOFTWARE分支下。同时该文档版本管理系统能记录用户最近打开的10个文档路径。这是用户个人配置信息对于不同的Windows用户最近打开的10个文档可以不同这些配置信息可存放在注册表的HKEY_CURRENT_USER\Software分支下。Excel表单Spreadsheets优点Excel 非常普及用户对于Spreadsheet的表现形式非常熟悉可以进行简单统计方便出各种图表缺点不适用于许多Spreadsheet之间关系复杂的情况无法应对复杂查询数据验证功能弱适用场景数据量不是非常大的办公自动化环境XMLXML是一种半结构化的数据。相比于超文本标记语言HTML其标签是可以自行定义的即可扩展的。eg一个XML文件内容-----------------------------------------------------?xml version”1.0” encoding”UTF-8” ?ClassScheduleClass Name“Psychology” Room”Field 3”InstructorRichard Storm/InstructorStudentsStudentFirstNameBen/FirstNameLastNameBreaker/LastName/StudentStudentFirstNameCarol/FirstNameLastNameEnflame/LastNameNickNameCandy/NickName/Student/Students/Class/ClassSchedule-----------------------------------------------------XML文件有几个特点。首先XML标签要求严格对应且不能出现交错的现象。

相关新闻

当AI越来越能干,我们该如何重新摆位?

当AI越来越能干,我们该如何重新摆位?

能力下放,验证上收——这是AI时代工程师的生存法则最近读到一期BestBlogs的早报,三篇精讲从不同维度探讨了同一个问题:当模型越来越能干,人和验证该怎么重新摆位? 读完后我发现,这不是一个遥远的哲学问题&a…

2026/7/5 3:41:35阅读更多 →
Kali 无法启动自带的BurpSuite

Kali 无法启动自带的BurpSuite

问题描述 启动burpsuite时,闪退,无法启动。提示如图。 原因分析: 这是由于java -version跟javac -verson的版本不同导致的。 java -version javac -version 使用update-alternatives --config java切换版本 update-alternatives --config …

2026/7/5 3:41:35阅读更多 →
CMS 网站管理系统是什么?2026企业建站选哪个系统高效又省心

CMS 网站管理系统是什么?2026企业建站选哪个系统高效又省心

CMS Content Management System,内容管理系统,俗称网站后台管理系统,一套专门用来搭建、维护网站的软件程序。核心原理:内容与页面分离不用写代码,前台网页样式(模板)、后台文字 / 产品 / 图片…

2026/7/5 3:41:35阅读更多 →
5分钟掌握SRWE:游戏窗口分辨率自由调整的终极指南

5分钟掌握SRWE:游戏窗口分辨率自由调整的终极指南

5分钟掌握SRWE:游戏窗口分辨率自由调整的终极指南 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 你是否遇到过这样的烦恼?想截取一张完美的游戏画面,却发现游戏分辨率限制让…

2026/7/5 5:06:40阅读更多 →
ComfyUI-WanVideoWrapper:解锁1025帧长视频生成的魔法工具箱 [特殊字符]

ComfyUI-WanVideoWrapper:解锁1025帧长视频生成的魔法工具箱 [特殊字符]

ComfyUI-WanVideoWrapper:解锁1025帧长视频生成的魔法工具箱 🎬 【免费下载链接】ComfyUI-WanVideoWrapper 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI-WanVideoWrapper 想象一下,你正在制作一部微电影,需…

2026/7/5 5:06:40阅读更多 →
国家中小学智慧教育平台电子课本下载完整教程:快速获取PDF教材资源

国家中小学智慧教育平台电子课本下载完整教程:快速获取PDF教材资源

国家中小学智慧教育平台电子课本下载完整教程:快速获取PDF教材资源 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本内容。…

2026/7/5 5:06:40阅读更多 →
家庭档案数字化:OCR技术应用与实战技巧

家庭档案数字化:OCR技术应用与实战技巧

1. 家庭档案数字化的痛点与解决方案每次搬家最让我头疼的就是那几大箱纸质档案——从房产证到体检报告,从老照片到孩子成长记录,这些承载着家庭记忆的重要文件既占空间又难管理。去年梅雨季发现部分文件受潮发霉后,我终于下定决心进行彻底的数…

2026/7/5 5:06:40阅读更多 →
WhatWeb:1800 多个插件,扫一眼就知道网站用了什么技术

WhatWeb:1800 多个插件,扫一眼就知道网站用了什么技术

文章目录 WhatWeb:1800 多个插件,扫一眼就知道网站用了什么技术1、 它能识别什么2、 四档攻击性,按需切换3、 输出格式够多4、 安装和基本用法5、 性能调优6、 适合谁用 WhatWeb:1800 多个插件,扫一眼就知道网站用了什…

2026/7/5 5:06:40阅读更多 →
Audacity音频编辑:从零开始掌握专业级免费音频处理工具

Audacity音频编辑:从零开始掌握专业级免费音频处理工具

Audacity音频编辑:从零开始掌握专业级免费音频处理工具 【免费下载链接】audacity Audio Editor 项目地址: https://gitcode.com/GitHub_Trending/au/audacity 想要进行音频编辑却苦于高昂的软件费用?Audacity为您提供了完美的解决方案——这是一…

2026/7/5 5:01:40阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/5 0:01:08阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/5 0:01:08阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/5 0:01:08阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/5 0:01:08阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/5 0:01:08阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/5 0:01:08阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/5 1:30:27阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/5 3:48:10阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/5 3:48:09阅读更多 →