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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL:规范数据库设计

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

文章目錄

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


學(xué)習(xí)視頻來自于:秦疆(遇見狂神說)Bilibili地址
他的自學(xué)網(wǎng)站:kuangstudy

我們?nèi)狈Φ牟皇侵R,而是學(xué)而不厭的態(tài)度


十、規(guī)范數(shù)據(jù)庫設(shè)計

10.1 為什么需要設(shè)計

當(dāng)數(shù)據(jù)庫比較復(fù)雜的時候,我們就需要設(shè)計了.

10.1.1 糟糕的數(shù)據(jù)庫設(shè)計

  • 數(shù)據(jù)冗余,浪費(fèi)空間【表和表之間數(shù)據(jù)的重復(fù)】。
  • 數(shù)據(jù)庫插入和刪除都會麻煩、異常【屏蔽使用物理外鍵】。
  • 程序性能差【冗余的數(shù)據(jù)庫導(dǎo)致程序的性能差】。
  • 10.1.2 良好的數(shù)據(jù)庫設(shè)計

  • 節(jié)省內(nèi)存空間。
  • 保證數(shù)據(jù)庫的完整性【插入數(shù)據(jù)時,需要向那個表添加就向那個表添加,不需要考慮其他】。
  • 方便我們系統(tǒng)開發(fā)【優(yōu)秀的數(shù)據(jù)庫設(shè)計】。
  • 10.2 軟件開發(fā)中,關(guān)于數(shù)據(jù)庫的設(shè)計

    • 分析需求:分析業(yè)務(wù)和需要處理的數(shù)據(jù)庫的需求
    • 概要設(shè)計:設(shè)計關(guān)系圖E-R圖

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

    10.3.1 收集信息:分析需求

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

    10.3.2 標(biāo)識實(shí)體(把需求落地到每個字段)

    tianyublog數(shù)據(jù)庫

    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 '分類標(biāo)題',`create_user_id` int(10) NOT NULL COMMENT '創(chuàng)建用戶的id',PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8

    blog:文章表

    CREATE TABLE `blog` (`id` int(10) NOT NULL COMMENT '文章的唯一標(biāo)識',`title` varchar(100) NOT NULL COMMENT '文章標(biāo)題',`anthor_id` int(10) NOT NULL COMMENT '編寫文章的用戶',`category_id` int(10) NOT NULL COMMENT '文章分類',`conent` text NOT NULL COMMENT '文章內(nèi)容',`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時間',`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 '網(wǎng)站名稱',`href` varchar(2000) NOT NULL COMMENT '網(wǎng)站鏈接',`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 '評論的內(nèi)容',`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '評論時間',`user_id_parent` int(10) NOT NULL COMMENT '回復(fù)的人id',PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8

    user_follow:關(guān)注表

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

    10.3.3 標(biāo)識實(shí)體之間的關(guān)系

    • 寫博客:user -->blog
    • 創(chuàng)建分類:user -->category
    • 關(guān)注:user -->user_follow
    • 友鏈:links
    • 評論:user–>comment

    10.4 三大范式

    10.4.1 為什么需要信息規(guī)范化

  • 信息重復(fù)(表與表之間信息重復(fù))
  • 更新異常(使用外鍵導(dǎo)致)
  • 插入異常(表關(guān)聯(lián)過多,無法正常顯示信息,插入數(shù)據(jù)不完整)
  • 刪除異常(因?yàn)閿?shù)據(jù)重復(fù),刪除不完整,文章都刪除了,標(biāo)題還在)
  • 10.4.2 第一范式

    第一范式需要要求數(shù)據(jù)庫表的每一列都是不可分割的原子數(shù)據(jù)項(xiàng)。

    10.4.3 第二范式

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

    10.4.4 第三范式

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

    10.4.5 規(guī)范性和性能的問題

    阿里巴巴要求:關(guān)聯(lián)查詢的表不得超過3張表,

  • 考慮商業(yè)化的需求和目標(biāo),(成本和用戶體驗(yàn))數(shù)據(jù)庫的性能更加重要。
  • 在規(guī)范性能的問題時,需要適當(dāng)考慮規(guī)范性就可以。
  • 故意給某一些表增加一些冗余字段,(從多表查詢中變?yōu)閱伪聿樵?#xff0c;增強(qiáng)性能)
  • 總結(jié)

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

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。