前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >让你提前知道软件开发(27):创建数据库表和索引

让你提前知道软件开发(27):创建数据库表和索引

作者头像
全栈程序员站长
发布2022-07-06 10:09:05
3400
发布2022-07-06 10:09:05
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是全栈君。

文章2部分 数据库SQL语言

数据库表及索引的创建

数据表(或称),是数据库最重要的组成部分之中的一个。数据库仅仅是一个框架。数据表才是事实上质的内容。举个样例来说,数据库就像是一座空旷的房子。而数据表是里面的家具,没有家具的房子仅仅是一个空壳而已。依据信息的分类情况,一个数据库中可能包括若干个不同用途的数据表。

表结构有简单、有复杂,这就对开发者提出了要求。

怎样设计一个表的字段才是最好的?表的字段怎样命名?怎样定义表字段的类型?怎样建立索引?等等。

1. 改动之前的建表脚本

在作者从事过的某项目中,有一个建表脚本(基于Sybase数据库)样比例如以下:

— XXX

create table tb_XXX

(

AAA varchar(30) not null, — AAA

BBB int not null, — BBB

. . . . . .

. . . . . .

processtime1 varchar(24) default(”) null, — yyyy.mm.dd hh24:mi:ss

processtime2 varchar(24) default(”) null, — yyyy.mm.dd hh24:mi:ss

processtime3 varchar(24) default(”) null, — yyyy.mm.dd hh24:mi:ss

. . . . . .

nextprocesstime varchar(24) default(”) not null, — yyyy.mm.dd hh24:mi:ss

. . . . . .

)

go

create unique index idx1_tb_XXX on tb_XXX(AAA)

create index idx2_tb_XXX on tb_XXX(BBB)

go

能够看出,以上的建表脚本至少存在下面问题:

(1) 字段命名不是非常恰当。如红色字体所看到的的processtime1、processtime2、processtime3,在看完之后,还不知道它们究竟是什么意思。因此,对于字段的命名,要做到直观易懂。不要让别人去猜。

(2) 时间字段的默认值为空

如红色字体所看到的的nextprocesstime字段,其默认值为空。一般而言。对于数据库建表脚本中的时间字段。如无特殊用途,其默认值最好设置为当前时间。

(3) 建立的索引数目过少,且在时间字段上面未建立索引。在表中非常多个字段,而仅仅建立了两个索引,个数偏少,可考虑添加索引数目。此外,表中有多个时间字段,但未在其上面建立索引。要求仅仅要在表中出现了时间字段,都要考虑在其上建立索引。

2. 改动之后的建表脚本

改动之后的脚本样比例如以下:

— XXX

create table tb_XXX

(

AAA varchar(30) not null, — AAA

BBB int not null, — BBB

. . . . . .

. . . . . .

firstprocesstime varchar(24) default(”) null, — yyyy.mm.dd hh24:mi:ss

secondprocesstime varchar(24) default(”) null, — yyyy.mm.dd hh24:mi:ss

thirdprocesstime varchar(24) default(”) null, — yyyy.mm.dd hh24:mi:ss

. . . . . .

nextprocesstime varchar(24) default convert(varchar,getdate(),102)+’ ‘+convert(varchar,getdate(),108) not null, — yyyy.mm.dd hh24:mi:ss

. . . . . .

)

go

create unique index idx1_tb_XXX on tb_XXX(AAA)

create index idx2_tb_XXX on tb_XXX(BBB)

create index idx4_tb_XXX on tb_XXX(nextprocesstime)

go

改动的地方如红色字体所看到的。与之前的脚本相比,改动了nextprocesstime字段的默认值,将索引数目添加到3个,在时间字段上建立了索引。

此外,依据一般的经验,大表索引个数不超过5个,索引最大字段数不超过4个。

3. 总结

表是数据库中最重要的数据结构之中的一个。在创建表的过程中,一定要遵循命名规范、信息准确、索引恰当等原则。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/117297.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年1月8,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档