02.SQL語言藝術(shù)讀書筆記

SQL語言藝術(shù)讀書筆記

一毒涧、創(chuàng)建

(一) 關(guān)系理論的關(guān)鍵原理:關(guān)系不包含重復(fù)數(shù)據(jù)钠四,且記錄之間沒有順序
(二)實現(xiàn)3NF的步驟
1. 確保原子性(atomicity)

細節(jié)之中潛藏著危險隙姿,過分“精益求精”會使我們精力分散般卑,甚至關(guān)注不相干的問題桌粉,合理把握處理數(shù)據(jù)的層次非常重要估盘。

一般而言,應(yīng)盡量使用具有實際意義的主鍵相种,而不是灰色的遞增整數(shù)。

所有屬性都具有了原子性品姓,且確定了鍵寝并,我們的數(shù)據(jù)就符合1NF了

2. 檢查對鍵的完全依賴性

在1NF的基礎(chǔ)上,如果去除了只依賴部分鍵的屬性后腹备,表就符合2NF了衬潦,如在保存用戶信息時,單位植酥,姓名都設(shè)置為字段镀岛,但同一個單位中的人員不止一個弦牡,那么在用戶表中保存的單位字段就不完全依賴用戶表的主鍵,這樣會造成數(shù)據(jù)的冗余漂羊,可以把單位分離出來驾锰。

3. 檢查屬性的獨立性

通常,滿足2NF的數(shù)據(jù)集也滿足3NF走越。我們可以這樣思考:屬性A的值確定之后椭豫,屬性B的值是否就確定了呢?

4. 空值對程序邏輯是危險的旨指,必須使用空值的話赏酥,一定要清楚它在特定情況下的影響
5. 子類型。
  1. 表過“寬”的另一個原因是對數(shù)據(jù)之間的關(guān)系了解不夠深入淤毛〗窀浚可以使用子類型。
  2. 給子類型表指定完全獨立于父表主鍵的主鍵低淡,是極其錯誤的姓言,如果子類型主鍵不是父表主鍵的子集的話,在很多方面都會導(dǎo)致性能降低蔗蹋。
  3. 所有子類型表中的主鍵的交集必須為空何荚,所有子類型表中的主鍵的并集是父表中的主鍵的集合。 這樣是正確的方法猪杭。
  4. 開發(fā)者不應(yīng)忘記數(shù)據(jù)庫恢復(fù)后要進行所有功能性的檢查餐塘,整個設(shè)計越復(fù)雜,開發(fā)者就越應(yīng)記住操作數(shù)據(jù)時的諸多約束皂吮。
  5. 如果需要對字段使用函數(shù)戒傻,就意味著表中原子性的數(shù)據(jù)不符合業(yè)務(wù)需求。

二蜂筹、查詢

  1. 查詢臨時表的語句效率比永久表差需纳。
  2. 將一次“大批量數(shù)據(jù)處理”分隔成多次“小塊處理”是個壞主意。如一次批量導(dǎo)入和多次循環(huán)逐條導(dǎo)入艺挪。
  3. 盡可能多地把事情交給數(shù)據(jù)庫優(yōu)化器來處理不翩,也就是說,要盡可能使用SQL解決問題麻裳,并盡可能利用每次數(shù)據(jù)庫訪問完成盡量多的工作口蝠。
  4. 不要把OO方法與關(guān)系數(shù)據(jù)庫處理混為一談,混淆關(guān)系和面向?qū)ο蟮母拍钜约皩⒈淼韧陬惤蚩印⒆侄蔚韧趯傩悦钫帷⒍际侵旅腻e誤。
  5. 沒有必要編程實現(xiàn)那些數(shù)據(jù)庫隱含實現(xiàn)的功能疆瑰。

三眉反、索引

  1. 對于通用目的或事務(wù)處理型數(shù)據(jù)庫而言狞谱,大部分表不需要加索引,因為許多表的查找是根據(jù)一組非常有限的條件來進行的禁漓。
  2. 正如數(shù)據(jù)設(shè)計的初衷所規(guī)定的,索引是一種以原子粒度訪問數(shù)據(jù)的手段孵睬,而不是為了檢索大量數(shù)據(jù)的播歼;否則,就嚴(yán)重誤解了索引的作用掰读。
  3. 你一定要非常清楚為哪些字段加索引秘狞,以及 為什么為它們加索引。
  4. 建立索引必須有理由蹈集,無論是對外鍵烁试,或是其他字段,都是如此拢肆。很多情況下無需為外鍵建立索引减响。
  5. 正確使用系統(tǒng)生成鍵大有裨益,但切勿濫用郭怪。
  6. 索引不是萬靈藥支示,充分理解要處理的數(shù)據(jù),做出合理的判斷鄙才,才能獲得高效方案颂鸿。

