您好,欢迎光临有路网!
SQL编程风格(图灵程序设计丛书)(Joe Celko's SQL Programming Style)
QQ咨询:
有路璐璐:

SQL编程风格(图灵程序设计丛书)(Joe Celko's SQL Programming Style)

  • 作者:(美国)(Joe Celko)塞科 者 米全喜
  • 出版社:人民邮电出版社
  • ISBN:9787115185822
  • 出版日期:2008年01月01日
  • 页数:194
  • 定价:¥39.00
  • 分享领佣金
    手机购买
    城市
    店铺名称
    店主联系方式
    店铺售价
    库存
    店铺得分/总交易量
    发布时间
    操作

    新书比价

    网站名称
    书名
    售价
    优惠
    操作

    图书详情

    内容提要
    《SQL编程风格》针对数据库的设计与编程提出了一系列规则和建议,内容涵盖命名规范、代码版式、键的设计、数据编码方案、编码风格、视图和存储过程的使用以及SQL 中的思考方式和一些试探法等多方面。这些规则都给出了原理说明和例外情况,并列举了大量示例。通过阅读《SQL编程风格》,读者可以加深对SQL 思维方式的理解,改善SQL 编程风格,并编写出可读性强、可移植且易于维护的SQL 代码。此外,书中的规则对于公司内部制定编程规范也具有很好的借鉴作用。
    《SQL编程风格》适合数据库管理人员和开发人员阅读,也可作为高等院校计算机专业师生的参考教材。
    文章节选
    第1章 名称与数据元素
    1.1 名称
    以前,每个程序员都有一套自己的命名规范。但是,他们常常都太有创造性了。我特别喜欢举的一个例子是,有一个人使用某类主题词作为他的COBOL段名:一段程序可能使用**名,另外一段可能使用花卉,等等。即使就程序员而言,这显然也是很奇怪的行为,但是很多程序员的个人命名系统只有他们自己明白,别人都无法理解。
    例如,我使用的**个FORTRAN版本只允许6个字母的名称,所以我变得善于使用和发明6个字母的��称。开始编程时使用弱类型或无类型语言的程序员们都喜欢使用匈牙利表示法(参见Leszynski和Reddick)。老的习惯很难放弃。
    当软件工程变成规范后,每个公司都制定了自己的命名规范,并使用某种数据字典实施这些规范。使用*广泛的一套规则可能要算是由美国国防部建立的MIL STD8320.1,但它在联邦政府之外却从未流行起来。这与先前缺乏有效组织的体系相比,已经有了很大进步,但是每个公司都有很大的不同:有些对于名称构造有正式的规则,而另外一些则只是将赋予数据元素的**个名称登记一下。
    现在,我们有了ISO-11179标准,它正变得越来越普遍,是某些政府工作所需要的,并且正在被放入到数据储存库产品中。一些工具和大量标准化编码方案也被放入到了这个标准中。考虑到这一点,并考虑到XML是一种标准交换格式,ISO-11179在今后将成为元数据参考的方法。 本书不是一本SQL入门书。真的,如果你需要的是学习如何使用SQL进行编程,有其他更好的书。本书应该是你买的第二本书,而不是**本。
    本书假设你已经能够编写一定水平的SQL,并且希望进一步提高。如果你想要学习SQL编程技巧,可以买一本我编写的Joe Celko's SQL FOR Smarties(2005年第3版)①。在本书中,我想教给读者的,是如何以逻辑和说明性的方式编程,而不是以过程化或面向对象的方式--也就是要“用查询的思维看数据库”②。
    绝大多数sQL程序员都是在有了几年的过程化语言或面向对象语言编程经验之后才开始接触SQL的。他们拿到某个SQL产品,然后只能自学,使用的书都是“sQL forBrain-Dead Morons(SQL傻瓜书)”、“Le锄SQL in ten:Easy Lessons or Five Hard Ones(用10节容易的或5节复杂的课程学会SQL)”或其他更烂的书。
    这太荒唐了!成为熟练的木匠或厨师都至少需要5年。为什么你会相信人们在一个**内就能变成SQL高手?他们会变成糟糕的SQL程序员,只会使用本地SQL产品中的方言,并带有他们从前使用的编程语言的浓重口音。你可能需要读一下Peter Norvig写的“Treach Yourself Programming in Ten Years”一文(www.norvig.com/21-days.html)或Fred:Brooks写的“No SilverBullets”(Computer,20(4):10.19,1987年4月),以了解真实情况。
    可怕的是这些人常常不知道自己是拙劣的程序员。一个**情况是,整个公司的人都做得很差,他们从来没有见过高手。
    目录
    第1章名称与数据元素
    1.1名称
    1.1.1注意名称长度
    1.1.2在名称中避免使用所有特殊字符
    1.1.3避免使用引号分隔标识符
    1.1.4实施大写规则以避免大小写区分问题
    1.2遵循ISO-11179标准命名规范
    1.2.1SQL的ISO-11179
    1.2.2抽象级别
    1.2.3避免使用描述性前缀
    1.2.4制定标准化的后缀
    1.2.5表和视图名称应当是遵循业界标准的、集合、类或复数名称
    1.2.6相关名基本上也要遵循与其他名称相同的命名规则
    1.2.7关系表名应当是常用描述术语
    1.2.8元数据模式访问对象的名称可以包含结构信息
    1.3命名数据元素时遇到的问题
    1.3.1避免模糊名称
    1.3.2避免名称在不同的地方改变
    1.3.3不要使用专有暴露的物理定位符

    第2章字体、标点和间距
    2.1版式与代码
    2.1.1名称中只使用大小写字母、数字和下划线
    2.1.2列名、参数和变量等标量小写
    2.1.3模式对象名首字母大写
    2.1.4保留字大写
    2.1.5避免使用驼峰命名法
    2.2单词间距
    2.3遵循规范标点规则
    2.4使用完全保留字
    2.5如果在使用的SQL产品中有标准保留字,就不要使用专有保留字
    2.6如果有标准语句,就不要使用专有语句
    2.7疏排版面的隔空白道和垂直间距
    2.8缩进
    2.9使用行间距将语句分组

    第3章数据定义语言
    3.1将默认值放到合适的地方
    3.2默认值的类型应当与列的类型相同
    3.3不要使用专有数据类型
    3.4将PRIMARY KEY声明放在CREATE TABLE语句的开头
    3.5将列按照逻辑顺序排列并按照逻辑组聚合
    3.6将参考约束和操作在数据类型下面缩进
    3.7在产品代码中为约束命名
    3.8将CHECK()约束放在所检查的内容附近
    3.8.1对数值考虑使用范围约束
    3.8.2对于字符值考虑使用LIKE和SIMILAR TO约束
    3.8.3时间值是有长短的
    3.8.4避免使用REAL和FLOAT数据类型
    3.9将多列约束尽可能靠近这些列
    3.10将表级别的CHECK()约束放到表声明的*后
    3.11对多表约束使用CREATE ASSERTION
    3.12使CHECK()约束的目的**
    3.13每个表都必须有键才能称为表
    3.13.1自动编号不是关系型键
    3.13.2文件不是表
    3.13.3键的属性
    3.14不要分割属性
    3.14.1分割为多个表
    3.14.2分割为多个列
    3.14.3分割为多个行
    3.15不要对RDBMS使用面向对象的设计
    3.15.1表不是对象实例
    3.15.2对RDBMS不要使用EAV设计

    第4章尺度与测量
    4.1测度论
    4.1.1范围与颗粒度
    4.1.2范围
    4.1.3颗粒度、准确度和精度
    4.2尺度类型
    4.2.1名义尺度
    4.2.2种类尺度
    4.2.3**尺度
    4.2.4顺序尺度
    4.2.5级别尺度
    4.2.6间距尺度
    4.2.7比例尺度
    4.3使用尺度
    4.4尺度转换
    4.5导出单位
    4.6标点与标准单位
    4.7在数据库中使用尺度的一般准则

    第5章数据编码方案
    5.1不好的编码方案
    5.2编码方案类型
    5.2.1枚举编码
    5.2.2测量编码
    5.2.3缩写编码
    5.2.4算法编码
    5.2.5层次编码
    5.2.6向量编码
    5.2.7拼接编码
    5.3设计编码方案的一般准则
    5.3.1现有的编码标准
    5.3.2允许扩展
    5.3.3使用显式的丢失值避免NULL
    5.3.4为终端用户转换编码
    5.3.5在数据库中保存编码
    5.4多字符集

    第6章编码选择
    6.1选择标准构造,不要选择专有构造
    6.1.1使用标准OUTER JOIN语法
    6.1.2中缀INNER JOIN和CORSS JOIN语法是可选的,但是很好用
    6.1.3使用ISO时间语法
    6.1.4使用标准和可移植的函数
    6.2选择紧凑格式,不要选择松散格式
    6.2.1避免使用多余的括号
    6.2.2使用CASE系列表达式
    6.2.3避免使用冗余表达式
    6.2.4寻找紧凑格式
    6.3使用注释
    6.3.1存储过程
    6.3.2控制语句注释
    6.3.3对子句的注释
    6.4避免优化器提示
    6.5触发器的优先级不应当高于DRI操作
    6.6使用SQL存储过程
    6.7避免在数据库中使用用户定义函数和扩展
    6.7.1多语言问题
    6.7.2可移植性问题
    6.7.3优化问题
    6.8避免使用过度的辅助索引
    6.9避免使用关联子查询
    6.10避免使用UNION
    6.11测试SQL
    6.11.1测试NULL所有可能的组合
    6.11.2检查并测试所有的CHECK()约束
    6.11.3注意字符列
    6.11.4测试大小

    第7章如何使用视图
    7.1视图的命名规范与表一样
    7.2视图提供行和列级别的**性
    7.3视图确保了有效访问路径
    7.4视图对用户隐藏了复杂性
    7.5视图确保了正确的数据派生
    7.6视图将表和/或列重新命名
    7.7视图实施复杂的完整性约束
    7.8可更新的视图
    7.8.1WITH CHECK OPTION子句
    7.8.2INSTEAD OF触发器
    7.9每个视图都要有创建的原因
    7.10避免视图的数量快速增长
    7.11将视图与基表同步
    7.12不恰当地使用视图
    7.12.1用于域支持的视图
    7.12.2单个解决方案的视图
    7.12.3不要为每个基表都创建视图
    7.13学习使用物化的视图

    第8章如何编写存储过程
    8.1大多数SQL 4GL都不是用于应用程序的
    8.2基本软件工程
    8.2.1内聚
    8.2.2耦合
    8.3使用传统的结构化编程
    8.4避免可移植性问题
    8.4.1避免创建临时表
    8.4.2避免使用游标
    8.4.3面向集合的构造优于过程化代码
    8.5标量与结构化参数的对比
    8.6避免使用动态SQL
    8.6.1性能
    8.6.2SQL注入

    第9章试探法
    9.1将规格说明表达为清晰的语句
    9.2在名词的后面加上“……的集合”
    9.3从问题语句中删除行为动词
    9.4仍然可以使用存根
    9.5不要担心数据的显示
    9.6**次尝试需要特别处理
    9.6.1不要舍不得扔掉你对DDL的**次尝试
    9.6.2保存你对DML的**次尝试
    9.7不要以方框和箭头的方式思考
    9.8画圆圈和集合图
    9.9学习方言
    9.10假设WHERE子句是“巨型变形虫”
    9.11使用新闻组和因特网

    第10章以SQL的方式思考
    10.1不好的SQL编程方式与过程化语言
    10.2把列当作字段思考
    10.3以过程化而不是说明性的方式思考
    10.4模式应该看起来像输入格式
    附录A资源
    附录B参考文献
    索引
    ……
    编辑推荐语
    ***大师的SQL编程规范,讲述如何编写标准、**、易于维护的SQL代码,教你像**的SQL程序员那样思考。
    数据库作为现代软件应用的核心之一,正在发挥越来越重要的作用。很自然地,SQL在广大程序员的日常工作中也成了不可或缺的技术。学会SQL并不难,但是要成为**的SQL程序员就绝非易事了。大部分程序员都是在学习并从事了过程化或面向对象编程之后才转到SQL。因此往往带有浓重的口音,而且常常缺乏自知之明。
    《SQL编程风格》中,***SQL专家Joe Celko针对数据库的设计与编程提出了一系列规则和建议,内容涵盖命名规范、代码版式、键的设计、数据编码方案、编码风格、SQL中的思考方式等多个方面。可以作为软件公司内部编程规范的基础。书中讲述了如何编写标准、**、易于维护的SQL代码。更重要的是。还教授读者如何像**的SQL程序员那样思考,用查询的思维方式来理解数据库,从而大大改善SQL编程风格并提高SQL编程水平。 “Joe Celko是当今数据库界***的代表之一,他已经写了不少SQL编程的畅销书。但是。本书非常与众不同,它将教你如何转变思维方式,以逻辑和说明性的方式编程。成为**的SQL开发人员。”
    ——sQL-Server-Performance.corn

    与描述相符

    100

    北京 天津 河北 山西 内蒙古 辽宁 吉林 黑龙江 上海 江苏 浙江 安徽 福建 江西 山东 河南 湖北 湖南 广东 广西 海南 重庆 四川 贵州 云南 西藏 陕西 甘肃 青海 宁夏 新疆 台湾 香港 澳门 海外