數據庫設計(三)(選擇主鍵外鍵,數據庫維護拆分,反範式化)

如何選擇主鍵

    1.區分業務主鍵合和數據庫主鍵
        業務主鍵用於標識業務數據,進行表與表之間的關聯;
        數據庫主鍵爲了優化數據存儲(Innodb會生成6個字節的隱含主鍵)
    2.根據數據庫的類型,考慮主鍵是否要順序增加
        有些數據庫是按住建的順序邏輯存儲的(順序增加對IO有幫助)
    3.主鍵的字段類型所佔空間要儘量的小
        對於使用匯集索引方式存儲的表,每一個索引後都會附加主鍵信息。數據庫

避免使用外鍵約束

    1.下降數據導入的效率
    2.增長維護成本
    3.雖然不建議使用外鍵約束,可是相關聯的列上必定要創建索引   函數

避免使用觸發器

1.下降數據導入的效率。
2.可能會出現意想不到的數據異常。
3.使業務邏輯變複雜。工具

關於預留字段

    1.沒法準確的知道預留字段的類型
    2.沒法準確的指導預留字段中所存儲的內容。
    3.後期維護預留字段所要的成本,同增長一個字段所須要的成本是相同的。
    4.嚴禁使用預留字段。性能


反範式化設計

    反範式化是針對範式化而言的,就是打破第三範式的規定,
    爲了性能和讀取效率的考慮而適當的對第三範式的要求進行違反,
    而容許存在少許的數據冗餘,換句話來講:反範式化就是實用空間來換取時間。優化

爲何反範式化

    1.減小表的關聯數量
    2.增長數據的讀取效率
    3.反範式化必定要適度spa


數據庫維護與優化

    維護和優化要作什麼
    1.維護數據字典
    2.維護索引
    3.維護表結構
    4.在適當的時候對錶進行水平拆分或垂直拆分
設計

    如何維護數據字典
    1.使用第三方工具對數據字典進行維護
    2.利用數據庫自己的備註字段來維護數據字典。以MySQL爲例 (COMMENT)增長註釋索引

    如何維護索引
    如何選擇合適的列創建索引?
    1.出如今WHERE從句,GROUP BY 從句, ORDER BY 從句中的列

    2.可選擇性高的列要放在索引的前面
    3.索引中不要包括太長的數據類型
    注意事項:
    1.索引並非越多越好,過多的索引不但會下降寫效率並且會下降讀的效率
    2.按期維護索引碎片
    3.在SQL語句中不要使用強制索引關鍵字效率

    維護表結構
    注意事項:

    1.使用在線變動表結構的工具
    2.同時對數據字典進行維護
    3.控制表的寬度和大小
    數據庫中適合的操做
    1.批量操做 VS 逐條操做
    2.禁止使用Select * 這樣的查詢
    3.控制使用用戶定義函數
    4.不要使用數據庫中的全文索引
    
    表的垂直拆分
    爲了控制表的寬度能夠進行表的垂直拆分
    好處:優化了I/O讀取效率 由於數據庫是以頁的形式存儲的,行越多就越快,
    可是列的增長就會是的寬度增長,行數很少,因此垂直拆分也減少了表的寬度
    1.常常一塊兒查詢的列放在一塊兒
    2.text,blob等大字段拆分到附加表中數據類型

    表的水平拆分     爲了控制表的大小能夠進行表的水平拆分     解決了數據量大多的問題

相關文章
相關標籤/搜索