四、SQL語句

  1. 關(guān)系理論姿于數(shù)據(jù)庫攒庵,正如土木工程學(xué)之于橋梁嘴纺。
  2. 關(guān)系操作負責(zé)找出我們要操作的數(shù)據(jù)集,而“非關(guān)系操作層”對有限的數(shù)據(jù)集進行“精雕細刻”浓冒,從而產(chǎn)生用戶期望的結(jié)果栽渴。
  3. 排序,統(tǒng)計等操作屬于非關(guān)系操作范疇裆蒸。
  4. SQL用來表達“要做什么”熔萧,優(yōu)化器來完成“如何來做”。
  5. 切記僚祷,關(guān)系理論的數(shù)據(jù)基礎(chǔ)為數(shù)據(jù)處理提供了非常嚴(yán)謹(jǐn)?shù)倪壿嬛С址鹬拢虼薙QL藝術(shù)本應(yīng)該注重減小“非關(guān)系操作層”的厚度,即盡量在“關(guān)系操作層”完成大部分處理辙谜。
  6. 如果是若干個小查詢俺榆,優(yōu)化器將個個優(yōu)化;如果是一個大的查詢装哆,優(yōu)化器將它作為一個整體優(yōu)化罐脊。
  7. 熟練的開發(fā)者應(yīng)該努力使響應(yīng)時間與返回的記錄數(shù)成比例定嗓,這符合用戶的預(yù)期。
  8. 當(dāng)視圖返回不必要的元素時萍桌,別把視圖內(nèi)嵌在查詢中宵溅,而是應(yīng)將視圖分解,將其組成部分加到查詢主體中上炎。
  9. 高效定義過濾條件的準(zhǔn)則是:盡快的減少必須處理的數(shù)據(jù)量恃逻。
  10. 在連接中指定過濾條件利于提高性能,如:
join orders o on o.custid = c.custid and a.ordered >= somefunc
  1. 避免在最高層使用distinct應(yīng)該是一個基本原則藕施,如要避免下面的方式
select distinct c.custname
from customers c, 
orders o, 
orderdetail od,
articles a
where c.city = 'dalian'
and c.custid = o.custid
and o.ordid = od.ordid
and od.artid = a.artid
and a.artname = 'aodi'
and o.ordered >= somefunc
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末寇损,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子裳食,更是在濱河造成了極大的恐慌矛市,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诲祸,死亡現(xiàn)場離奇詭異浊吏,居然都是意外死亡,警方通過查閱死者的電腦和手機烦绳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進店門卿捎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人径密,你說我怎么就攤上這事午阵。” “怎么了享扔?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵底桂,是天一觀的道長。 經(jīng)常有香客問我惧眠,道長籽懦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任氛魁,我火速辦了婚禮暮顺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘秀存。我一直安慰自己捶码,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布或链。 她就那樣靜靜地躺著惫恼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪澳盐。 梳的紋絲不亂的頭發(fā)上祈纯,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天令宿,我揣著相機與錄音,去河邊找鬼腕窥。 笑死粒没,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的簇爆。 我是一名探鬼主播革娄,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼冕碟!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起匆浙,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤安寺,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后首尼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體挑庶,經(jīng)...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年软能,在試婚紗的時候發(fā)現(xiàn)自己被綠了迎捺。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,865評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡查排,死狀恐怖凳枝,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情跋核,我是刑警寧澤岖瑰,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站砂代,受9級特大地震影響蹋订,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜刻伊,卻給世界環(huán)境...
    茶點故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一露戒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧捶箱,春花似錦智什、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至悦屏,卻和暖如春节沦,著一層夾襖步出監(jiān)牢的瞬間键思,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工甫贯, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留吼鳞,地道東北人。 一個月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓叫搁,卻偏偏與公主長得像赔桌,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子渴逻,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,870評論 2 361

推薦閱讀更多精彩內(nèi)容