八、规范数据库设计
8.1、為什么需要設計
2021年12月24日
18:26
當數據庫比較復雜的時候,我們就需要設計了
糟糕的數據庫設計:
- 數據冗余,浪費空間
- 數據庫插入和刪除都會麻煩、異常【屏蔽使用物理外鍵】
- 程序的性能差
良好的數據庫設計:
- 節省內存空間
- 保證數據庫的完整性
- 方便我們開發系統
軟件開發中,關于數據庫的設計
- 分析需求:分析業務和需要處理的數據庫的需求
- 概要設計:設計關系圖 E-R圖
設計數據庫的步驟:
- 收集信息,分析需求
- 用戶表(用戶登錄注銷,用戶的個人信息,寫博客,創建分類)
- 分類表(文章分類,誰創建的)
- 文章表(文章的信息)
- 友鏈表(友鏈信息)
- 自定義表(系統信息,某個關鍵的字,或者一些主字段)key:value
- 說說表(發表心情…? id… content… create_time)
- 標識實體(把需求落地到每個字段)
- 標識實體 之間的關系
- 寫博客:user -->blog
- 創建分類:user -->category
- 關注:user -->user
- 友鏈:links
- 評論:user -user -blog
8.2、三大范式
2021年12月24日
18:27
為什么需要數據庫范式?
- 信息重復
- 更新異常
- 插入異常
- 無法正常顯示信息
- 刪除 異常
- 丟失有效的信息
三大范式
第一范式(1NF)
原子性:保證每一列不可再分
第二范式(2NF)
前提:滿足第一范式
每張表只描述一件事情
第三范式(3NF)
前提:滿足第一范式 和 第二范式
第三范式需要確保數據庫表中的每一列數據都和主鍵直接相關,而不能間接相關。
(規范數據庫的設計)
規范性 和 性能的問題
關聯查詢的表不得超過三張表
- 考慮商業化的需求的目標,(成本,用戶體驗!)s數據庫的性能更加重要
- 在規范性能的問題的時候,需要適當的考慮一下 規范性!
- 故意給某些表增加一些冗余的字段。(從多表查詢中變為單表查詢)
- 故意增加一些計算列(從大數據量降低為小數據量的查詢:索引)
總結
- 上一篇: 如何设计一个项目的数据库
- 下一篇: sqlalchemy.exc.Progr