2020-06-11 數(shù)據(jù)庫基礎(chǔ)

  1. 為什么使用關(guān)系型數(shù)據(jù)庫?
    ~ 持久化 / 管理數(shù)據(jù)(方便查詢)
    ~ 一致性 ---> 事務(wù) ---> 鎖
    并發(fā)數(shù)據(jù)訪問 ---> 五類問題
    - 第一類丟失更新
    - 第二類丟失更新
    - 臟讀(讀臟數(shù)據(jù)):一個事務(wù)讀到另一個事務(wù)還沒有提交的數(shù)據(jù)。
    - 不可重復(fù)讀:一個事務(wù)讀取之前獲取的數(shù)據(jù),發(fā)現(xiàn)原來的數(shù)據(jù)已經(jīng)被另一個已提交的事務(wù)修改。
    - 幻讀:一個事務(wù)讀取數(shù)據(jù),讀到了另一個已提交事務(wù)插入的新數(shù)據(jù)。
    鎖:共享鎖、排他鎖、表鎖、行鎖
    - MyISAM ---> 讀數(shù)據(jù)
    - InnoDB ---> 行鎖,事務(wù) ---> 互聯(lián)網(wǎng)高并發(fā)
    - Memory
    設(shè)置合理的事務(wù)隔離級別讓MySQL自動選擇合適的鎖
    - 查看事務(wù)隔離級別:select @@tx_isolation;
    - 修改事務(wù)隔離級別:set session transaction isolation level read committed;
    ~ READ UNCOMMITTED --> 臟讀
    ~ READ COMMITTED --> 不可重復(fù)讀
    ~ REPEATABLE READ --> 幻讀
    ~ SERIALIZABLE --> 沒任何毛病(性能最差)
    事務(wù)隔離級別越高,數(shù)據(jù)越安全,但是性能也越差
    ~ 完整性
    - 實體完整性(每個實體都是獨一無二的,沒有冗余)- 主鍵/唯一索引
    - 參照完整性(父表沒有的記錄子表也不能出現(xiàn))- 外鍵
    ~ 注意:實際項目中出于性能的考慮會去掉外鍵約束
    - 域完整性(錄入的數(shù)據(jù)都是有效的)
    ~ 數(shù)據(jù)類型和數(shù)據(jù)長度
    ~ 非空約束
    ~ 默認值約束
    ~ 檢查約束

  2. 范式理論(Normal Form)---> 設(shè)計表
    ~ 數(shù)據(jù)庫表的規(guī)范程度
    - 1NF:字段不可分割
    - 2NF:非主鍵字段都依賴主鍵
    - 3NF:消除傳遞依賴
    ~ 實際項目中可能為了提升性能使用反范式設(shè)計

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容