[ 收藏 ] [ 繁体中文 ]  
臺灣貨到付款、ATM、超商、信用卡PAYPAL付款,4-7個工作日送達,999元臺幣免運費   在線留言 商品價格為新臺幣 
首頁 電影 連續劇 音樂 圖書 女裝 男裝 童裝 內衣 百貨家居 包包 女鞋 男鞋 童鞋 計算機周邊

商品搜索

 类 别:
 关键字:
    

商品分类

  •  管理

     一般管理学
     市场/营销
     会计
     金融/投资
     经管音像
     电子商务
     创业企业与企业家
     生产与运作管理
     商务沟通
     战略管理
     商业史传
     MBA
     管理信息系统
     工具书
     外文原版/影印版
     管理类职称考试
     WTO
     英文原版书-管理
  •  投资理财

     证券/股票
     投资指南
     理财技巧
     女性理财
     期货
     基金
     黄金投资
     外汇
     彩票
     保险
     购房置业
     纳税
     英文原版书-投资理财
  •  经济

     经济学理论
     经济通俗读物
     中国经济
     国际经济
     各部门经济
     经济史
     财政税收
     区域经济
     统计 审计
     贸易政策
     保险
     经济数学
     各流派经济学说
     经济法
     工具书
     通货膨胀
     财税外贸保险类考试
     英文原版书-经济
  •  社会科学

     语言文字
     社会学
     文化人类学/人口学
     新闻传播出版
     社会科学总论
     图书馆学/档案学
     经典名家作品集
     教育
     英文原版书-社会科学
  •  哲学

     哲学知识读物
     中国古代哲学
     世界哲学
     哲学与人生
     周易
     哲学理论
     伦理学
     哲学史
     美学
     中国近现代哲学
     逻辑学
     儒家
     道家
     思维科学
     马克思主义哲学
     经典作品及研究
     科学哲学
     教育哲学
     语言哲学
     比较哲学
  •  宗教

  •  心理学

  •  古籍

  •  文化

  •  历史

     历史普及读物
     中国史
     世界史
     文物考古
     史家名著
     历史地理
     史料典籍
     历史随笔
     逸闻野史
     地方史志
     史学理论
     民族史
     专业史
     英文原版书-历史
     口述史
  •  传记

  •  文学

  •  艺术

     摄影
     绘画
     小人书/连环画
     书法/篆刻
     艺术设计
     影视/媒体艺术
     音乐
     艺术理论
     收藏/鉴赏
     建筑艺术
     工艺美术
     世界各国艺术概况
     民间艺术
     雕塑
     戏剧艺术/舞台艺术
     艺术舞蹈
     艺术类考试
     人体艺术
     英文原版书-艺术
  •  青春文学

  •  文学

     中国现当代随笔
     文集
     中国古诗词
     外国随笔
     文学理论
     纪实文学
     文学评论与鉴赏
     中国现当代诗歌
     外国诗歌
     名家作品
     民间文学
     戏剧
     中国古代随笔
     文学类考试
     英文原版书-文学
  •  法律

     小说
     世界名著
     作品集
     中国古典小说
     四大名著
     中国当代小说
     外国小说
     科幻小说
     侦探/悬疑/推理
     情感
     魔幻小说
     社会
     武侠
     惊悚/恐怖
     历史
     影视小说
     官场小说
     职场小说
     中国近现代小说
     财经
     军事
  •  童书

  •  成功/励志

  •  政治

  •  军事

  •  科普读物

  •  计算机/网络

     程序设计
     移动开发
     人工智能
     办公软件
     数据库
     操作系统/系统开发
     网络与数据通信
     CAD CAM CAE
     计算机理论
     行业软件及应用
     项目管理 IT人文
     计算机考试认证
     图形处理 图形图像多媒体
     信息安全
     硬件
     项目管理IT人文
     网络与数据通信
     软件工程
     家庭与办公室用书
  •  建筑

  •  医学

     中医
     内科学
     其他临床医学
     外科学
     药学
     医技学
     妇产科学
     临床医学理论
     护理学
     基础医学
     预防医学/卫生学
     儿科学
     医学/药学考试
     医院管理
     其他医学读物
     医学工具书
  •  自然科学

     数学
     生物科学
     物理学
     天文学
     地球科学
     力学
     科技史
     化学
     总论
     自然科学类考试
     英文原版书-自然科学
  •  工业技术

     环境科学
     电子通信
     机械/仪表工业
     汽车与交通运输
     电工技术
     轻工业/手工业
     化学工业
     能源与动力工程
     航空/航天
     水利工程
     金属学与金属工艺
     一般工业技术
     原子能技术
     安全科学
     冶金工业
     矿业工程
     工具书/标准
     石油/天然气工业
     原版书
     武器工业
     英文原版书-工业技
  •  农业/林业

  •  外语

  •  考试

  •  教材

  •  工具书

  •  中小学用书

  •  中小学教科书

  •  动漫/幽默

  •  烹饪/美食

  •  时尚/美妆

  •  旅游/地图

  •  家庭/家居

  •  亲子/家教

  •  两性关系

  •  育儿/早教

     保健/养生
     体育/运动
     手工/DIY
     休闲/爱好
     英文原版书
     港台图书
     研究生
     工学
     公共课
     经济管理
     理学
     农学
     文法类
     医学
  • 數據庫技術與應用 SQL Server 2016
    該商品所屬分類:研究生 -> 工學
    【市場價】
    651-944
    【優惠價】
    407-590
    【作者】 吳秀麗、杜彥華、丁文英、馮愛蘭 
    【所屬類別】 圖書  教材  研究生/本科/專科教材  工學圖書  計算機/網絡  數據庫  SQL 
    【出版社】清華大學出版社 
    【ISBN】9787302496250
    【折扣說明】一次購物滿999元台幣免運費+贈品
    一次購物滿2000元台幣95折+免運費+贈品
    一次購物滿3000元台幣92折+免運費+贈品
    一次購物滿4000元台幣88折+免運費+贈品
    【本期贈品】①優質無紡布環保袋,做工棒!②品牌簽字筆 ③品牌手帕紙巾
    版本正版全新電子版PDF檔
    您已选择: 正版全新
    溫馨提示:如果有多種選項,請先選擇再點擊加入購物車。
    *. 電子圖書價格是0.69折,例如了得網價格是100元,電子書pdf的價格則是69元。
    *. 購買電子書不支持貨到付款,購買時選擇atm或者超商、PayPal付款。付款後1-24小時內通過郵件傳輸給您。
    *. 如果收到的電子書不滿意,可以聯絡我們退款。謝謝。
    內容介紹



    開本:16開
    紙張:膠版紙
    包裝:平裝-膠訂

    是否套裝:否
    國際標準書號ISBN:9787302496250
    叢書名:中國高等學校計算機科學與技術專業(應用型)規劃教材

    作者:吳秀麗、杜彥華、丁文英、馮愛蘭
    出版社:清華大學出版社
    出版時間:2018年05月 


        
        
    "

    編輯推薦
    本書在基礎理論篇詳細介紹了數據庫的基礎理論知識,在應用環節介紹了微軟公司的*的數據庫管理繫統SQL Server 2016,*後總結了數據庫的*發展技術。全書以一個生活中的案例貫穿其中,強調理論和實踐的結合,同時突出學科發展的特點。本書是編者多年來教學經驗的總結,融入了大量的教學案例,實用性很強。 
    內容簡介
    本書在基礎理論部分詳細介紹了數據庫的基礎理論知識,在應用部分介紹了微軟公司的*的數據庫管理繫統SQL Server 2016,*後總結了數據庫技術的發展前沿。本書用生活中常見的案例貫穿,強調理論和實踐的結合,同時突出學科發展的特點。
    全書共分5篇12章:*篇為基礎知識篇(第1~5章),介紹數據庫的基礎理論知識;第二篇為數據庫設計技術篇(第6~7章),介紹數據庫設計的理論;第三篇為數據庫安全篇(第8章),介紹數據庫安全保護技術;第四篇為應用篇(第9~11章),介紹SQL Server 2016數據庫管理繫統;第五篇為發展篇(第12章),介紹數據庫技術的*進展情況。
    本書是作者多年來教學經驗的總結,融入了大量的教學案例,實用性很強,可作為普通高等院校數據庫技術及應用課程的教材,也可作為相關技術人員的參考用書,同時還可作為各類水平考試(包括全國計算機等級考試)的輔導用書。
    目錄
    目錄基礎知識篇
    第1章數據庫繫統概述3
    1.1數據管理技術的發展3
    1.2數據與數據庫概念6
    1.3數據庫繫統7
    1.4數據庫管理繫統8
    1.4.1數據庫管理繫統的功能8
    1.4.2數據庫管理繫統的組成9
    1.5數據庫繫統體繫結構11
    1.5.1數據庫繫統的內部體繫結構11
    1.5.2數據庫繫統的典型外部體繫結構13
    1.6數據庫用戶15
    習題117
    第2章數據模型18

    目錄
    基礎知識篇


    第1章數據庫繫統概述3


    1.1數據管理技術的發展3


    1.2數據與數據庫概念6


    1.3數據庫繫統7


    1.4數據庫管理繫統8


    1.4.1數據庫管理繫統的功能8


    1.4.2數據庫管理繫統的組成9


    1.5數據庫繫統體繫結構11


    1.5.1數據庫繫統的內部體繫結構11


    1.5.2數據庫繫統的典型外部體繫結構13


    1.6數據庫用戶15


    習題117


    第2章數據模型18


    2.1數據模型的組成要素18


    2.2概念數據模型19


    2.2.1基本概念20


    2.2.2ER模型22


    2.3邏輯數據模型24


    2.3.1層次數據模型25


    2.3.2網狀數據模型27


    2.3.3關繫數據模型28


    2.3.4面向對像數據模型29


    2.3.5對像關繫數據模型302.4物理數據模型31


    習題231


    第3章關繫數據庫32


    3.1關繫數據結構32


    3.2關繫數據操作34


    3.2.1傳統的關繫運算35


    3.2.2專門的關繫運算37


    3.3關繫數據的完整性約束41


    習題343


    數據庫技術與應用SQL Server 2016 目錄
    第4章關繫數據庫標準語言SQL45


    4.1SQL概述45


    4.1.1SQL標準的由來45


    4.1.2SQL的組成46


    4.1.3SQL的特點47


    4.2數據定義語言49


    4.2.1基本表的定義49


    4.2.2索引的定義55


    4.3數據查詢語言58


    4.3.1單表查詢59


    4.3.2連接查詢67


    4.3.3集合查詢69


    4.3.4嵌套查詢71


    4.4數據更新語言77


    4.4.1插入數據78


    4.4.2修改數據79


    4.4.3刪除數據81


    4.5視圖81


    4.5.1視圖的概念81


    4.5.2創建視圖82


    4.5.3更新視圖83


    4.5.4查詢視圖84


    4.5.5刪除視圖84


    習題485


    第5章SQL語言高級功能87


    5.1數據控制語言87


    5.1.1權限和角色87


    5.1.2授權語句88


    5.1.3收回權限90


    5.2存儲過程90


    5.2.1創建存儲過程91


    5.2.2修改存儲過程92


    5.2.3刪除存儲過程92


    5.2.4執行存儲過程92


    5.2.5過程聲明94


    5.2.6基本語句和表達式95


    5.2.7流程控制97


    5.3遊標101


    5.3.1遊標類型101


    5.3.2遊標的管理103


    5.4觸發器108


    5.4.1觸發器的結構108


    5.4.2創建DML觸發器109


    5.4.3創建DDL觸發器112


    5.4.4創建登錄觸發器114


    5.4.5修改觸發器114


    5.4.6刪除觸發器115


    5.4.7遞歸觸發器115


    5.5嵌入式SQL116


    5.5.1基本概念116


    5.5.2基本結構118


    5.5.3變量聲明119


    5.5.4數據庫連接120


    5.5.5執行SQL命令121


    5.5.6嵌入式遊標123


    5.5.7使用動態SQL126


    5.5.8異常處理127


    習題5128


    數據庫設計技術篇


    第6章數據庫設計理論133


    6.1數據庫設計概述133


    6.1.1數據庫設計的任務133


    6.1.2數據庫設計的團隊134


    6.1.3數據庫設計的方法134


    6.2數據庫設計的步驟135


    6.2.1需求分析136


    6.2.2概念結構設計138


    6.2.3邏輯結構設計142


    6.2.4物理結構設計145


    6.2.5數據庫實施146


    6.2.6數據庫運行及維護147


    習題6148


    第7章數據庫規範化理論149


    7.1關繫模式設計中存在的問題149


    7.2函數依賴150


    7.3多值依賴152


    7.4範式152


    7.4.1範式153


    7.4.2第二範式155


    7.4.3第三範式156


    7.4.4BC範式157


    7.4.5第四範式157


    7.5關繫模式規範化方法158


    7.6函數依賴的公理繫統159


    7.7關繫模式的分解160


    習題7162


    數據庫安全篇


    第8章數據庫的安全性策略165


    8.1數據庫安全控制概述165


    8.2數據庫安全控制方法166


    8.2.1用戶標識和鋻定167


    8.2.2存取控制167


    8.2.3審計169


    8.2.4數據加密170


    8.3事務171


    8.3.1事務的概念171


    8.3.2事務的特性172


    8.3.3定義事務172


    8.4數據庫的恢復技術173


    8.4.1數據備份174


    8.4.2故障177


    8.4.3數據恢復策略178


    8.5並發控制182


    8.5.1並發異常問題182


    8.5.2基於封鎖的調度184


    8.5.3基於時間戳的調度189


    8.5.4基於有效性檢驗的調度方法190


    8.5.5多版本並發控制機制191


    習題8191


    應用篇


    第9章典型關繫數據庫管理繫統SQL Server 2016介紹195


    9.1SQL Server 2016繫統概述195


    9.2SQL Server 2016體繫結構199


    9.3SQL Server 2016的安裝201


    9.3.1安裝環境要求201


    9.3.2安裝過程203


    9.4SQL Server 2016配置220


    9.4.1SQL Server 2016數據庫服務器服務的啟動和停止221


    9.4.2注冊服務器224


    9.4.3創建服務器組224


    9.5SQL Server 2016管理平臺226


    習題9228


    第10章SQL Server 2016的SQL編程技術229


    10.1創建數據庫229


    10.1.1利用對像資源管理器創建數據庫229


    10.1.2利用TSQL語句創建數據庫231


    10.2數據定義技術233


    10.3數據更新技術244


    10.4數據查詢技術246


    10.5存儲過程247


    10.6觸發器249


    10.7應用程序調用數據庫的方法251


    10.7.1ODBC技術251


    10.7.2ADO技術258


    10.7.3JDBC技術263


    習題10267


    第11章SQL Server 2016的數據庫保護技術268


    11.1數據安全性技術268


    11.1.1概述268


    11.1.2身份驗證模式268


    11.1.3登錄賬號管理269


    11.1.4角色管理275


    11.1.5用戶管理279


    11.1.6權限控制281


    11.2數據庫的備份和恢復283


    11.2.1數據庫的備份283


    11.2.2數據庫的恢復286


    習題11291


    發展篇


    第12章數據庫技術的新進展295


    12.1數據庫技術發展概述295


    12.1.1影響數據庫技術發展的重要因素295


    12.1.2數據庫新技術的發展296


    12.2數據庫技術與其他相關技術相結合300


    12.2.1面向對像數據庫繫統300


    12.2.2分布式數據庫繫統304


    12.2.3雲數據庫繫統308


    12.3面向應用領域的數據庫新技術310


    12.3.1數據倉庫與數據挖掘310


    12.3.2空間數據庫314


    12.3.3機器學習321


    12.3.4大數據分析技術323


    12.3.5物聯網技術326


    12.3.6雲計算328


    習題12331


    附錄A繫統內置函數332


    附錄BSQL Server中常用的全局變量337


    參考文獻339

    前言
    前言21世紀是信息的世紀,數據庫技術作為一種信息管理技術,幾乎應用到了所有的信息技術領域。越來越多的學校將數據庫課程設置為必修課程,*考試中心每年舉行的全國計算機等級考試中都專門設置了“數據庫工程師”的等級考試,由此可見數據庫技術的重要地位。本書按照普通高等學校數據庫教學大綱的要求,詳細地介紹數據庫繫統結構、數據模型、關繫數據庫設計理論和規範化理論等數據庫基本原理。同時,在應用環節,介紹了微軟公司的數據庫管理繫統Microsoft SQL Server 2016。詳細介紹了該軟件的安裝和配置,如何建立表、索引和視圖,如何使用存儲過程和觸發器,以及數據庫的安全保護問題。後,結合大數據技術,介紹了數據庫的發展技術和發展趨勢。本書以培養綜合型人纔為目標,摒棄傳統教材知識點設置按部就班、理論講解枯燥無味的弊端,全書用一個現實生活中的案例貫穿,使學生在解決實際問題的過程中學到數據庫的原理和技術。通過本書的學習,學生可以了解數據庫的發展簡史,明確數據庫在各行各業信息化管理工作中的重要地位,掌握數據庫的基本原理,熟悉利用數據庫進行數據管理的基本技術,具備從事信息管理的基本素質,從而能夠從事IT行業相關崗位的管理工作。本書建議講授時數為32學時,實驗時數為16學時。具體每章教學時間分配見下表。章節內容講授學時實驗學時第1章數據庫繫統概述20第2章數據模型40第3章關繫數據庫40第4章關繫數據庫標準語言SQL62第5章SQL語言高級功能42第6章數據庫設計理論40第7章數據庫規範化理論20第8章數據庫的安全性策略40第9章典型關繫數據庫管理繫統SQL Server 2016介紹02續表章節內容講授學時實驗學時第10章SQL Server 2016的SQL編程技術08第11章SQL Server 2016的數據庫保護技術02第12章數據庫技術的新進展20合計3216其中,帶“”號的5.5節、7.3節、7.4.5節和7.6節可不作講授內容,供有餘力的同學自學。本書的第1~11章由吳秀麗編寫,第12章由杜彥華編寫。全書由吳秀麗統稿。本書適合於普通高等院校“數據庫技術與應用”課程的通用教材,也適合於從事信息管理和計算機軟件開發人員參考,同時,本書也可以用作*考試中心計算機等級考試的參考書。在本書的編寫過程中參考了大量的相關文獻資料,在此謹向相關專家學者表示誠摯的謝意。由於編者水平有限,加之時間倉促,雖然對全書進行了反復修改完善,但仍難免有不妥之處,懇請讀者批評指正。前言21世紀是信息的世紀,數據庫技術作為一種信息管理技術,幾乎應用到了所有的信息技術領域。越來越多的學校將數據庫課程設置為必修課程,*考試中心每年舉行的全國計算機等級考試中都專門設置了“數據庫工程師”的等級考試,由此可見數據庫技術的重要地位。本書按照普通高等學校數據庫教學大綱的要求,詳細地介紹數據庫繫統結構、數據模型、關繫數據庫設計理論和規範化理論等數據庫基本原理。同時,在應用環節,介紹了微軟公司的數據庫管理繫統Microsoft SQL Server 2016。詳細介紹了該軟件的安裝和配置,如何建立表、索引和視圖,如何使用存儲過程和觸發器,以及數據庫的安全保護問題。後,結合大數據技術,介紹了數據庫的發展技術和發展趨勢。本書以培養綜合型人纔為目標,摒棄傳統教材知識點設置按部就班、理論講解枯燥無味的弊端,全書用一個現實生活中的案例貫穿,使學生在解決實際問題的過程中學到數據庫的原理和技術。通過本書的學習,學生可以了解數據庫的發展簡史,明確數據庫在各行各業信息化管理工作中的重要地位,掌握數據庫的基本原理,熟悉利用數據庫進行數據管理的基本技術,具備從事信息管理的基本素質,從而能夠從事IT行業相關崗位的管理工作。本書建議講授時數為32學時,實驗時數為16學時。具體每章教學時間分配見下表。章節內容講授學時實驗學時第1章數據庫繫統概述20第2章數據模型40第3章關繫數據庫40第4章關繫數據庫標準語言SQL62第5章SQL語言高級功能42第6章數據庫設計理論40第7章數據庫規範化理論20第8章數據庫的安全性策略40第9章典型關繫數據庫管理繫統SQL Server 2016介紹02續表章節內容講授學時實驗學時第10章SQL Server 2016的SQL編程技術08第11章SQL Server 2016的數據庫保護技術02第12章數據庫技術的新進展20合計3216其中,帶“”號的5.5節、7.3節、7.4.5節和7.6節可不作講授內容,供有餘力的同學自學。本書的第1~11章由吳秀麗編寫,第12章由杜彥華編寫。全書由吳秀麗統稿。本書適合於普通高等院校“數據庫技術與應用”課程的通用教材,也適合於從事信息管理和計算機軟件開發人員參考,同時,本書也可以用作*考試中心計算機等級考試的參考書。在本書的編寫過程中參考了大量的相關文獻資料,在此謹向相關專家學者表示誠摯的謝意。由於編者水平有限,加之時間倉促,雖然對全書進行了反復修改完善,但仍難免有不妥之處,懇請讀者批評指正。
    作者2018年3月數據庫技術與應用SQL Server 2016 
    在線試讀
    第3章關繫數據庫關繫數據庫是目前主流的數據庫類型,其基礎是關繫數據模型。相對於層次數據模型和網狀數據模型,關繫數據模型是發展相對較晚的。盡管如此,關繫數據模型技術也已經發展得非常完善,成為數據庫領域中占據主導地位的一種數據模型。關繫數據模型作為數據模型的一種,也由3部分組成: 關繫數據結構、關繫數據操作和關繫數據的完整性約束條件。下面分別介紹。3.1關繫數據結構在關繫數據模型中,無論是實體還是實體間的各種聯繫均用關繫(Relation)來表示。在用戶看來,關繫數據模型中數據的邏輯結構是一張規範化的二維表。在日常生活中,經常看到二維表,例如班級點名冊、成績單等。表31是一個學生的點名冊,就是一個規範化的二維表。表31平時成績單序號學號姓名性別1234567891101張三男2102李四女從表中可以看出,作為一個規範化的二維表,應該具有如下特點。(1) 表有表名。(2) 表由兩部分組成: 表頭和數據行。(3) 表有若干列,每列都有列名。(4) 同一列的取值來自同一個定義域。(5) 每一行的數據代表一個具體的實體。(6) 表中不允許再有表,即每一列都不能再細分為更多的子項。比如表32就不是一個規範化的二維表,因為其中存在“表中有表”的現像。第3章關繫數據庫數據庫技術與應用SQL Server 2016表32學生成績統計表序號學號姓名成績平時試卷總分備注140640001劉平204767240640002於濤186078對表中的數據可以進行添加、修改、刪除、查詢等操作。1. 基本概念及術語相應於二維表的這些特點,關繫數據模型提出了一些專用的概念及術語。關繫模式: 在關繫數據庫中,關繫模式是關繫中信息內容結構的描述。作為一個關繫模式,必須描述關繫由哪些屬性組成,這些屬性來自哪些域,以及屬性和域之間的映像關繫。具體而言,關繫模式應包括關繫名、屬性名、每個屬性列的取值集合、數據完整性約束條件以及各屬性間固有的數據依賴關繫等。關繫模式對關繫的描述,一般表示為:關繫名(屬性集合,屬性取值域,屬性列到域的映射,完整性約束條件,屬性集間的依賴關繫)通常,為了簡化起見,不涉及完整性約束及依賴關繫,關繫模式可以表述為:關繫名(屬性1,屬性2,…,屬性n)例如,“商品”關繫模式可以表示為:商品(商品編碼,商品名稱,單價,生產批次)關繫: 就是一張規範化的二維表。一個規範化的二維表有表名、表頭和數據,相應地,一個關繫由關繫名、關繫模式和關繫實例3部分組: 關繫中的一行即組,有時也稱為一個記錄。屬性: 關繫中的一列即為一個屬性,如“商品”關繫有4個屬性,即商品編碼、商品名稱、單價、生產批次。域: 屬性的取值範圍稱為該屬性的域。候選碼: 可以確組的小屬性集合稱為候選碼(Candidate Key),或簡稱為碼(Key)。例如表31中的學號,按照學生學號的編排規則,每個學生的學號都不相同,所以它可以確定一個學生,也就成為一個關繫的碼。超碼: 這裡要注意的是,被稱為碼的屬性集合必須是小的,例如{學號,姓名}這個屬性集合就不能稱為碼,因為存在比它更小的子集{學號}可以地確組。通常將這種包含碼在內的屬性集合稱為超碼(Super Key)。主碼: 一個關繫至少有一個候選碼,也可能有多個候選碼,一般從候選碼中選一個作為主碼(Primary Key),其他候選碼則稱為候補碼(Alternate Key)。主碼的值可以用來識別組,它應該是的,組的主碼的值是不能相同的。在簡單的情況下,主碼隻包含一個屬性。在的情況下,碼可以包含表中的所有屬性,稱為全碼(All Key)。主屬性: 包含在任何一個候選碼中的屬性稱為主屬性(Prime Attribute)。相反,不包含在任何候選碼中的屬性稱為非主屬性(NonPrime Attribute)。分組中的一個屬性值。2. 關繫的性質關繫是一個規範化的二維表,這裡強調“規範化”,說明作為一個關繫必須受到一些約束限制,稱其為關繫的性質。概括來講,這些性質分為6個方面:(1) 列是同質的,即每一列中的分量是同一類型的數據,來自同一個域。(2) 不同的列可出自同一個域,但要給予不同的屬性名。(3) 列的次序無所謂,即列的次序可以任意交換。(4) 任組不能完全相同。(5) 行的順序無所謂,即行的次序可以任意交換。(6) 分量必須取原子值,即每一個分量必須是不可分的數據項。3. 關繫數據庫在一個給定的應用領域中,所有實體及實體之間聯繫的集合構成一個關繫數據庫。關繫數據庫也有型和值之分。關繫數據庫的型也稱為關繫數據庫模式,是對關繫數據庫的描述,它包括若干域的定義以及在這些域上定義的若干關繫模式。關繫數據庫的值是這些關繫模式在某一個時刻對應的關繫實例的集合,通常稱為關繫數據庫實例。3.2關繫數據操作關繫數據操作采用集合操作方式,即操作的對像和結果都是集合。這種操作方式也稱為一次一集合的方式。相應地,非關繫數據模型的數據操作方式則稱為一次一記錄的方式。對關繫數據可以進行更新(插入、修改和刪除)和查詢等操作。無論是對關繫數據的更新操作還是查詢操作,其實都可以歸結為對關繫數據的運算。即以一個或多個關繫數據為運算對像,對它們進行某些運算形成一個新關繫數據,提供用戶所需要的數據。關繫數據運算按其表達查詢方式的不同可以分為兩大類: 關繫代數和關繫演算。關繫代數包括一繫列操作符,描述如何一步步地得到查詢結果;而關繫演算以非過程的方式描述查詢要求,並不描述如何得到結果。本節重點介紹關繫代數。另外還有一種介於關繫代數和關繫演算之間的語言,即結構化查詢語言(Structured Query Language,SQL),本書將在第4章專門介紹SQL。關繫代數是一種抽像的查詢語言,是關繫數據操縱語言的一種傳統表達方式,它是用對關繫的運算來表達查詢的。在關繫代數中,用戶對關繫數據的所有查詢操作都是通過關繫代數表達式描述的,一個查詢就是一個關繫代數表達式。任何一個關繫代數表達式都由關繫運算符和關繫組成。任何一種運算都是將一定的運算符作用於一定的運算對像上,得到預期的運算結果。所以運算對像、運算符、運算結果是運算的3大要素。在關繫代數中,運算對像和運算結果都是關繫,運算符包括4類: 集合運算符、專門的關繫運算符、比較運算符和邏輯運算符,見表33。其中,比較運算符和邏輯運算符是輔助運算符,集合運算符和專門的關繫運算符是主要運算符,據此,可以把關繫運算分為傳統的關繫運算和專門的關繫運算。表33關繫代數的運算符運算符分類運算符符號含義運算符分類運算符符號含義集合運算符專門的關繫運算符∪並-差∩交×笛卡兒積σ選擇π投影連接÷除比較運算符邏輯運算符>大於≥大於或等於<小於≤小於或等於=等於 不等於∧與∨或┐非3.2.1傳統的關繫運算傳統的關繫運算指集合運算,是由兩個關繫產生一個新關繫,包括並、交、差和廣義笛卡兒積4種運算,它們都是二目運算。在進行關繫的並、交、差運算時,參與運算的關繫R和關繫S必須具有相容的關繫模式,即R和S包含有相同的屬性個數,並且對應的屬性的域也相同,此時稱關繫R和關繫S具有並兼容特性。並兼容特性是兩個關繫進行並、交、差運算的前提條件。由於並兼容特性並沒有要求關繫R和關繫S的對應屬性名必須相同,所以一般規定,結果關繫具有與R相同的關繫模式。1. 並運算關繫R和S的關繫模式符合並兼容特性。關繫R和S的並運算記作R∪S,結果得到一個新關繫。新關繫的關繫模式和R的相圖31R∪S同,實例是兩個關繫的關繫實例的並集,即新關繫實例由屬於R或屬組(或者同時屬於R組)組成。並運算可組插入操作,可以用如圖31所示的示意圖表示並運算的原理。2. 交運算關繫R和S的關繫模式符合並兼容特性。關繫R和S的交記作R∩S,交運算的結果得到一個新關繫。新關繫的關繫模式和R的相同,實例是兩個關繫的關繫實例的交集,即新關繫實例由屬於R且同時屬組組成。可以用如圖32所示的示意圖表示交運算的原理。3. 差運算關繫R和S的關繫模式符合並兼容特性。關繫R和S的差記作R-S,差運算的結果得到一個新關繫。新關繫的關繫模式和R相同,但實例是兩個關繫的關繫實例的差,即新關繫實例由屬於R但不屬組組成。差運算可以組的刪除操作,可以用如圖33所示的示意圖表示差運算原理。圖32R∩S圖33R-S第3章關繫數據庫關繫數據庫是目前主流的數據庫類型,其基礎是關繫數據模型。相對於層次數據模型和網狀數據模型,關繫數據模型是發展相對較晚的。盡管如此,關繫數據模型技術也已經發展得非常完善,成為數據庫領域中占據主導地位的一種數據模型。關繫數據模型作為數據模型的一種,也由3部分組成: 關繫數據結構、關繫數據操作和關繫數據的完整性約束條件。下面分別介紹。3.1關繫數據結構在關繫數據模型中,無論是實體還是實體間的各種聯繫均用關繫(Relation)來表示。在用戶看來,關繫數據模型中數據的邏輯結構是一張規範化的二維表。在日常生活中,經常看到二維表,例如班級點名冊、成績單等。表31是一個學生的點名冊,就是一個規範化的二維表。表31平時成績單序號學號姓名性別1234567891101張三男2102李四女從表中可以看出,作為一個規範化的二維表,應該具有如下特點。(1) 表有表名。(2) 表由兩部分組成: 表頭和數據行。(3) 表有若干列,每列都有列名。(4) 同一列的取值來自同一個定義域。(5) 每一行的數據代表一個具體的實體。(6) 表中不允許再有表,即每一列都不能再細分為更多的子項。比如表32就不是一個規範化的二維表,因為其中存在“表中有表”的現像。第3章關繫數據庫數據庫技術與應用SQL Server 2016表32學生成績統計表序號學號姓名成績平時試卷總分備注140640001劉平204767240640002於濤186078對表中的數據可以進行添加、修改、刪除、查詢等操作。1. 基本概念及術語相應於二維表的這些特點,關繫數據模型提出了一些專用的概念及術語。關繫模式: 在關繫數據庫中,關繫模式是關繫中信息內容結構的描述。作為一個關繫模式,必須描述關繫由哪些屬性組成,這些屬性來自哪些域,以及屬性和域之間的映像關繫。具體而言,關繫模式應包括關繫名、屬性名、每個屬性列的取值集合、數據完整性約束條件以及各屬性間固有的數據依賴關繫等。關繫模式對關繫的描述,一般表示為:關繫名(屬性集合,屬性取值域,屬性列到域的映射,完整性約束條件,屬性集間的依賴關繫)通常,為了簡化起見,不涉及完整性約束及依賴關繫,關繫模式可以表述為:關繫名(屬性1,屬性2,…,屬性n)例如,“商品”關繫模式可以表示為:商品(商品編碼,商品名稱,單價,生產批次)關繫: 就是一張規範化的二維表。一個規範化的二維表有表名、表頭和數據,相應地,一個關繫由關繫名、關繫模式和關繫實例3部分組: 關繫中的一行即組,有時也稱為一個記錄。屬性:  關繫中的一列即為一個屬性,如“商品”關繫有4個屬性,即商品編碼、商品名稱、單價、生產批次。域:  屬性的取值範圍稱為該屬性的域。候選碼: 可以確組的小屬性集合稱為候選碼(Candidate Key),或簡稱為碼(Key)。例如表31中的學號,按照學生學號的編排規則,每個學生的學號都不相同,所以它可以確定一個學生,也就成為一個關繫的碼。超碼: 這裡要注意的是,被稱為碼的屬性集合必須是小的,例如{學號,姓名}這個屬性集合就不能稱為碼,因為存在比它更小的子集{學號}可以地確組。通常將這種包含碼在內的屬性集合稱為超碼(Super Key)。主碼: 一個關繫至少有一個候選碼,也可能有多個候選碼,一般從候選碼中選一個作為主碼(Primary Key),其他候選碼則稱為候補碼(Alternate Key)。主碼的值可以用來識別組,它應該是的,組的主碼的值是不能相同的。在簡單的情況下,主碼隻包含一個屬性。在的情況下,碼可以包含表中的所有屬性,稱為全碼(All Key)。主屬性: 包含在任何一個候選碼中的屬性稱為主屬性(Prime Attribute)。相反,不包含在任何候選碼中的屬性稱為非主屬性(NonPrime Attribute)。分組中的一個屬性值。2. 關繫的性質關繫是一個規範化的二維表,這裡強調“規範化”,說明作為一個關繫必須受到一些約束限制,稱其為關繫的性質。概括來講,這些性質分為6個方面:(1) 列是同質的,即每一列中的分量是同一類型的數據,來自同一個域。(2) 不同的列可出自同一個域,但要給予不同的屬性名。(3) 列的次序無所謂,即列的次序可以任意交換。(4) 任組不能完全相同。(5) 行的順序無所謂,即行的次序可以任意交換。(6) 分量必須取原子值,即每一個分量必須是不可分的數據項。3. 關繫數據庫在一個給定的應用領域中,所有實體及實體之間聯繫的集合構成一個關繫數據庫。關繫數據庫也有型和值之分。關繫數據庫的型也稱為關繫數據庫模式,是對關繫數據庫的描述,它包括若干域的定義以及在這些域上定義的若干關繫模式。關繫數據庫的值是這些關繫模式在某一個時刻對應的關繫實例的集合,通常稱為關繫數據庫實例。3.2關繫數據操作關繫數據操作采用集合操作方式,即操作的對像和結果都是集合。這種操作方式也稱為一次一集合的方式。相應地,非關繫數據模型的數據操作方式則稱為一次一記錄的方式。對關繫數據可以進行更新(插入、修改和刪除)和查詢等操作。無論是對關繫數據的更新操作還是查詢操作,其實都可以歸結為對關繫數據的運算。即以一個或多個關繫數據為運算對像,對它們進行某些運算形成一個新關繫數據,提供用戶所需要的數據。關繫數據運算按其表達查詢方式的不同可以分為兩大類: 關繫代數和關繫演算。關繫代數包括一繫列操作符,描述如何一步步地得到查詢結果;而關繫演算以非過程的方式描述查詢要求,並不描述如何得到結果。本節重點介紹關繫代數。另外還有一種介於關繫代數和關繫演算之間的語言,即結構化查詢語言(Structured Query Language,SQL),本書將在第4章專門介紹SQL。關繫代數是一種抽像的查詢語言,是關繫數據操縱語言的一種傳統表達方式,它是用對關繫的運算來表達查詢的。在關繫代數中,用戶對關繫數據的所有查詢操作都是通過關繫代數表達式描述的,一個查詢就是一個關繫代數表達式。任何一個關繫代數表達式都由關繫運算符和關繫組成。任何一種運算都是將一定的運算符作用於一定的運算對像上,得到預期的運算結果。所以運算對像、運算符、運算結果是運算的3大要素。在關繫代數中,運算對像和運算結果都是關繫,運算符包括4類: 集合運算符、專門的關繫運算符、比較運算符和邏輯運算符,見表33。其中,比較運算符和邏輯運算符是輔助運算符,集合運算符和專門的關繫運算符是主要運算符,據此,可以把關繫運算分為傳統的關繫運算和專門的關繫運算。表33關繫代數的運算符運算符分類運算符符號含義運算符分類運算符符號含義集合運算符專門的關繫運算符∪並-差∩交×笛卡兒積σ選擇π投影連接÷除比較運算符邏輯運算符>大於≥大於或等於<小於≤小於或等於=等於<>不等於∧與∨或┐非3.2.1傳統的關繫運算傳統的關繫運算指集合運算,是由兩個關繫產生一個新關繫,包括並、交、差和廣義笛卡兒積4種運算,它們都是二目運算。在進行關繫的並、交、差運算時,參與運算的關繫R和關繫S必須具有相容的關繫模式,即R和S包含有相同的屬性個數,並且對應的屬性的域也相同,此時稱關繫R和關繫S具有並兼容特性。並兼容特性是兩個關繫進行並、交、差運算的前提條件。由於並兼容特性並沒有要求關繫R和關繫S的對應屬性名必須相同,所以一般規定,結果關繫具有與R相同的關繫模式。1. 並運算關繫R和S的關繫模式符合並兼容特性。關繫R和S的並運算記作R∪S,結果得到一個新關繫。新關繫的關繫模式和R的相圖31R∪S同,實例是兩個關繫的關繫實例的並集,即新關繫實例由屬於R或屬組(或者同時屬於R組)組成。並運算可組插入操作,可以用如圖31所示的示意圖表示並運算的原理。2. 交運算關繫R和S的關繫模式符合並兼容特性。關繫R和S的交記作R∩S,交運算的結果得到一個新關繫。新關繫的關繫模式和R的相同,實例是兩個關繫的關繫實例的交集,即新關繫實例由屬於R且同時屬組組成。可以用如圖32所示的示意圖表示交運算的原理。3. 差運算關繫R和S的關繫模式符合並兼容特性。關繫R和S的差記作R-S,差運算的結果得到一個新關繫。新關繫的關繫模式和R相同,但實例是兩個關繫的關繫實例的差,即新關繫實例由屬於R但不屬組組成。差運算可以組的刪除操作,可以用如圖33所示的示意圖表示差運算原理。圖32R∩S圖33R-S


    4. 廣義笛卡兒積兩個分別具有n個屬性和m個屬性的關繫R和S的廣義笛卡兒積是一個具有(n m)個屬性的關繫,記作R×S。新關繫的關繫模式由關繫R的所有屬性(次序不變)和關繫S的所有屬性(次序不變)連接而成。新關繫實組的前n列是關繫R組,後m列是關繫S組。若R有組,S有組,則關繫R和關繫S的廣義笛卡兒積有k1×組。廣義笛卡兒積運算可用於兩張表的合並。【例31】已知兩個關繫R和S,請分別求R∪S,R∩S,R-S,R×S。RABCa1b1c1a1b2c2a2b2c1SABCa1b2c2a1b3c2a2b2c1【解答】R∪SABCa1b1c1a1b2c2a2b2c1a1b3c2R∩SABCa1b2c2a2b2c1R-SABCa1b1c1R×SABCABCa1b1c1a1b2c2a1b1c1a1b3c2a1b1c1a2b2c1a1b2c2a1b2c2a1b2c2a1b3c2a1b2c2a2b2c1a2b2c1a1b2c2a2b2c1a1b3c2a2b2c1a2b2c13.2.2專門的關繫運算對於關繫數據的查詢操作,有些無法用傳統的關繫運算完成,需要引入一些新的運算方法,完成諸如屬性組選擇、關繫合並等操作,這些運算稱為專門的關繫運算。為了方便介紹專門的關繫運算,假設某超市的數據庫繫統,包括3個關繫: 商品關繫G、供應商關繫S和供應關繫SG,以下的所有舉例都基於這個數據庫繫統。GGNOGTYPEGNAMEPRICE101運動類羽毛球拍120102運動類乒乓球拍80201食品類純牛奶45SSNOSNAMESADDRESSA1五環體育廣州A2耐克上海北京SGGNOSNOCOSTGNOSNOCOST101A1100102A265102A160201B1401. 選擇運算選擇運關繫運算,它作用在一個關繫上,運算前和運算後均隻是一個關繫。根據選擇條件,從關繫中篩選出符合條件組,選擇操作的結果得到一個新關繫。這兩個關繫具有相同的關繫模式。它的表示方法是:σ選擇條件(關繫)其中,σ是希臘字母,其下標“選擇條件”是個條件表達式,小括號裡的關繫是操作對像。條件表達式由以下規則組成。(1) 基本邏輯條件: αθβ形式,其中α、β是屬性名或常量,但α、β不能同為常量。θ是比較運算符,可以是<、≤、>、≥、=或≠。(2) 復合邏輯條件: 由若干基本邏輯條件經過邏輯與“∧”、邏輯或“∨”和邏輯非“┐”構成。【例32】基於商品關繫G,查詢價格高於100的商品。【解答】該查詢可以用如下的表達式來表示:σPRICE>100(G)查詢的結果是:GNOGTYPEGNAMEPRICE101運動類羽毛球拍120【例33】基於商品關繫G,查詢運動類價格低於100的商品。【解答】該查詢可以用如下的表達式來表示:σGTYPE='運動類'∧PRICE<100(G)查詢的結果是:GNOGTYPEGNAMEPRICE102運動類乒乓球拍802. 投影運算投影操作從一個關繫中抽取其中某些列的值,作為一個新關繫輸出。新關繫的關繫模式是下標中的屬性組則是原關繫中組在投影的屬性列表上的取值。它的表示方法是:π屬性表(關繫)其中,π表示投影操作,其下標位置的屬性表表示要抽取的屬性列,小括號內跟上操作對像。注意: 如果投影屬性中不包含任一個候選碼,則抽取結果中很可能包含組,應把組去掉。【例34】在商品關繫G裡查詢超市裡經營的商品種類。【解答】該查詢可以用如下的表達式來表示:πGTYPE(G)查詢的結果是:GTYPE運動類食品類3. 連接運算 用笛卡兒積運算建立兩個關繫的連接,並不是一個很好的方法,因為笛卡兒積的結果是一個比較龐大的關繫。在實際中往往需要的是笛卡兒積中符合條件組,於是引出了連接運算。雖然連接運算可以看作是對兩個關繫的廣義笛卡兒積作選擇和投影運算,但連接運算遠比單純的笛卡兒積使用更頻繁。在關繫代數中,連接運算是有用的操作之一。連接運算是從兩個關繫的廣義笛卡兒積中選取屬性之間滿足一定組,記作:RSαθβ其中,連接運算符用表示,αθβ是連接條件,θ是比較運算符(>、≥、<、≤、=或≠),α、β可以是屬性名、常量或簡單函數,屬性名可以用它在表中的序號代替(如1,2,…)。根據連接條件,可將連接分為很多種,其中用得多的是等值連接和自然連接 。1) 等值連接 在連接運算中,當條件αθβ中的θ為“=”時的連接運算稱為等值連接。它是從關繫R與S的廣義笛卡兒積中選取α、β屬性值相等組。2) 自然連接等值連接的結果包含兩個關繫的所有屬性,因為有些屬性的取值完全相同,勢必會造成數據的冗餘。因此,如果連接條件中等號兩邊的屬性名相同,可省略連接條件,直接寫作: RS,結果關繫中也去掉重復的屬性列,這種特殊的等值連接稱為自然連接。實際上,自然連接是用得普遍的一種運算。【例35】查詢超市裡現在經營的商品的供應商信息(單位名稱和地址等)。【解答】包含超市裡商品供應信息的是關繫SG,該關繫裡隻有供應商的編號,而供應商的詳細信息在關繫S中,因此該查詢需要將關繫SG和關繫S進行連接,可以用如下表達式來表示:SGS連接的結果為:GNOSNOCOSTSNAMESADDRESS101A1100五環體育廣州102A160五環體育廣州102A265耐克上海201B1北京4. 除運算除運算實現那些包含“所有的……”條件的查詢,用符號“÷”表示。對於表達式R÷S,要求R的屬性集包含S的屬性集。設R與S的屬性集分別為X和Y,則除運算的結果將包含屬性集Z=X-Y,即那些在R中但不在S中的屬性。並且對於運算結果中組t,在R中組集(即R中與t在屬性集Z上都相等組)在屬性集Y上的投影圖34除運算結果包含集合S。除運算可以用圖34表示。除運算的計算步驟如下:(1) T=πZ(R) (2) W=(T×S)-R(3) V=πZ (W)(4) R ÷ S=T-V【例36】查詢包含“耐克”供應商供應的所有商品的供應商編號。【解答】這是一種求“包含”關繫的特殊查詢,可以采用除運算。供應信息在關繫SG中,可以先求出“耐克”供應商供應的商品,用A表示結果關繫,即:(1) A=πGNO(σsname='耐克'(SGS))查詢的結果是:GNO102(2) 根據除運算的思想,需要求出供應關繫SG中包含了關繫A的供應商編號,可以直接用除表示,結果用B表示,即:B=SG÷A查詢的過程可以分4步求解:① T=πSNO,COST(SG) 得到:SNOCOSTA1100A160A265B140② W=(T×A)-SG得到:SNOCOSTGNOA1100102B140102③ V=πSNO,COST (W)得到:SNOCOSTA1100B140④ SG÷A=T-V得到:SNOCOSTA160A265即包含了“耐克”供應商供應的所有商品的供應商編號有A1和A2。3.3關繫數據的完整性約束為了使數據能夠符合現實世界的要求,保證數據的正確性、有效性和相容性,關繫數據模型也有一定的約束。關繫數據模型的約束指的是完整性約束,是對關繫中數據及其聯繫應具有的制約和依存規則。關繫數據模型提供了豐富的完整性控制機制,允許定義3類完整性: 實體完整性、參照完整性和用戶定義的完整性。其中實體完整性和參照完整性是關繫數據模型必須滿足的完整性約束條件,被稱作是關繫的兩個不變性,應該由關繫數據庫管理繫統自動支持。1. 實體完整性實體完整性約束(Entity Integrity)規則: 若屬性A是基本關繫R的主屬性,則任組在屬性A上不能取空值(Null)。如果主碼是一個屬性組,則該屬性組中的所有主屬性都不能取空值,而不僅是主碼整體不能取空值。所謂空值,是指“不知道”或“不存在”的值。由於主屬性是用來標識實體的基本屬性,若主屬性取空值,就說明這個實體不可標識,這與現實世界的要求是背離的。例如,在3.2.2節中的商品關繫中,GNO是主碼,則任組在屬性GNO上不能取空值。值得注意的是,實體完整性規則規定的是所有主屬性都不能取空值。例如,供應關繫(GNO,SNO,COST),屬性組(GNO,SNO)是主碼,則任組無論在屬性GNO還是在屬性SNO上都不能取空值。這與供應關繫本身反映的現實情況是相符的。一個供應商(用主屬性SNO標識)可以供應多種商品(用主屬性GNO標識),一種商品也可以由多家供應商供應。因此,單靠供應商編號SNO或商品編號GNO都不能地確組,隻有供應商編號SNO和商品編號GNO共同作用,纔能地確組,因此,該關繫的主碼是屬性組(GNO,SNO),GNO和SNO都是主屬性。按照實體完整性規則,GNO和SNO都不能取空值。2. 參照完整性參照完整性約束(Referential Integrity)又稱外碼約束,約束的是兩個關繫之間屬性的取值。現實世界的實體之間互相聯繫,而且也用關繫來描述,這樣就存在著關繫與關繫間的引用。當一個關繫被修改的時候,為了保持數據的一致性,也必須對另一個關繫進行檢查和修改。還以超市數據庫為例,其中兩個關繫:商品(商品編號,商品名稱,價格)供應(商品編號,供應商編號,成本)顯然,“供應”關繫中的“商品編號”值必須是確實存在的商品的編號,即出現在“供應”關繫中的“商品編號”必須同時出現在“商品”關繫中,也就是說,“供應”關繫中的某個屬性的取值需要參照“商品”關繫的屬性取值。反過來,出現在“商品”關繫中的每一個商品卻不一定要出現在“供應”關繫中,因為有可能某種商品暫時沒有供應商供貨,處於缺貨狀態。二者的關繫如圖35所示。像這種屬性不能隨意取值,隻能引用另外一個關繫中的某個屬性值,稱為這兩個關繫存在參照關繫。圖35參照關繫對應圖在關繫數據模型中用外碼表示上述參照關繫。所謂外碼,是指如果基本關繫R中某屬性集F是基本關繫S的主碼,則對基本關繫R而言,F叫作外碼(Foreign Key),並稱基本關繫R為參照關繫(Referencing Relation),基本關繫S為被參照關繫(Referenced Relation)或目標關繫(Target Relation)。那麼,供應關繫中的屬性“商品編號”被稱為外碼,它需要參照商品關繫的主碼,供應商關繫為參照關繫,商品關繫為被參照關繫。參照完整性約束規則: 基本關繫R的任組在外碼F上的取值要麼是空值,要麼是被參照關繫S組的主碼值。參照完整性要保證不參照不存在的實體。需要指出的是,不僅兩個或兩個以上的關繫間可以存在參照關繫,同一關繫內部屬性間也可能存在參照關繫。例如,在關繫學生(學號,姓名,性別,繫別,年齡,班長)中,屬性“學號”是主碼,屬性“班長”表示該學生所在班級的班長的學號,它引用了本關繫中的屬性“學號”,因此屬性“班長”是外碼,它可以取兩類值:(1) 空值,表示該學生所在班級尚未選出班長;(2) 非空值,這時該值必須是本關繫組的學號值。該例中學生S關繫既是參照關繫也是被參照關繫。顯然,參照關繫R的外碼和被參照關繫S的主碼必須定義在同一個(或一組)域上,但是,外碼並不一定要與相應的主碼同名。不過,在實際應用中,為了便於識別,當外碼和相應的主碼屬於不同的關繫時,往往給它們取相同的名字。3. 用戶定義的完整性(userdefined integrity)任何關繫數據庫繫統都應該支持實體完整性和參照完整性。除此之外,不同的應用繫統根據其應用環境的不同,往往還需要一些特殊的約束條件,用戶定義的完整性就是針對某一具體應用環境的約束條件,又稱域完整性或語義完整性。它反映某一具體應用所涉及的數據必須滿足的語義要求,即限定關繫中的某個屬性的取值類型和取值範圍。例如,屬性“性別”隻能取“男”或“女”值,取其他值都無意義。再如,管理一些個人信息的關繫中,限定屬性“身份證號”不能取空值。關繫數據模型應提供定義和檢驗這類完整性的機制,以便用統一的繫統的方法處理它們,而不要由應用程序承擔這一功能。總之,關繫數據模型與非關繫數據模型不同,它有較強的數學理論根據;關繫數據結構簡單、清晰、易懂易用;關繫數據模型的存取路徑對用戶透明,從而具有更高的數據獨立性、更好的安全保密性,也簡化了程序員的工作以及數據庫建立和開發的工作。不足的是,查詢效率往往不如非關繫數據模型,因此,為了提高性能,必須對用戶的查詢表達式進行優化。習題31. 關繫數據模型的三要素是什麼?2. 關繫的六大性質是什麼?3. 關繫代數有哪些?4. 關繫的完整性約束有哪幾種?5. 試述關繫的實體完整性規則和參照完整性規則。6. 設有關繫R和S,如圖36所示。圖36關繫R和S計算R∪S,R∩S,R-S,R×S,RS,π1,2(R),σR.A=S.A(R×S)。7. 某關繫數據庫中存在下列3個關繫,如表34~表36所示。請用關繫代數完成以下題目。表34studentsnosnamessexsage2008001張三男202008002李四女202008003王五女192008004錢六男212008005劉七男20表35coursecnocnameccredit1001高等數學51002大學英語41003法律31004體育3表36studysnocnogradesnocnograde2008001100180200800210019020080011002852008003100395200800110037820080041001702008001100470(1) 檢索年齡小於20的學生信息。(2) 檢索選修了高等數學的學生的學號。(3) 檢索選修了全部課程的學生的姓名。(4) 檢索既選修了法律又選修了體育課程的學生的姓名。(5) 檢索至少選修了一門課程的學生的姓名。第4章關繫數據庫標準語言SQL關繫代數提供關繫數據操作的簡潔表達方式,但它隻適合熟悉數據庫的專業人員使用。對於數據庫繫統的普通用戶來講,需要一種簡單、易學、友好的方法,SQL就是代表性的一種語言。它還是一種介於關繫代數與關繫演算之間的結構化查詢語言,其功能並不僅僅是查詢,它還是一個通用的、功能極強的關繫數據庫語言。 4.1SQL概述〖1〗4.1.1SQL標準的由來SQL(Structured Query Language)是美國國家標準協會(American National Standard Institute,ANSI)和國際標準化組織指定的標準語言,被幾乎所有關繫數據庫管理繫統產品所采用。SQL語言的前身是1974年由Boyce和Chamberlin提出的SEQUEL,並在IBM公司研制的關繫數據庫管理原型繫統System R上實現,後來改名為SQL,並用在其產品SQL/DS和DB2中。由於SQL簡單易學、功能豐富,深受用戶及計算機工業界歡迎,被眾多數據庫廠商所采用,包括Oracle公司的Oracle數據庫管理繫統(1979年)、Relational Technology公司的INGRES(1981年)、Britton公司的IDM(1982年)、Data General Corporation公司的DG/SQL(1984年)和Sybase公司的SYBASE(1986年)等。經各公司的不斷修改、擴充和完善,SQL終得到業界的認可,發展成為關繫數據庫的標準語言。1986年10月,ANSI的數據庫委員會X3H2批準了SQL作為關繫數據庫語言的美國標準,1987年,ISO也通過了這一標準。至今,SQL共形成了3個版本,分別為SQL86、SQL92和SQL99。SQL86是1986年ANSI推出的SQL標準的早版本。1989年,SQL86版本在參照完整性方面進行了少量補充,形成了SQL89標準,SQL92(亦稱SQL2)是對SQL89標準進行了較大的更新後於1992年推出的。為了進一步增強SQL的功能,1999年SQL99(亦稱SQL3)標準面世,引入了遞歸、觸發器和面向對像等概念和機制。目前大多數數據庫管理繫統均支持SQL92(SQL2),少部分支持SQL99(SQL3)。自SQL成為國際標準語言以後,各個數據庫廠家紛紛推出各自的SQL軟件或與SQL的接口軟件。這就使不同數據庫繫統之間的互操作有了共同的基礎。SQL成為國際標準,對數據庫以外的領域也產生了很大的影響,有不少軟件產品將SQL的數據查詢功能與圖形功能、軟件工程工具、軟件開發工具和人工智能程序結合起來。總而言之,SQL已成為數據庫領域中的主流語言之一。第4章關繫數據庫標準語言SQL數據庫技術與應用SQL Server 20164.1.2SQL的組成無論是SQL89、SQL92還是SQL99,SQL語言都具有4個基本功能: 數據定義功能、數據操縱功能、數據控制功能和嵌入式SQL語言功能。1. 數據定義功能數據定義功能采用數據定義語言DDL實現,用來定義和修改數據庫的三級模式結構,即外模式、模式和內模式結構。在SQL中,外模式又叫視圖,模式又叫數據庫,內模式由繫統根據模式自動實現,至多由用戶定義相應的索引文件,其餘無須用戶過問。在SQL中,每個關繫又叫基本表或簡稱表,每個關繫中的屬性又叫作字段組又叫作行。一個數據庫由若干個基本表組成。每個視圖也是一個關繫,由基本表產生,有自己獨立的結構定義,但沒有獨立的數據存在,在內存中不占據存儲空間,所以又稱為虛表。一個基本表可以跨一個或多個存儲文件,一個存儲文件也可以存放一個或多個基本表,一個表可以帶若干個索引,索引也存放在存儲文件中。每個存儲文件與外部存儲器上一個物理文件對應。存儲文件的邏輯結構組成了關繫數據庫的內模式。用戶可以用SQL語句對視圖和基本表進行查詢等操作,在用戶看來,視圖和基本表都是一樣的,都是關繫。SQL用戶可以是應用程序,也可以是終端用戶。SQL與數據庫體繫結構的對應關繫如圖41所示。圖41SQL與數據庫體繫結構的對應關繫2. 數據操縱功能數據操縱功能采用數據操縱語言DML實現,用來實現數據庫中基本表和視圖的數據插入、修改、刪除和查詢,即對關繫實例的操作。SQL具有很強的數據查詢功能,查詢是SQL的靈魂。3. 數據控制功能數據控制功能采用數據控制語言DCL實現,用來控制用戶的訪問權限,從而保證數據庫中數據的安全性。哪些用戶能夠使用哪些數據庫,使用數據庫中的哪些表和視圖,具有哪些操作功能等都是訪問權限要規定的內容。4. 嵌入式SQL語言功能通過設定一繫列規則,使得SQL語言能嵌入到某種通用編程語言,如C 、Java、Pascal等中。SQL的核心部分相當於關繫代數,但又具有關繫代數所沒有的許多特點,如聚集、數據庫更新等。4.1.3SQL的特點SQL是一種綜合的、通用的、功能極強,同時又簡單易學的語言,可以獨立完成數據管理的核心操作。這也是SQL能夠為用戶和業界所接受,並成為國際標準的主要原因。具體來說,SQL具有下列主要特點。1. 綜合統一數據庫繫統的主要功能是通過數據庫支持的數據語言來實現的。非關繫數據模型(層次數據模型、網狀數據模型等)的數據語言一般都分為數據操縱語言(DML)和數據定義語言(DDL),這些語言各有各的語法。當用戶數據庫投入運行後,如果需要修改模式,必須停止現有數據庫的運行,備份數據,修改模式並編譯後再重裝數據庫,十分麻煩。SQL則集數據定義語言DDL、數據操縱語言DML、數據控制語言DCL的功能於一體,語言風格統一,可以獨立完成數據庫生命周期中的全部活動,為數據庫應用繫統的開發提供了良好的環境。用戶在數據庫繫統投入運行後,還可根據需要隨時、逐步地修改模式,且並不影響數據庫的運行,從而使繫統具有良好的可擴展性。此外,在關繫數據模型中實體和實體間的聯繫均用關繫表示,這種數據結構的單一性帶來了數據操作符的統一,查詢、插入、刪除、更新等操作都隻需一種操作符,從而克服了非關繫數據結構由於信息表示方式的多樣性而帶來的操作復雜性。2. 高度非過程化非關繫數據模型的數據操縱語言是面向過程的語言,屬於第三代語言(The 3rd Generation Language,3GL),例如C語言,在執行一項工作時必須描述“怎麼做”,要求數據庫使用人員必須了解數據庫的物理存儲結構。而SQL作為第四代語言(The 4th Generation Language,4GL)的一種,是非過程化的,使用它進行數據庫操作時,隻需提出“做什麼”,而無須指明“怎麼做”。“怎麼做”是由繫統自動完成的,用戶是在數據庫的邏輯結構層次上使用數據庫,無須了解數據庫的物理結構。這不但極大地減輕了用戶的負擔,而且有利於提高數據的獨立性。3. 面向集合的操作方式非關繫數據模型采用的是面向記錄的操作方式,操作對像是一條記錄。例如查詢所有平均成績在90分以上的學生姓名,用戶必須一條一條地把滿足條件的學生記錄找出來(通常要說明具體處理過程,即按照哪條路徑、如何循環等)。而SQL采用面向集合的操作方式,不僅操作對像、查找結果組的集合,而且一次插入、刪除、更新操作的對像也組的集合。4. 同一種語法結構,兩種使用方式SQL既是自含式語言,又是嵌入式語言。作為自含式語言,它能夠獨立地用於聯機交互的使用方式,用戶可以在終端鍵盤上直接輸入SQL命令對數據庫進行操作;作為嵌入式語言,SQL語句能夠嵌入到高級語言,如C語言程序中,供程序員設計程序時使用。而在兩種不同的使用方式下,SQL的語法結構基本上是一致的,為用戶提供了極大的靈活性與方便性。5. 語言簡潔,易學易用SQL的設計非常巧妙,用十分簡潔的語言實現了極強的功能。其核心功能隻用了9個動詞來實現,如表41所示。另外,SQL接近英語自然語言,易學易懂。表41SQL的核心動詞SQL功能動詞SQL功能動詞數據定義Create,Drop,Alter數據查詢Select數據操縱Insert,Update,Delete數據控制Grant,Revoke為了突出基本概念和語句功能,本章將重點介紹SQL的基本語法內容,略去了許多語法細節問題。而各個商用DBMS產品在實現標準SQL語言時也各有差別,一般都做了一定程度的擴充。因此,讀者在具體使用某個DBMS產品時,應仔細參閱繫統提供的有關手冊。在開始介紹SQL語法之前,需要注意以下幾點。(1) SQL 不區分大小寫。一般用大寫字母代表關鍵字,小寫字母或漢字是由用戶決定的內容。(2) 尖括號< >中的內容是必需的。(3) 大括號{ }中的內容至少選擇一個。當括號中內容由“|”分隔時,則隻能選擇其中的一個;當括號中的內容由“,”分隔時,可選擇其中的一個或多個。(4) 中括號[ ]中的內容是可選項。當括號中的內容由“|”分隔時,則隻能選擇其中的一個,或一個也不選;當括號中的內容由“,”分隔時,可選擇其中的一個或多個,或一個也不選。(5) 省略號…意味著可以重復後一個成分任意多次。4.2數據定義語言關繫數據庫是由一繫列的關繫組成的,因此,建立關繫數據庫的步工作就是建立表,描述每一個表的結構等信息。表以一定的邏輯結構和物理結構存於數據庫中。SQL的數據定義語言用於創建、修改和刪除數據庫中的表(Table)、視圖(View)和索引(Index)等。本節主要講述關於表和索引的定義問題,視圖的定義在4.5節專門介紹。4.2.1基本表的定義關繫數據庫中的表和常見的二維表的結構類似,表的定義包括表名和表頭的定義,其中表頭要描述表中各列的特征,包括列名、數據類型、長度以及相應的約束條件。在正式介紹創建表的命令之前,首先介紹定義表時用到的數據類型的定義方法。1. 數據類型SQL中常用的數據類型見表42。表42SQL中常用的數據類型數據類型名含義char(n)定長字符型,其長度為n,即占n個字節的字符串,用來保存長度(ASCII碼字符的個數)小於或等於n的字符串。注意: 對於每個漢字區位碼字符,其長度為2,相當於兩個ASCII碼字符varchar(n)長度可變的字符串型,n是長度,由用戶指定int(integer)整數型,一般是32位字長smallint短整數型,表示的整數範圍比int小,一般占16位字長float浮點型,又稱實數型。該類型占4個或8個字節,能夠表示相當大範圍內的任何浮點數或實數,包括整數和小數decimal(m,n)或numeric(m,n)定點數,其精度由用戶指定,其中m代表不包含括號位和小數點在內的數字的總位數,n則代表小數點右邊的數字位數date日期型,包含年、月、日3個部分的數據time時間型,包含小時、分、秒3個部分的數據timestamp時間戳,格式為YYYYMMDD HH:MM:SS[.nnnnnn],其中nnnnnn是微秒boolean布爾型,其值為TRUE(真)、FALSE(假)除了使用繫統本身支持的數據類型之外,SQL還允許用戶自己定義新的數據類型,這是通過定義域的命令完成的。定義域的語法格式為:CREATE DOMAIN <域名>[AS]<數據類型>[DEFAULT default option][CHECK (search condition)];其中,<域名>表示要創建的新域名。<數據類型>表示創建的新域所屬的基本數據類型。DEFAULT 子句和CHECK子句是可選項,DEFAULT子句表示新定義的域的默認值,CHECK子句是一種約束子句,用於規定所定義數據類型的取值範圍。【例41】定義一個專門用來標示性別的新數據類型。大家知道性別隻能有兩種取值: “男”或“女”,假設默認值是“男”,域名取為GENDERTYPE,那麼可以這樣定義這個域:CREATE DOMAIN GENDERTYPE AS char(10)DEFAULT '男'CHECK (value in ('男','女'));一旦定義了這個域,就可以把GENDERTYPE當作一個新的數據類型來使用了,當創建表時,某一列的數據類型設為GENDERTYPE後,就限定了往表中插入數據時,取值範圍是{男,女}。當不需要一個域時,可以采用刪除域命令刪除域的定義:DROP DOMAIN<域名>;【例42】刪除性別域GENDERTYPE。DROP DOMAIN GENDERTYPE;2. 表的創建在SQL中創建基本表的語法如下:CREATE TABLE <表名>(<列名><數據類型>[列級完整性約束條件][,<列名><數據類型>[列級完整性約束條件]]…[,<表級完整性約束條件>]);格式說明如下:表名: 用戶自己定義要創建的表名。列名: 用戶自己定義要創建的表中的列名,可以有多個。數據類型: 表中各列的取值範圍,可以采用SQL的標準數據類型,也可以選用用戶自己定義的數據類型。列級(或表級)完整性約束條件: 表示該列(或表)內容需要滿足的約束,通常有5種。(1) 非空約束: 通過設置某列為NOT NULL,表示該列的內容不能為空,空缺時表示可以為空。(2) 性約束: 通過設置某列為UNIQUE,表示該列的內容不能包含重復值(但允許有多個值為NULL)。由於主碼具有性,因此對主碼不能再設定性約束。(3) 主碼約束: 表示該列為主碼,用PRIMARY KEY標明。它同時蘊含了NOT NULL和UNIQUE的要求。如果主碼是由多個屬性列組成的,則必須采用表級完整性約束條件的方式定義,即用PRIMARY KEY(主碼列列表)方式定義,其中主碼列列表用“,”隔開;隻涉及單個屬性列時,既可以定義在列級也可以定義在表級。(4) 默認約束: 如果某列後面跟上DEFAULT<默認值>,則定義了該列的默認值。如果在插入時沒有指定該列的值,則DBMS自動將其值設為指定的默認值。(5) 外碼約束: 表示該列是外碼,用FOREIGN KEY表示。可以由兩種方法定義外碼。① 用列級約束定義的方式,即:如果外碼隻有一個屬性,則可以在它的屬性名和類型名後面直接用以下形式表示:FOREIGN KEY REFERENCES<表名> (<屬性>);其中,<表名>是被參照的表的名稱;<屬性>是被參照表的相關屬性名稱。若被參照的屬性名稱與參照的屬性名稱相同,則可以省去<屬性>。② 用表級約束定義的方式,即在定義完所有屬性以後,增加一個或幾個外碼的說明,其格式為:FOREIGN KEY <屬性1> REFERENCES<表名> (<屬性2>)其中,<屬性1>是外碼;<表名>是被參照的表的名稱;<屬性2>是被參照表的相關屬性名稱。當采用列級定義方式時,可以省略FOREIGN KEY,直接在列名數據類型後跟上REFERENCES <表名> (<屬性2>)即可。無論是哪種方法,後面都還可以加上:ON DELETE(或update)RESTRICT/CASCADE/SET NULL表示當刪除(或更新)被參照關繫的主碼值時,為了保證參照完整性,可以按以下3種方式處理:  RESTRICT(限制)方式。凡是被主關繫引用的外碼,一律不得刪除或更新。  CASCADE(級聯)。若在被參照關繫中刪除(或更新)了某一主碼值,則相應地刪除(或更新)引用了此主碼值的參照關組。  SET NULL。當被引用屬性被刪除或更新時,將參照關繫中對應屬性值置為空值。當然,該屬性上應沒有NOT NULL說明。 定義表的同時還可以定義與該表有關的完整性約束條件,這些完整性約束條件放在數據字典中,當用戶操作表中數據時,由DBMS自動檢查該操作是否違背這些完整性約束條件。【例43】用SQL語言定義一個“商品”表Goods,它由商品編號Gno、商品名稱Gname、價格Price和批次Batch 4個屬性組成。其中,商品名稱不能為空。CREATE TABLE Goods(Gno CHAR(20) PRIMARY KEY,/ 列級完整性約束/Gname CHAR(50) NOT NULL,/ 列級完整性約束/
    書摘插畫
    插圖
    插圖

    插圖

     
    相關商品
    在線留言 商品價格為新臺幣
    關於我們 送貨時間 安全付款 會員登入 加入會員 我的帳戶 網站聯盟
    DVD 連續劇 Copyright © 2024, Digital 了得網 Co., Ltd.
    返回頂部