数据库范式
- 字段原子性 表设计中的所有字段都应该是原子性的 不可再分 ( 依赖主观设计 )
- 记录独立性 表数据中的所有单例记录都应该是独立可区分的 ( 依赖主键 )
- 关联数据唯一性 两表关联时 关联记录的所有字段都应该是非重复的 ( 依赖主观设计 )
例如
表1 UserInfo: 表2 GradeInfo:
T1 UserInfo | ID |
Name | Age | Sex | T2 GradeInfo | ID | UID | UName | Grade | Class | |
1952 | James | 18 | Male | 3200 | 1952 | James | 7 | 2 |
如上 已经用UID和ID进行关联后 不应有UName字段 造成数据冗
数据库优化
- 在经常检索的字段上(select * from Person where Name=@Name)使用索引提高查询速度
- select 中只列出必要的字段,而不是*
- 避免隐式类型转换造成的全表扫描 在索引上使用函数也会造成全表扫描(因为索引只是为字段建立的,一旦使用表达式或者函数,那么索引就是失效了,当然也可以使用“函数索引”、“表达式索引”解决这个问题),使用索引不一定能提高查询速度
- 避免在索引列上使用计算(where Name+'A'=@MyName)
- 附 : 不进行无意义优化,根据性能查看器的报表,对最耗时的 SQL 进行优化。