新葡亰496net 新葡亰编程 如何创建合理的数据库表?

如何创建合理的数据库表?



添加字段

澳门葡亰娱乐场手机版,转载请声明出处,尊重版权。

在创建数据库表之前,首先要考虑清楚以下几点:

此时我们就考虑是否添加索引、联合索引。

索引的形式

索引是以一定数据格式存储数据的查找路径的数据形式。

1、程序要实现哪些功能?

规划好整体功能模块,例如我要做一个任务系统,那么需要这些功能:我接收的任务,我发布的任务,创建任务,编辑任务,删除任务,搜索任务,数据统计,用户管理,任务类型管理,客户管理,管理员管理,系统设置。

删除字段

这里举个例子:

最典型的就是图书馆找一本书,我们可以通过 “文学” -> “当代” ->
“散文”
来缩小我们要找某一本书的范围。那么在这里书本的大分类、时代、小分类,就可以作为找书本的索引。

澳门葡亰娱乐场手机版 1

省份索引例子图-图1

2、细化每个功能,设计功能页面,或者写出静态页面

这一步设计或者写静态页面,是程序最终的一个表现形态。

此时我们应该考虑联合索引被删除。假如字段 A、B、C
建立联合索引,此时我们删除字段
C,就会将整个索引删除,而不是将联合索引调整为
A、B,若有必要,我们应考虑为 A、B 增加联合索引。

索引的开销

索引很消耗资源,不添加不必要的索引。这里是因为,索引是以树结构来存储的,为了加快检索的效率,减少查询的次数,mysql需要保证这个树的平衡,而这需要花销比较多的资源和时间。

对于写:索引的更新往往是最主要的开销。新葡亰,那么,对于写异常频繁的业务,我们可以考虑删除索引这种非常规的手段。

对于读:索引会占用内存跟硬盘空间。占用内存和硬盘的同时,也加快了检索的速度,典型的以空间换时间的做法。

3、设计数据库

根据前两个步骤,考虑数据库设计:
a、需要创建几张表?
b、每张表需要哪些字段?
存在一对多关系的表,先建立好主从表中必备字段,然后考虑优化搜索需要用到的字段
c、每个字段是否有默认值?
d、主键是什么?
一般主键都只有一个,联合主键很少使用
e、是否需要建立索引?
主键字段默认是唯一索引。
如果需要建立非聚集索引(非唯一索引):
本着尽可能少的建立索引的原则,我们去考虑索引字段。
因为索引能够提升搜素效率,但是会影响写操作的效率,因为每次写操作,都会更新索引表。

字符串索引

1.本质上没差别,“AAAA” < “AAAB”(collation)
2.LIKE是特殊的范围查询
3.LIKE “ABC%”
等同于“ABC[LOWEST]”<KEY<“ABC[HIGHEST]”,由于前缀确认,可以使用索引
4.LIKE “%ABC”无法使用索引

建索引有几条原则:

假如有学校、班级和学生,schoolid、banji、xuesheng三张表。
School:schoolid、name
Banji有字段:banjiid schoolid bjname
Xuesheng有字段:id schoolid banjiid name age

Innodb索引

1.数据按主键聚集。也就是说,根据主键可以直接获取数据。
2.主键隐藏添加在所有索引的后面,也就是说 KEY(A)等同于KEY(A,ID)

1、目前记录数量在100条以下,禁止建立索引。

数据查找

下面语句可以使用索引 (LAST_NAME)

SELECT * FROM EMPLOYEES WHERE LAST_NAME=“Smith”

下面语句可使用索引 (DEPT,LAST_NAME)

SELECT * FROM EMPLOYEES WHERE LAST_NAME=“Smith” AND DEPT=“Accounting”
2、有关联关系,且经常要被where筛选的字段要加索引。如:Banji中schoolid字段,Xuesheng中schoolid、banjiid字段
标签:

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图