首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
h2
wordpress
gzip
transform
vb
okhttp
ruby
go
package
正则
struct
上传
rust
smtp
token
漏洞
static
mq
phpunit
touch
压力测试
upload
nginx
ftp
sms
syslog
cookie
port
crash
golang
多线程
timeout
web3
pipeline
log4j
node.js
session
cPlusPlus
php框架
curl
pip
x86
asp.net
mqtt
server
cache
织梦cms
iis
jvm
protocol-buffers
interface
phpmyadmin
mysql
grpc
gcc
lvs
router
thinkphp
caching
lavarel
nodejs
ci
timezone
dns
yii
yaf
localhost
php绘图
queue
pdo
spring
memcache
lua
c语言
frontend
swoole
php水印
爬虫
mvc
当前位置:
开发笔记
>
后端
> 正文
SQL数据库设计经验谈-mysql教程
作者:潇洒树春不_970 | 来源:互联网 | 2017-05-12 14:55
一个成功的管理系统,是由:[50%的业务+50%的软件]所组成,而50%的成功软件又有[25%的数据库+25%的程序]所组成,数据库设计的好坏是一个关键。如果把企业的数据比做生命所必需的血液,那么数据库的设计就是应用中最重要的一部分。有关数据库设计的材料汗牛充栋,大学学位课
一个成功的管理系统,是由:[50% 的业务 + 50% 的软件] 所组成,而 50% 的成功软件又有 [25% 的数据库 + 25% 的程序] 所组成,数据库设计的好坏是一个关键。如果把企业的数据比做生命所必需的血液,那么数据库的设计就是应用中最重要的一部分。有关数据库设计的材料汗牛充栋,大学学位课程里也有专门的讲述。不过,就如我们反复强调的那样,再好的老师也比不过经验的教诲。所以我归纳历年来所走的弯路及体会,并在网上找了些对数据库设计颇有造诣的专业人士给大家传授一些设计数据库的技巧和经验。精选了其中的 60 个最佳技巧,并把这些技巧编写成了本文,为了方便索引其内容划分为 5 个部分: 第 1 部分 - 设计数据库之前这一部分罗列了 12 个基本技巧,包括命名规范和明确业务需求等。 第 2 部分 - 设计数据库表总共 24 个指南性技巧,涵盖表内字段设计以及应该避免的常见问题等。 第 3 部分 - 选择键怎么选择键呢?这里有 10 个技巧专门涉及系统生成的主键的正确用法,还有何 时以及如何索引字段以获得最佳性能等。 第 4 部分 - 保证数据完整性讨论如何保持数据库的清晰和健壮,如何把有害数据降低到最小程度。 第 5 部分 - 各种小技巧不包括在以上 4 个部分中的其他技巧,五花八门,有了它们希望你的数据库开发工作会更轻松一些。 第 1 部分 - 设计数据库之前考察现有环境在设计一个新数据库时,你不但应该仔细研究业务需求而且还要考察现有的系统。大多数数据库项目都不是从头开始建立的;通常,机构内总会存在用来满足特定需求的现有系统(可能没有实现自动计算)。显然,现有系统并不完美,否则你就不必再建立新系统了。但是对旧系统的研究可以让你发现一些可能会忽略的细微问题。一般来说,考察现有系统对你绝对有好处。 定义标准的对象命名规范一定要定义数据库对象的命名规范。对数据库表来说,从项目一开始就要确定表名是采用复数还是单数形式。此外还要给表的别名定义简单规则(比方说,如果表名是一个单词,别名就取单词的前 4 个字母;如果表名是两个单词,就各取两个单词的前两个字母组成 4 个字母长的别名;如果表的名字由 3 个单词组成,你不妨从头两个单词中各取一个然后从最后一个单词中再取出两个字母,结果还是组成 4 字母长的别名,其余依次类推)对工作用表来说,表名可以加上前缀 WORK_ 后面附上采用该表的应用程序的名字。表内的列[字段]要针对键采用一整套设计规则。比如,如果键是数字类型,你可以用 _N 作为后缀;如果是字符类型则可以采用 _C 后缀。对列[字段]名应该采用标准的前缀和后缀。再如,假如你的表里有好多“money”字段,你不妨给每个列[字段]增加一个 _M 后缀。还有,日期列[字段]最好以 D_ 作为名字打头。检查表名、报表名和查询名之间的命名规范。你可能会很快就被这些不同的数据库要素的名称搞糊涂了。假如你坚持统一地命名这些数据库的不同组成部分,至少你应该在这些对象名字的开头用 Table、Query 或者 Report 等前缀加以区别。如果采用了 Microsoft Access,你可以用 qry、rpt、tbl 和 mod 等符号来标识对象(比如 tbl_Employees)。我在和 SQL Server 打交道的时候还用过 tbl 来索引表,但我用 sp_company (现在用 sp_feft_)标识存储过程,因为在有的时候如果我发现了更好的处理办法往往会保存好几个拷贝。我在实现 SQL Server 2000 时用 udf_ (或者类似的标记)标识我编写的函数。 工欲善其事, 必先利其器采用理想的数据库设计工具,比如:SyBase 公司的 PowerDesign,她支持 PB、VB、Delphe 等语言,通过 ODBC 可以连接市面上流行的 30 多个数据库,包括 dBase、FoxPro、VFP、SQL Server 等,今后有机会我将着重介绍 PowerDesign 的使用。 获取数据模式资源手册正在寻求示例模式的人可以阅读《数据模式资源手册》一书,该书由 Len Silverston、W. H. Inmon 和 Kent Graziano 编写,是一本值得拥有的最佳数据建模图书。该书包括的章节涵盖多种数据领域,比如人员、机构和工作效能等。其他的你还可以参考:[1]萨师煊 王珊著 数据库系统概论(第二版)高等教育出版社 1991、[2][美] Steven M.Bobrowski 著 Oracle 7 与客户/服务器计算技术从入门到精通 刘建元等译 电子工业出版社,1996、[3]周中元 信息系统建模方法(下) 电子与信息化 1999年第3期,1999 畅想未来,但不可忘了过去的教训我发现询问用户如何看待未来需求变化非常有用。这样做可以达到两个目的:首先,你可以清楚地了解应用设计在哪个地方应该更具灵活性以及如何避免性能瓶颈;其次,你知道发生事先没有确定的需求变更时用户将和你一样感到吃惊。
<
sql
vb
服务器
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
go
Java SpringMVC SSM 实现多模块集成:操作日志、文件管理、头像编辑、权限控制及缓存优化
本文介绍了一个基于 Java SpringMVC 和 SSM 框架的综合系统,涵盖了操作日志记录、文件管理、头像编辑、权限控制、以及多种技术集成如 Shiro、Redis 等,旨在提供一个高效且功能丰富的开发平台。 ...
[详细]
蜡笔小新 2024-12-20 19:17:47
go
深入理解 SQL 视图、存储过程与事务
本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ...
[详细]
蜡笔小新 2024-12-27 17:40:42
static
新浪笔试题
1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ...
[详细]
蜡笔小新 2024-12-27 19:32:17
vb
使用C#开发SQL Server存储过程的指南
本文介绍如何利用C#在SQL Server中创建存储过程,涵盖背景、步骤和应用场景,旨在帮助开发者更好地理解和应用这一技术。 ...
[详细]
蜡笔小新 2024-12-27 14:24:17
port
UNP 第9章:主机名与地址转换
本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ...
[详细]
蜡笔小新 2024-12-27 11:26:39
go
MySQL缓存机制深度解析
本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ...
[详细]
蜡笔小新 2024-12-26 15:15:06
port
MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ...
[详细]
蜡笔小新 2024-12-26 13:21:38
port
MySQL LAST_INSERT_ID() 函数深入解析
本文详细介绍了 MySQL 中 LAST_INSERT_ID() 函数的使用方法及其工作原理,包括如何获取最后一个插入记录的自增 ID、多行插入时的行为以及在不同客户端环境下的表现。 ...
[详细]
蜡笔小新 2024-12-25 22:04:04
port
Windows 2000 中启用 TELNET 服务时的 NTLM 验证配置
本文详细介绍了在 Windows 2000 系统中启用 TELNET 服务时需要注意的 NTLM 配置问题,帮助用户解决常见的身份验证失败错误。 ...
[详细]
蜡笔小新 2024-12-24 11:20:52
压力测试
实现高并发连接的优化方法
探讨如何通过编程技术实现100个并发连接,解决线程创建顺序问题,并提供高效的并发测试方案。 ...
[详细]
蜡笔小新 2024-12-28 09:58:40
漏洞
信息安全小组第一周工作总结
本周信息安全小组主要进行了CTF竞赛相关技能的学习,包括HTML和CSS的基础知识、逆向工程的初步探索以及整数溢出漏洞的学习。此外,还掌握了Linux命令行操作及互联网工作原理的基本概念。 ...
[详细]
蜡笔小新 2024-12-28 05:52:22
漏洞
PHP检测AJAX请求的有效方法
本文详细介绍了如何使用PHP检测AJAX请求,通过分析预定义服务器变量来判断请求是否来自XMLHttpRequest。此方法简单实用,适用于各种Web开发场景。 ...
[详细]
蜡笔小新 2024-12-27 21:20:10
upload
PHP 5.2.5 安装与配置指南
本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ...
[详细]
蜡笔小新 2024-12-27 19:05:41
ftp
路由器配置与网络地址转换
本文介绍了如何在具备多个IP地址的FTP服务器环境中,通过动态地址端口复用和地址转换技术优化网络配置。重点讨论了2Mb/s DDN专线连接、Cisco 2611路由器及内部网络地址规划。 ...
[详细]
蜡笔小新 2024-12-27 18:25:35
vb
使用M函数轻松处理Excel中的多分隔符分列问题
在处理Excel数据时,经常会遇到需要根据不同的分隔符来拆分单元格中的内容。本文介绍了一种利用M函数在Power Query中实现这一需求的方法,即使面对多种分隔符也能轻松应对。 ...
[详细]
蜡笔小新 2024-12-18 15:57:57
潇洒树春不_970
这个家伙很懒,什么也没留下!
Tags | 热门标签
h2
wordpress
gzip
transform
vb
okhttp
ruby
go
package
正则
struct
上传
rust
smtp
token
漏洞
static
mq
phpunit
touch
压力测试
upload
nginx
ftp
sms
syslog
cookie
port
crash
golang
RankList | 热门文章
1
编写Java TCP客户端(C#服务器)的最佳方法是什么?
2
com.twitter.common.zookeeper.testing.ZooKeeperTestServer.createClient()方法的使用及代码示例
3
加密你的php源代码,加密你的php源代码错误
4
华为WATCH FIT值得入手吗 华为首款方形轻智能运动手表WATCH FIT详细评测
5
家中路由器应该多久关闭一次,多亏宽带公司提醒,难怪网速慢
6
传统c语言开发,C语言系统开发
7
博客中知识点梳理
8
苹果官网序列号查询,有用吗?
9
我是惠普台式电脑.怎么进入BIOS高级设置啊.我设置电脑从USB启动,一直没找到?:惠普重要设置
10
Netty网络编程NIO基础
11
CCF CSP 2015031 图像旋转
12
Ubuntu 12.04下SSD的配置
13
MyBatis笔记04分页查询、resultMap的简单使用
14
【51nod】1006 最长公共子序列Lcs
15
惠普hp3015打印机打印时不断进纸该怎么解决?
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有