資料庫設計三大範式

来源:http://www.cnblogs.com/jc535201285/archive/2017/02/04/6364289.html
-Advertisement-
Play Games

資料庫設計範式 什麼是範式:簡言之就是,資料庫設計對數據的存儲性能,還有開發人員對數據的操作都有莫大的關係。所以建立科學的,規範的的資料庫是需要滿足一些 規範的來優化數據數據存儲方式。在關係型資料庫中這些規範就可以稱為範式。 什麼是三大範式: 第一範式:當關係模式R的所有屬性都不能在分解為更基本的數 ...


資料庫設計範式

什麼是範式:簡言之就是,資料庫設計對數據的存儲性能,還有開發人員對數據的操作都有莫大的關係。所以建立科學的,規範的的資料庫是需要滿足一些

規範的來優化數據數據存儲方式。在關係型資料庫中這些規範就可以稱為範式。

什麼是三大範式:

第一範式:當關係模式R的所有屬性都不能在分解為更基本的數據單位時,稱R是滿足第一範式的,簡記為1NF。滿足第一範式是關係模式規範化的最低要

求,否則,將有很多基本操作在這樣的關係模式中實現不了。

第二範式:如果關係模式R滿足第一範式,並且R得所有非主屬性都完全依賴於R的每一個候選關鍵屬性,稱R滿足第二範式,簡記為2NF。

第三範式:設R是一個滿足第一範式條件的關係模式,X是R的任意屬性集,如果X非傳遞依賴於R的任意一個候選關鍵字,稱R滿足第三範式,簡記為3NF.

註:關係實質上是一張二維表,其中每一行是一個元組,每一列是一個屬性

理解三大範式

第一範式

   1、每一列屬性都是不可再分的屬性值,確保每一列的原子性

 

   2、兩列的屬性相近或相似或一樣,儘量合併屬性一樣的列,確保不產生冗餘數據。

 

 

 

如果需求知道那個省那個市並按其分類,那麼顯然第一個表格是不容易滿足需求的,也不符合第一範式。

 

 

 

顯然第一個表結構不但不能滿足足夠多物品的要求,還會在物品少時產生冗餘。也是不符合第一範式的。

 

第二範式

 

每一行的數據只能與其中一列相關,即一行數據只做一件事。只要數據列中出現數據重覆,就要把表拆分開來。

 

 

一個人同時訂幾個房間,就會出來一個訂單號多條數據,這樣子聯繫人都是重覆的,就會造成數據冗餘。我們應該把他拆開來。

 

 

 

 

 

這樣便實現啦一條數據做一件事,不摻雜複雜的關係邏輯。同時對錶數據的更新維護也更易操作。

 

第三範式

 數據不能存在傳遞關係,即沒個屬性都跟主鍵有直接關係而不是間接關係。像:a-->b-->c  屬性之間含有這樣的關係,是不符合第三範式的。

比如Student表(學號,姓名,年齡,性別,所在院校,院校地址,院校電話)

這樣一個表結構,就存在上述關係。 學號--> 所在院校 --> (院校地址,院校電話)

這樣的表結構,我們應該拆開來,如下。

(學號,姓名,年齡,性別,所在院校)--(所在院校,院校地址,院校電話)

 

最後:

三大範式只是一般設計資料庫的基本理念,可以建立冗餘較小、結構合理的資料庫。如果有特殊情況,當然要特殊對待,資料庫設計最重要的是看需求跟性能,需求>性能>表結構。所以不能一味的去追求範式建立資料庫。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • var myArray=new Array();for(var i=0;i<3;i++){ myArray[i]=new Array(); for(var j=0;j<6;j++){ myArray[i][j]=i*j; document.write(myArray[i][j]+"\n"); }} ...
  • html上現在有比較好用的表格控制項是datatable,但是編輯、按鈕等部分是收費的,只有基礎功能免費。而且尺寸發生變化時需要手工刷新等繁瑣操作較多。所以我開發一個免費的供大家使用。 本項目已用於“虛空伺服器開發套件”。目前主要支持微軟Edge瀏覽器,Chrome瀏覽器,其它未測。 tbl.js完全 ...
  • 安裝SVN 查看是否安裝成功: 登陸SVN 登陸的svn是公司的伺服器 接著輸入用戶名與密碼即可。 這裡的co是登陸後檢出最新版本。 更新update 這時候就能在我們的目錄中發現我們的文件了 然後進入進行更新即可。 問題 有時候更新報錯: 如果你認為安裝並登陸且檢出文件後就可以直接更新的話,那就不 ...
  • 資料庫 字元集 UTF-8 GBK 創建表結構 與Excel類似 儘量都是小寫 SQLSERVER首字母大寫 首碼後加下劃線 數據類型 varchar bit 常用來表示性別 int varchar datetime PHP特點,存時間戳的時候用varchar text 主鍵 自增長列 外鍵 外鍵關 ...
  • 上述代碼是產品列表涉及的主要服務方法,下麵是具體實現: 產品列表的列表返回對象為: elasticsearchHelper類: ...
  • 資料庫基本概念">關係型資料庫基本概念 資料庫: 對大量信息進行管理的高效解決方案。 按照數據結構來組織、存儲和管理數據的庫。 資料庫系統(DBS,DATABASE SYSTEM): 資料庫(DB,DATABASE) + 資料庫管理系統(DBMS,DATABASE MANAGEMENT SYSTEM ...
  • 第一範式:確保每列的原子性. 如果每列(或者每個屬性)都是不可再分的最小數據單元(也稱為最小的原子單元),則滿足第一範式. 例如:顧客表(姓名、編號、地址、……)其中"地址"列還可以細分為國家、省、市、區等。第二範式:在第一範式的基礎上更進一層,目標是確保表中的每列都和主鍵相關. 如果一個關係滿足第 ...
  • 年後回來查看mysql運行狀況與備份情況,登錄mysql從庫查看主從同步狀態 突然之間Slave_IO_Running: 狀態變成NO了 解決方法。 首先在從庫上執行 stop slave; 查看主庫master狀態 刷新binlog日誌 flush logs; 刷新後的日誌會+1 例如上面的 Fi ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...