文档章节

数据库--转载

hxf10047
 hxf10047
发布于 2015/12/23 17:02
字数 899
阅读 19
收藏 3

转载专家的:::写的不错--“http://rensanning.iteye.com/blog/2261645”

首先要了解RDBMS vs. NoSQL、OLTP vs. OLAP的区别,然后要掌握以下必备知识,也可以Google一下“Database Best Practices”看看别人的经验总结。 

必备理论知识 

  • 范式:Database Normalisation

  • 反模式:Database Anti-Patterns/Denormalization

  • 分库分表:Shard(Partition)

  • 数据冗余:Data Redundancy

  • 科德十二定律:Codd's 12 Rules

命名规则 (Naming Conventions) 

0)基本规则 

全部小写

下划线分割单词(只使用字母,数字和下划线)

避免使用数字

避免使用保留字/关键字

名称要简单且具有描述性

1)表名 

表名用单数

2到3个单词

最长30字符

避免缩写简写(如果单词很长可以使用常用简写比如i18n)

关联表使用相同前缀单词 比如:activity_status, activity_type

避免无意义的前缀(t_、tbl_、TB_、VW_、SP_)

避免应用名前缀(MyApp_User、MyApp_Teams)

--migration用的schema_version表(当前版本,最近更新时间等) 

--编码表/字典表/全局设置表(国家、城市、货币等) 

2)字段名 

是否应该全数据库唯一?

标示表的前缀?

单字段主键最好用id

外键字段<TableName>_id

日期字段xxx_date

时间字段xxx_time

布尔字段is_xxx 或 has_xxx

避免数据类型后缀(name_tx、date_dt)

--合理选择数字Number、时间Date的类型 

--不要存储图像等blob数据(必须的话不要放入频繁访问的表中) 

--合理设置列的宽度(使用英语以外的语言时考虑编码) 

--用UTC的方式存储日期与时间 

--常用字段(ID、状态、删除标志、创建者、创建时间、更新者、更新时间) 

--姓名字段考虑外国人时要分开 

--主键最好为整型值 

--越少越好(表的个数、字段个数、主键的字段个数) 

--在冗余和速度之间找平衡 


以下是一些设计时常见的数据结构: 


(一)可扩展的数据模型 Extensible Data Modeling 

http://www.slideshare.net/billkarwin/extensible-data-modeling 

避免ALTER TABLE,常用于:CMS、EC。 

1)预留字段Extra Columns 

2)属性表Entity-Attribute-Value 

3)序列化字段Serialized LOB & Inverted Indexes(XML/JSON/YAML等) 

4)表继承Class Table Inheritance 

需要权衡以下内容: 

灵活性Flexible、检索Select、过滤Filter、索引Indexed、数据类型DataTypes、约束Constraints(NOT NULL、外键、唯一约束等)。 


(二)基于角色的访问控制 RBAC(Role-Based Access Control) 

用于用户权限管理:用户Users、用户组Groups、角色Roles、目标Objects、访问模式Access Mode、操作Operator。 

http://rongxh2010.iteye.com/blog/930648 


(三)层次数据 Hierarchical Data 

用于分类、组织、文件夹等。 

动态菜单Dynamic Menus的设计。 

http://www.slideshare.net/billkarwin/models-for-hierarchical-data 

http://www.slideshare.net/ehildebrandt/trees-and-hierarchies-in-sql 

http://www.sitepoint.com/hierarchical-data-database/ 


(四)ID/PK的生成策略 

http://rensanning.iteye.com/blog/2149685 


(五)密码的存储 Password 

http://stackoverflow.com/questions/1054022/best-way-to-store-password-in-database 


(六)多语言 Multi-Language 

多个表,多个字段、多个记录、额外的表 

http://www.cnblogs.com/studyzy/archive/2013/04/03/2998322.html 

http://stackoverflow.com/questions/316780/schema-for-a-multilanguage-database 


(七)标签 Tags 

http://tagging.pui.ch/post/37027745720/tags-database-schemas 


(八)历史数据 Historical/Archive/AuditTrail 

