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

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

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

文章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) 字段命名不是非常恰当。如红色字体所看到的的processtime1processtime2processtime3,在看完之后,还不知道它们究竟是什么意思。因此,对于字段的命名,要做到直观易懂。不要让别人去猜。

        (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. 总结

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

 

 

(本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5。微信号:245924426,欢迎关注!)

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • python读取excel某一行内容_3dmax缺少外部文件怎么办

    python读取excel某一行内容_3dmax缺少外部文件怎么办python在读取Excel文件时默认会把第一行当做列名,所以导致会缺少一行。解决办法如下:加入header=None

  • 什么是ARP欺骗_ARP欺骗防范

    什么是ARP欺骗_ARP欺骗防范ARP欺骗的本质是把虚假的IP-MAC映射关系通过ARP报文发给主机,让主机把虚假的IP-MAC映射存入ARP缓存表(可能是IP地址错误,也可能是MAC地址错误),让其无法正确发送数据漏洞的根源ARP协议是无连接操作系统收到ARP请求或响应后无法确认senderMAC和senderIP真假ARP欺骗伪造网关攻击者B伪造ARP报文(senderIP地址是网关的,senderMAC地址不是网关的),发送给网段内的主机A,那么主机A就会把网关的ip地址和伪造的mac地址缓存到arp缓.

    2022年10月29日
  • PL/SQL简介_什么是SQL数据库

    PL/SQL简介_什么是SQL数据库PL/SQL

    2022年10月12日
  • 即时通讯源代码,im源码功能全套[通俗易懂]

    即时通讯源代码,im源码功能全套[通俗易懂]即时通讯源代码,im源码,im源代码即时通讯全套源码语言:C/C++语言编写,VC++开发平台产品包含完善的即时通讯系统,是一套集即时通讯和视频会议为一体的企业级办公协同交流产品,可以广泛应用于政府、企业、教育机构和公司等客户端:大致功能(具体以产品演示为准):在线文字聊天离线留言历史消息记录查询 公告消息提醒语音聊天 视频聊天群发留言 输入状态感知个…

  • 【已解决】Win10系统点击ikbc机械键盘win键无效的解决方法

    【已解决】Win10系统点击ikbc机械键盘win键无效的解决方法一、问题描述今天周一,早上一来上班,打开电脑操作一段时间后,我想按Win+L来锁屏,发现win键按了没有任何反应,只响应了L键。设备信息描述一下:系统:Windows10键盘:ikbc怎么解决它呢?二、解决问题ikbc键盘win按键失灵问题。其实是自己不小心把win键给锁定了。下面是介绍一下ikbc键盘上,锁定win键和解锁win键的方法,如下表所示:键盘款式锁定的方法解锁的方法非静音款Fn+左WinFn+右Win静音款Fn+F12F

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号