日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL:规范数据库设计

發布時間:2024/3/13 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL:规范数据库设计 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 十、規范數據庫設計
    • 10.1 為什么需要設計
      • 10.1.1 糟糕的數據庫設計
      • 10.1.2 良好的數據庫設計
    • 10.2 軟件開發中,關于數據庫的設計
    • 10.3 設計數據庫的步驟:(個人博客)
      • 10.3.1 收集信息:分析需求
      • 10.3.2 標識實體(把需求落地到每個字段)
      • 10.3.3 標識實體之間的關系
    • 10.4 三大范式
      • 10.4.1 為什么需要信息規范化
      • 10.4.2 第一范式
      • 10.4.3 第二范式
      • 10.4.4 第三范式
      • 10.4.5 規范性和性能的問題


學習視頻來自于:秦疆(遇見狂神說)Bilibili地址
他的自學網站:kuangstudy

我們缺乏的不是知識,而是學而不厭的態度


十、規范數據庫設計

10.1 為什么需要設計

當數據庫比較復雜的時候,我們就需要設計了.

10.1.1 糟糕的數據庫設計

  • 數據冗余,浪費空間【表和表之間數據的重復】。
  • 數據庫插入和刪除都會麻煩、異?!酒帘问褂梦锢硗怄I】。
  • 程序性能差【冗余的數據庫導致程序的性能差】。
  • 10.1.2 良好的數據庫設計

  • 節省內存空間。
  • 保證數據庫的完整性【插入數據時,需要向那個表添加就向那個表添加,不需要考慮其他】。
  • 方便我們系統開發【優秀的數據庫設計】。
  • 10.2 軟件開發中,關于數據庫的設計

    • 分析需求:分析業務和需要處理的數據庫的需求
    • 概要設計:設計關系圖E-R圖

    10.3 設計數據庫的步驟:(個人博客)

    10.3.1 收集信息:分析需求

    • 用戶表(用戶登錄注銷,用戶的個人信息,寫博客,創建分類)
    • 分類表(文章分類,誰創建的)
    • 文章表(文章的信息)
    • 友鏈表(友情鏈接信息)
    • 評論表
    • 關注表
    • 自定義表(系統信息,某個關鍵的子,或者一些主體)
    • 說說(發表心情)

    10.3.2 標識實體(把需求落地到每個字段)

    tianyublog數據庫

    CREATE DATABASE IF NOT EXISTS `tianyublog` CHARACTER SET utf8 COLLATE utf8_general_ci

    user:用戶表

    CREATE TABLE `user` (`id` int(10) NOT NULL AUTO_INCREMENT COMMENT '用戶的唯一id',`username` varchar(60) NOT NULL COMMENT '用戶名',`password` varchar(60) NOT NULL COMMENT '用戶密碼',`sex` varchar(2) NOT NULL COMMENT '性別',`age` int(3) DEFAULT NULL COMMENT '年齡',`sign` varchar(200) DEFAULT NULL COMMENT '簽名',PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8

    category:分類表

    CREATE TABLE `category` (`id` int(10) NOT NULL COMMENT '分類id',`category_name` varchar(30) NOT NULL COMMENT '分類標題',`create_user_id` int(10) NOT NULL COMMENT '創建用戶的id',PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8

    blog:文章表

    CREATE TABLE `blog` (`id` int(10) NOT NULL COMMENT '文章的唯一標識',`title` varchar(100) NOT NULL COMMENT '文章標題',`anthor_id` int(10) NOT NULL COMMENT '編寫文章的用戶',`category_id` int(10) NOT NULL COMMENT '文章分類',`conent` text NOT NULL COMMENT '文章內容',`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改時間',`love` int(10) DEFAULT NULL COMMENT '喜歡',PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8

    links:友鏈表

    CREATE TABLE `links` (`id` int(10) NOT NULL COMMENT '友鏈id',`links` varchar(50) NOT NULL COMMENT '網站名稱',`href` varchar(2000) NOT NULL COMMENT '網站鏈接',`sort` int(10) NOT NULL COMMENT '排序',PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8

    comment:評論表

    CREATE TABLE `comment` (`id` int(10) NOT NULL COMMENT '評論id',`blog_id` int(10) NOT NULL COMMENT '所屬的文章',`user_id` int(10) NOT NULL COMMENT '評論人',`content` varchar(2000) NOT NULL COMMENT '評論的內容',`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '評論時間',`user_id_parent` int(10) NOT NULL COMMENT '回復的人id',PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8

    user_follow:關注表

    CREATE TABLE `user_follow` (`id` int(10) NOT NULL COMMENT '唯一標識',`user_id` int(10) NOT NULL COMMENT '被關注的id',`follow_id` int(10) NOT NULL COMMENT '關注人id',PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8

    10.3.3 標識實體之間的關系

    • 寫博客:user -->blog
    • 創建分類:user -->category
    • 關注:user -->user_follow
    • 友鏈:links
    • 評論:user–>comment

    10.4 三大范式

    10.4.1 為什么需要信息規范化

  • 信息重復(表與表之間信息重復)
  • 更新異常(使用外鍵導致)
  • 插入異常(表關聯過多,無法正常顯示信息,插入數據不完整)
  • 刪除異常(因為數據重復,刪除不完整,文章都刪除了,標題還在)
  • 10.4.2 第一范式

    第一范式需要要求數據庫表的每一列都是不可分割的原子數據項。

    10.4.3 第二范式

    前提:滿足第一范式
    第二范式需要確保數據庫表中的每一列都和主鍵相關,而不能只與主鍵的某一部分相關(主要針對聯合主鍵而言)。

    10.4.4 第三范式

    前提:滿足第一和第二范式
    第三范式需要確保數據表中的每一列數據都和主鍵直接相關,而不能間接相關。

    10.4.5 規范性和性能的問題

    阿里巴巴要求:關聯查詢的表不得超過3張表,

  • 考慮商業化的需求和目標,(成本和用戶體驗)數據庫的性能更加重要。
  • 在規范性能的問題時,需要適當考慮規范性就可以。
  • 故意給某一些表增加一些冗余字段,(從多表查詢中變為單表查詢,增強性能)
  • 總結

    以上是生活随笔為你收集整理的MySQL:规范数据库设计的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。