一、 掌握基础概念
1. Catalog (Database)
将不同类别的数据保存在不同的Catalog(数据库)中。
原因:每个Catalog的重要性或要求等不同,便于对各个Catalog进行个性化管理(所在物理位置(是普通硬盘还是RAID),最大磁盘空间,日志大小等);避免命名冲突;安全性更高(如人力资源部门的人访问人力资源数据库,销售人员访问有业务数据库);便于分布部署。
缺点:信息孤岛;同步问题。
主要是考虑是否需要在数据库一级分割企业数据(如在SaaS中)。
2. 表
将不同类型的资料存放到不同的“区域”中。
3. 列
以标准的格式保存数据,每个列描述数据的一个特性。
4. 数据类型
规范数据之用,另外可提高效率(如123456789存为整型比存为文本占用空间少),能够确定对数据进行操作所需要的正确处理方式(如 "+" 操作对数字而言是假发,对文本而言是串接)。
5. 记录
即“行”,代表一个具体实体或一个具体关系。
6. 主键
能唯一标识一行记录的字段(集)。
两种常用的主键策略:业务主键(业务数据中的某个字段),逻辑主键(代理主键,没有意义的不重复值)。
业务主键:简单,有意义。但不能真正确保唯一性,而且作为主键的数据一旦发生变化就会带来维护的问题。如如果采用身份证号标识一个人,由于身份证号可能重复,此时不能插入数据,另外主键一般也做外键,如果以后身份证号位数升级,那么工资表中的外键(引用身份证号)也得跟着变化。
逻辑主键:可以确保不重复,但没有实际意义。常用的主键生成策略有:自动增长字段和UUID。前者速度快,但进行表合并时可能会造成主键冲突。后者速度慢,但能确保唯一。
7. 索引
当对某一列进行索引时,该列的所有值连同其所在位置(即表的哪一行)被保存在索引中。索引以索引列进行排序。
优点:提高查询速度。
缺点:占用空间,每次插入和删除操作都需更新索引,写操作性能降低。
8. 表关联
将两张表通过字段关联起来,使数据中的数据不在互相孤立。
二、了解主流数据库的SQL语法差异
我们目前主要使用的数据库为SQL SERVER,但很多小型应用采用免费的MySQL,大型应用采用Oracle。因此有必要了解它们在语法上的差异。
1. 数据类型的差异
整型,数值类型,字符类型,日期时间类型,二进制类型。
2. 运算符的差异
如字符串的拼接.
3、函数的差异
此方面差异最大,主要有数学函数,字符串函数,日期时间函数,类型转换,空值处理等。
4. 常用SQL的差异
如限制结果集行数,删除索引等
5. 取元数据信息的差异
数据库的名称,当前用户名,数据库中的表,指定表的字段定义等,这些信息称为元数据。
消除差异性的方案:
1. 为每种数据库编写不同的SQL语句。
2. 使用语法交集。
此种方法限制了某些高级数据库的高级功能。
3. 使用SQL实体对象
4. 使用ORM工具
如SubSonic。
5.使用SQL翻译器