国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

關系型數據庫:理論背后的靈感

2024-07-21 02:36:58
字體:
來源:轉載
供稿:網友

  不運用關系型數據庫的理論就想使用關系型數據庫治理系統(relational database management system,RDBMS)與不踩離合器就想使用啟動標準變速器一樣不現實。你不要在歧途上走得更遠了。實際上,你的應用程序的問題可能就是起因于一個不合格的數據庫。 但是情況可能會更糟,你創建的數據庫可能會錯誤報告數據、甚至還會破壞數據。在本系列文章中,你將會學到如何運用關系規則并從中學會如何開發一個可以保護數據合法性的數據庫。讓我們以回顧關系型數據模型的方式開始本系列文章。
  
  在最初……
  
  
  盡管我們已經被新的技術所包圍,但我們中的許多人還是得依靠老的成熟技術——RDBMS和關系型數據庫理論。它們起源于三十年前,那時保存大量數據的資源是很昂貴的。
  
  在我們今天廣為使用的關系型數據庫出現之前,數據是按扁平文件(flat-file)的格式保存起來的。所有的數據以記錄的形式保存到一個大的表格中。設想一下反復輸入客戶地址、電話號碼以及其它重要信息的情形——每一次插入都需要重排客戶記錄。扁平文件需要冗余的數據,這就導致了大文件的產生。此外,扁平文件數據很難處理,而且需要大量的人力資源去維護它——這最終等效于需要更多的薪水支出、更多的辦公空間以及更多的設備。一言以蔽之,關系型數據庫理論的產生是由問題所激勵出來的,這個問題就是維護數據以及與之相關的程序的花費和復雜度。
  
  上述問題的解決方案
  關系型模型解決了冗余數據的問題。理論出現之后,工具緊接著也誕生了。在E. F. Codd博士于1970年發表了名為《大規模共享數據銀行的關系型模型》的論文(發表在Communications of the ACM雜志1970年6月刊上)之后,解決方案也就出現了。在這篇論文中,Codd博士介紹了用來消除保留冗余數據的必要性的一套規則。這套規則就是關系型數據庫理論的起源。
  
  由此產生的關系型數據庫就成為了按關系表示數據的數據模型。數據模型在概念上是數據、關系以及對數據的約束這三者的集合。關系型數據庫模型就是對象、事件和與關系型數據庫系統有關的其它事項在概念上的表示。其真正含義就是關系型數據模型要求數據按照關系來保存。
  
  關系(一類數據在概念上的集合)由表格(它保存了關于實體的信息)來表示。表中的每一行對應一個tuple(元組),列對應一個屬性。在本文中,屬性僅僅是關系中的一個命名列。每個屬性都和一個值域(該屬性可能的賦值范圍)相聯系。例如,表A給出了給出了一個關系(它保存了關于書的信息)的某些屬性的值域。
  表A
  關系型數據庫:理論背后的靈感
  Book關系的例子
  
  
  值域定義了哪些值可以保存到特定的欄上。例如,你可以限制name欄的字數等于或者少于35個字符??山邮艿拿旨暇褪侵涤颍撝涤蚩梢园ㄒ粋€上限為35個字符。值域是概念上的;RDBMS并不用除數據類型之外的技術支持值域。你必須使用系統特性,如為了進一步限制欄所接收的數據類型,可以加上對字符數限制的約束。
  
  一般只有在進行純技術討論時,你才會遇上如關系、tuple和屬性這樣的術語。在本系列文章的其它部分,我將分別用到以下三個術語:表、記錄和欄(這三個術語不太正式,但是得到了廣泛使用)。一些人更喜歡用術語:文件、行和字段,但是實際上這是一回事。
  
  關系型表格存儲關于某一個事情的數據、概念或者事件。表格是保存在行和欄中的相關數據的集合。欄(或者字段)定義為數據的種類。所有的欄組合成一個記錄,它表示關于一個條目或者實體的所有相關數據。
  
  今天的RDBMS把關系型數據庫的理論付諸實現。從技術的角度來說,RDBMS包括了數據以及治理這些數據的接口工具。這意味著使用這個系統你就不需要其它工具來添加、刪除、更新以及觀看數據。你所需要的所有東西這個系統都有。這個系統還包括元數據(metadata):對保存數據本身的描述。
  
  為什么使用關系型數據庫
  關系型理論在建立時沒有考慮到存儲器——無論是揮發性的還是永久性的——是非常昂貴而且計算機需要許多物理空間的問題。顯然,這些問題已經不復存在了,所以使用關系型數據庫還會存在什么問題呢?利用關系型數據模型,你可以做到:
  
  消除冗余數據。
  消除數據間的不一致性。
  保護數據的完整性。
  由于存儲器很便宜了,從存儲的觀點來看,數據庫是否存在冗余數據并不是一件大不了的事情。然而,減少輸入條目所花費的時間附帶出來的一個好處就是減少數據輸入錯誤。每個條目只保存一次,所以即使你犯了一個錯誤,你也只需要修正出錯的那個輸入即可。關系型數據模型相對其它數據模型的其它個好處將在本系列文章的后續部分陸續介紹。
  
  第一步——了解你的數據
  在Codd博士的論文中,你找不到這個規則,但是熟悉數據并對數據庫的目的有個徹底的了解是創建高效率、靈活的數據庫的最重要的步驟。你需要和用戶以及治理員交談,收集所有的正在使用以及已發行的書面報表和報告。用戶知道數據庫需要收集什么數據以及如何處理。假如有必要,你要和用戶坐在一起處理數據并觀察他們的手工處理數據方法。治理員知道他們希望數據是以何種方式表示出來。用戶和治理員這倆方面的觀點都很重要,所以都要聽取。
  
  在會見用戶和治理者之后,寫一個任務稱述。稱述的長短完全根據需要而定,但是它應該清楚的定義數據庫的目標并闡明實現該目標的主要過程,主要過程不需要寫的很具體。然后把任務稱述共享給參與項目的所有開發成員以及用戶和治理員,以確保你知道項目的癥結之所在。
當要求你修訂任務稱述時,你不必感到驚奇或者心煩。修訂的次數越多,你對產生誤解的機會也就越少,這就減少了日后修正帶來的麻煩。
  
  下一篇文章的內容
  我已經解釋了關系型數據模型的起源,但是你可能仍不能把握tuple、屬性和關系的概念,對關系型數據庫的了解也不多。本系列文章的第二部分將深入標準化規則,你將從中學到更多的知識。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 山丹县| 全椒县| 舞阳县| 新野县| 泗水县| 二连浩特市| 滨州市| 运城市| 高密市| 广丰县| 正宁县| 贵南县| 麻城市| 西贡区| 淳化县| 綦江县| 大理市| 东安县| 兴义市| 漳州市| 望谟县| 东至县| 曲麻莱县| 乌兰县| 南木林县| 大同市| 阿拉善左旗| 五指山市| 育儿| 中山市| 东乌珠穆沁旗| 荆州市| 鄄城县| 白城市| 永寿县| 永定县| 五大连池市| 织金县| 商丘市| 浦东新区| 阳原县|