为数据库表和列取好名字(转)
其实在数据库中创建对象时,管理员也要对其进⾏命名。⼀些有经验的数据库管理员,对其命名也会⼩⼼翼翼。既要能够叫的响亮,⼜要能够代表具体的应⽤场景。有时候对表等数据库对象进⾏命名的时候,可能⽐维护数据库还要伤脑筋。笔者对此就有⾮常深的感受。在数据库设计的时候,⼀套命名规则编制下来,脑袋就会觉得很累。不过等⼤家多编制⼏套后,就会掌握其中的规律。熟能⽣巧,掌握了规律再去取名的话,就会简单许多。有时候甚⾄可以信⼿拿来。笔者这次就跟⼤家分享⼀下对数据库对象进⾏命名的⼀些规律。简单起见,笔者以数据库对象表为例,谈谈命名的⼀些技巧。
⼀、牢记命名空间
在Oracle数据库中,跟其他的数据库不同,有⼀个叫做命名空间的概念。在同⼀个命名空间中,其名字不可以重复。如表与视图就共享同⼀个命名空间,为此就要求不仅表的名字不能够相同,⽽且表的名字与视图的名字也不能够相同。因为他们处于同⼀个命名空间。类似的,表与函数也是同处于⼀个表空间,为此他们也不能够同名。不过表与索引、表与约束等等却属于不同的命名空间。也就是说,表的名字可以与约束的名字相同。所以说,数据库管理员在给表等对象命名的时候,⼀定要了解哪些对象共享同⼀个名称空间。如果在同⼀个名称空间内的,即使对象不同(如视图与表),但是他们仍然不能够取相同的名字。
为了避免同⼀个命名空间内重名的现象,笔者建⽴在命名的时候最好能够根据对象的不同加上对象的固
有前缀。如⼤部分的数据库管理员,在给表取名的时候,⼀般不会给表名前⾯加上表对象的前缀。但是在定义函数或者视图对象的时候,则会加上前缀。如在函数前⾯可能会加上FN的前缀,⽽在视图前⾯可能会加上vi的前缀。如此的话,在同⼀个命名空间内也不⽤担⼼对象重名的问题。不过⽆论怎么说,这个命名空间的概念数据库管理员必须牢记。即使在实际的⼯作中,可以通过前缀等⼿段轻易的避免这个陷阱,但是在Oracle数据库管理员的认证考试中,这个命名空间也是⼀个必要的知识点。所以⽆论从实际的⼯作还是认证考试的需要,对于这个命名空间管理员都必须要有⼀个清晰的认识。
⼆、表名⼤⼩写的控制
⼀般情况下Oracle 数据库中的表名或者列名是不区分⼤⼩写的。在创建表或者列的时候,即使管理员采⽤了⼩写的名字,数据库在将其保存到数据字典之前,会先将其转换为⼤写,再将他们保存到数据字典中。这也就是为什么我们命名使⽤⼩写的⼦母命名,但是下次查看表的名字的时候,却变成了⼤写。
oracle数据库怎么查询表 虽然说Oracle 数据库中表与列等数据库对象对于⼤⼩写是不敏感的,但是如果数据库管理员确实有需要要让数据库系统对表的名字区分⼤⼩写,这也是可以做到的。通常情况下,如果把名字使⽤双引号括起来,则在Oracle数据字典中就会成为区分⼤⼩写的名字。不过笔者这⾥要提醒各位数据库管理员,虽然说从技术上可以让数据库系统强制取分⼤⼩写,但是在实际⼯作中,包括在内的绝⼤部分数据库管理员可能都不建议这么做。因为如果有混合的⼤⼩写存在,那么在引⽤这些表或者列名称的时候就需要特
别的⼩⼼。因为即使⽤户或者数据库管理员有着过⽬不忘的本领,也很难准确的记住这些名称的⼤⼩写歌时。如果数据库管理员硬要这么做的话,那么很可能是⾃寻烦恼。在查询时或者其他作业时,要严格区分⼤⼩写那是⼀件很头疼的事情。为此,对于这个⼤⼩写的控制,笔者建议数据库管理员要谨慎使⽤。除⾮有充分的理由,否则的话,不要轻易使⽤这个双引号来控制⼤⼩写。
这个双引号不仅可以⽤来控制⼤⼩写,还有⼀个⽐较特殊的作⽤,就是⽤引⽤⼀些特殊的字符。如在建⽴表格的时候,需要设置⼀个名牌号的字段。有些数据库管理员习惯使⽤num#类似的名称。这不会违反数据库的命名规则。不过在处理的时候会⽐较⿇烦。如利⽤create 语句建⽴表格的时候,需要给这个字段名称加上双引号。否则的话,执⾏这条语句的时候,数据库会拒绝执⾏并向⽤户提⽰错误信息。类似的特殊符号还包括⼀个$美元符号。他们在建⽴表格的时候,在语句中都需要使⽤双引号。不过字段建⽴好之后,在引⽤这些对象的时候,不需要使⽤双引号了。同理,虽然Oracle数据库⽀持这些特殊符号,但是笔者不⿎励数据库管理员在表或者列的命名中采取这些特殊的符号。这有可能给后续的引⽤带来不必要的⿇烦。
三、在表、索引、约束、列之间设置密切的联系
在创建表的同时,可以给表中的某些列添加索引、约束等等。如在员⼯信息表中,会设置员⼯编号唯⼀性约束。在创建约束的时候,也需要对约束进⾏命名。虽然说也约束与表、列不属于同⼀个命名空间,
所以在取名的时候基本上没有限制。但是为了后续使⽤的⽅便,笔者对约束的命名还有⼀个⼩⼩的建议。简单的说,就是给⼀个与表直接有关的其他对象具有该表的名字是⼀种好的做法。如现在有⼀张⽤户表名字叫做ad_user(在表名前⾯⼀般不加对象名,但是可以根据应⽤软件的模块设计加上模块的前缀),这种表中有⼀个字段叫做叫做value,⽤来存储员⼯的编号。在表设计的时候,需要给这个字段加⼀个索引。那么这个索引的名字就可以取名为 IDX_USER_VALUE(也就是索引前缀+表名+字段名的形式)。这么做有什么好处呢?⼀是可以确保相关对象的名字不会重复。因为表的名字不会重复,所以将表的名字与列的名字⼀起组成某个对象的名字,那么其重复的⼏率可以说基本上没有。⼆是⽅便管理员阅读、理解、维护等等。⼀看到索引或者约束对象的名字时,就可以看到这个是索引或者约束是⽤在哪个表的那个字段上的。⽽且也可以知道这个约束是唯⼀性约束还是检查约束;索引时主键索引还是外键索引。给数据库管理员⼀⽬了然的感觉。这对于后续的维护、升级、调整、引⽤等等都提供了⽅便。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论