Row级别、Column级别、Log表(操作日志,登录日志) 

http://www.codeproject.com/Articles/105768/Audit-Trail-Tracing-Data-Changes-in-Database 

http://database-programmer.blogspot.com/2008/07/history-tables.html 


(九)工作流 Workflow 

http://www.exceptionnotfound.net/designing-a-workflow-engine-database-part-1-introduction-and-purpose/ 


(十)信息流/通知 Feeds/Notification/Message 

http://highscalability.com/blog/2013/10/28/design-decisions-for-scaling-your-high-traffic-feeds.html 


其他 

下次自动登录Remember Me

邀请码 Invite Code

第三方登录 Third-Party Signin


比较早的一份数据库设计指南TechRepublic database design guide,主要针对Access的,可以用来参考。


© 著作权归作者所有

hxf10047
粉丝 1
博文 26
码字总数 11602
作品 0
高级程序员
私信 提问
第一次安装Oracle10后不能登陆问题的解决以及nolog的区别以及建库语句

一、常用Oracle 账号初始密码 scott 密码是 tigersys 密码是 changeoninstallsystem 密码是 managersysman 密码是 oemtemp 其中直接管理模式可以为sysdba的为后面三个,要是集群的话再去掉s...

Oscarfff
2016/01/04
132
0
MySQL数据库架构的演化观察

MySQL数据库架构的演化观察 系统技术非业余研究2017-12-133 阅读 数据库mysql 原创文章,转载请注明: 转载自 系统技术非业余研究 本文链接地址: MySQL数据库架构的演化观察 AS北京2017-余锋...

系统技术非业余研究
2017/12/13
0
0
ylb: 数据库操作方法基础

数据库操作方法基础。 ----------试图操作(view)-----------------------创建视图create view titles_viewasselect title,type from titles--调用视图select * from titles_view--删除视图d......

吞吞吐吐的
2017/10/18
0
0
activiti uuid主键

1.1.1. activiti默认主键生成方式 分享牛原创(尊重原创 转载对的时候第一行请注明,转载出处来自分享牛http://blog.csdn.net/qq_30739519) activiti中默认的主键生成的方式是:每次从activit...

分享达人
2016/05/04
0
0
Unity网络交互丨Unity Web弱联网的实现

版权声明:欢迎转载,转载请注明出处 https://blog.csdn.net/weixin_38239050/article/details/84730095 Unity界面实现效果: 上两行:输入用户名、密码 注册:将输入的用户名、密码发送到数...

橙子va
2018/12/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java的战争

本文来自微信公众号: 金捷幡(ID:jin-jiefan) ,作者:金捷幡,封面:拉里·埃里森(东方IC) 2019年5月,彻底撕破脸的特朗普掀起对华为的战争,谷歌被迫吊销了华为的Android授权。开源软...

Java领航员
今天
6
0
超详细的LM3414MRX/NOPB规格参数介绍就在这里

超详细的LM3414MRX/NOPB规格参数介绍就在这里 描述 LM3414和LM3414MRX/NOPB是具有1-A 60 W(1)共阳极功能的恒流降压LED驱动器。它们适用于驱动单串3-W HBLED,效率高达96%。它们可接受4.5...

不能吃肉的仙女
今天
2
0
Eclipse国内镜像源配置方法

Table of Contents 我们在国内从官网下载Eclipse以及插件非常慢,那么,有没有方法变快呢? 有,那就是使用国内的公开镜像源替换官方源。 1 下载Eclipse 首先,我们看一个链接地址: http:/...

求神
今天
7
0
java 请求服务

一.第一种基于java web http 请求服务,必须用tomcat 容器启动才能对外提供服务 在maven 工程中pox 文件导入jar <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>h......

zaolonglei
今天
6
0
HDFS工作机制——自开发分布式数据采集系统

需求描述: 在业务系统的服务器上,业务程序会不断生成业务日志(比如网站的页面访问日志) 业务日志是用log4j生成的,会不断地切出日志文件,需要定期(比如每小时)从业务服务器上的日志目...

须臾之余
今天
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部