SQL DB - 關系型數據庫設計理論重要的術語
關系模型是一種基于表的數據模型,以下為關系學生信息,該表有很多不足之處,本文研究內容就是如何改進它:
下面是一些重要術語:
函數依賴
通過函數依賴關系,來幫助你確定表中的合理主外鍵等;這里只是簡介,有這么個概念就可以了,因為大多數情況你不用那些所謂的推倒關系,你也是可以憑借直覺設計出來的。
記 A->B 表示 A 函數決定 B,也可以說 B 函數依賴于 A。
如果 {A1,A2,... ,An} 是關系的一個或多個屬性的集合,該集合函數決定了關系的其它所有屬性并且是最小的,那么該集合就稱為鍵碼。
對于 A->B,如果能找到 A 的真子集 A',使得 A'-> B,那么 A->B 就是部分函數依賴,否則就是完全函數依賴。
對于 A->B,B->C,則 A->C 是一個傳遞函數依賴。
異常
介紹 不符合范式的關系,會產生很多異常,為了引出范式的內容。
以下的學生課程關系的函數依賴為 Sno, Cname -> Sname, Sdept, Mname, Grade,鍵碼為 {Sno, Cname}。也就是說,確定學生和課程之后,就能確定其它信息。
不符合范式的關系,會產生很多異常,主要有以下四種異常:
范式
范式理論是為了解決以上提到四種異常。
高級別范式的依賴于低級別的范式,1NF 是最低級別的范式。
1. 第一范式 (1NF)
屬性不可分。
2. 第二范式 (2NF)
每個非主屬性完全函數依賴于鍵碼。
可以通過分解來滿足。
分解前
以上學生課程關系中,{Sno, Cname} 為鍵碼,有如下函數依賴:
Grade 完全函數依賴于鍵碼,它沒有任何冗余數據,每個學生的每門課都有特定的成績。
Sname, Sdept 和 Mname 都部分依賴于鍵碼,當一個學生選修了多門課時,這些數據就會出現多次,造成大量冗余數據。
分解后
有以下函數依賴:
關系-2
有以下函數依賴:
3. 第三范式 (3NF)
非主屬性不傳遞函數依賴于鍵碼。
上面的 關系-1 中存在以下傳遞函數依賴:
可以進行以下分解:
關系-11
關系-12
SQL DB - 關系型數據庫設計流程
在上文知道如何設計表和健后,讓我們再看看整個的數據庫設計的標準流程吧,主要包括需求分析,概念結構設計,邏輯結構設計,物理設計,實施階段和運行和維護階段這6個階段,其中最重要的是邏輯結構設計。
規范設計的6個階段
按照規范設計的方法,考慮數據庫及其應用系統開發全過程,將數據庫設計分為以下6個階段
其中最為重要的是概念結構設計和邏輯結構設計,所以后面獨立兩個章節分別具體講:E-R圖和結構設計流程。
需求分析階段(常用自頂向下)
進行數據庫設計首先必須準確了解和分析用戶需求(包括數據與處理)。需求分析是整個設計過程的基礎,也是最困難,最耗時的一步。需求分析是否做得充分和準確,決定了在其上構建數據庫大廈的速度與質量。需求分析做的不好,會導致整個數據庫設計返工重做。
需求分析的任務,是通過詳細調查現實世界要處理的對象,充分了解原系統工作概況,明確用戶的各種需求,然后在此基礎上確定新的系統功能,新系統還得充分考慮今后可能的擴充與改變,不僅僅能夠按當前應用需求來設計。
調查的重點是,數據與處理。達到信息要求,處理要求,安全性和完整性要求。
分析方法常用SA( ) 結構化分析方法,SA方法從最上層的系統組織結構入手,采用自頂向下,逐層分解的方式分析系統。
數據流圖表達了數據和處理過程的關系,在SA方法中,處理過程的處理邏輯常常借助判定表或判定樹來描述。在處理功能逐步分解的同事,系統中的數據也逐級分解,形成若干層次的數據流圖。系統中的數據則借助數據字典(data ,DD)來描述。數據字典是系統中各類數據描述的集合,數據字典通常包括數據項,數據結構,數據流,數據存儲,和處理過程5個階段。
概念結構設計階段(常用自底向上)
概念結構設計是整個數據庫設計的關鍵,它通過對用戶需求進行綜合,歸納與抽象,形成了一個獨立于具體DBMS的概念模型。
設計概念結構通常有四類方法:
邏輯結構設計階段(E-R圖)
邏輯結構設計是將概念結構轉換為某個DBMS所支持的數據模型,并將進行優化。
在這階段,E-R圖顯得異常重要。大家要學會各個實體定義的屬性來畫出總體的E-R圖。
各分E-R圖之間的沖突主要有三類:屬性沖突,命名沖突,和結構沖突。
E-R圖向關系模型的轉換,要解決的問題是如何將實體性和實體間的聯系轉換為關系模式,如何確定這些關系模式的屬性和碼。
物理設計階段
物理設計是為邏輯數據結構模型選取一個最適合應用環境的物理結構(包括存儲結構和存取方法)。
首先要對運行的事務詳細分析,獲得選擇物理數據庫設計所需要的參數,其次,要充分了解所用的RDBMS的內部特征,特別是系統提供的存取方法和存儲結構。
常用的存取方法有三類:
數據庫實施階段
數據庫實施階段,設計人員運營DBMS提供的數據庫語言(如sql)及其宿主語言,根據邏輯設計和物理設計的結果建立數據庫,編制和調試應用程序,組織數據入庫,并進行試運行。
數據庫運行和維護階段
數據庫應用系統經過試運行后,即可投入正式運行,在數據庫系統運行過程中必須不斷地對其進行評價,調整,修改。
E-R圖
Entity-,有三個組成部分: 實體、屬性、聯系。
用來進行關系型數據庫系統的概念設計。
實體的三種聯系
包含一對一,一對多,多對多三種。
下圖的 Course 和 Student 是一對多的關系。
表示出現多次的關系
一個實體在聯系出現幾次,就要用幾條線連接。
下圖表示一個課程的先修關系,先修關系出現兩個 Course 實體,第一個是先修課程,后一個是后修課程,因此需要用兩條線來表示這種關系。
聯系的多向性
雖然老師可以開設多門課,并且可以教授多名學生,但是對于特定的學生和課程,只有一個老師教授,這就構成了一個三元聯系。
一般只使用二元聯系,可以把多元聯系轉換為二元聯系。
表示子類
用一個三角形和兩條線來連接類和子類,與子類有關的屬性和聯系都連到子類上,而與父類和子類都有關的連到父類上。
基于E-R圖的數據庫結構設計
上面6個階段比較抽象的,來看看實際重要的基于E-R圖的數據庫結構設計示例吧
確定及
確定業務規則。分析業務規則,確定你要采取哪種。比如,可能有這樣一種規則,一個部門有且只能有一個部門領導。這些規則將被設計到數據庫的結構中。
下面舉個例子,需求如下:ACME是一個小公司,在5個地方都設有辦事處。當前,有75名員工。公司準備快速擴大規模,劃分了9個部門,每個部門都有其領導。為有助于尋求新的員工,人事部門規劃了68種技能,為將來人事管理作好準備。員工被招進時,每一種技能的專業等級都被確定。
定義宏觀行為
一些ACME公司的宏觀行為包括:
確定及
我們可以確定要存放信息的主題領域(表)及其關系,并創建一個基于宏觀行為及描述的圖表。我們用方框來代表table,用菱形代表。我們可以確定哪些是一對多,一對一,及多對多。這是一個E-R草圖,以后會細化。
細化宏觀行為
以下微觀行為基于上面宏觀行為而形成:
這些微觀行為可用來確定需要哪些table或。
確定業務規則
業務規則常用于確定一對多,一對一,及多對多關系。
相關的業務規則可能有:
確定所需數據
要確定所需數據:
確定支持數據
你所確定的支持數據將會成為table中的字段名。比如,下列數據將適用于表,表Skill,表Expert In。
如果將這些數據畫成圖表,就像:
需要注意:
標準化數據
標準化是你用以消除數據冗余及確保數據與正確的table或相關聯的一系列測試。共有5個測試。本節中,我們將討論經常使用的3個。
標準化格式
標準化格式是標準化數據的常用測試方式。你的數據通過第一遍測試后,就被認為是達到第一標準化格式;通過第二遍測試,達到第二標準化格式;通過第三遍測試,達到第三標準化格式。
如何標準格式:
數據與鍵
在你開始標準化(測試數據)前,簡單地列出數據,并為每張表確定一個唯一的主鍵。這個鍵可以由一個字段或幾個字段(連鎖鍵)組成。
主鍵是一張表中唯一區分各行的一組字段。表的主鍵是 ID字段。Works In 中的主鍵包括Office Code及 ID字段。給數據庫中每一給出一個鍵,從其所連接的每一個table中抽取其鍵產生。
將數據放在第一遍的標準化格式中
將數據放在第二遍的標準化格式中
將數據放在第三遍的標準化格式中
考量關系
當你完成標準化進程后,你的設計已經差不多完成了。你所需要做的,就是考量關系。
考量帶有數據的關系
你的一些可能集含有數據。這經常發生在多對多的關系中。
遇到這種情況,將轉化為一個table。的鍵依舊成為table中的鍵。
考量沒有數據的關系
要實現沒有數據的關系,你需要定義外部鍵。外部鍵是含有另外一個表中主鍵的一個或多個字段。外部鍵使你能同時連接多表數據。
有一些基本原則能幫助你決定將這些鍵放在哪里:
一對多在一對多關系中,“一”中的主鍵放在“多”中。此例中,外部鍵放在表中。
一對一在一對一關系中,外部鍵可以放進任一表中。如果必須要放在某一邊,而不能放在另一邊,應該放在必須的一邊。此例中,外部鍵(Head ID)在表中,因為這是必需的。
多對多在多對多關系中,用兩個外部鍵來創建一個新表。已存的舊表通過這個新表來發生聯系。
檢驗設計
在你完成設計之前,你需要確保它滿足你的需要。檢查你在一開始時所定義的行為,確認你可以獲取行為所需要的所有數據:
最終設計
最終設計看起來就像這樣:
設計數據庫的表屬性
數據庫設計需要確定有什么表,每張表有什么字段。此節討論如何指定各字段的屬性。
對于每一字段,你必須決定字段名,數據類型及大小,是否允許NULL值,以及你是否希望數據庫限制字段中所允許的值。
選擇字段名
字段名可以是字母、數字或符號的任意組合。然而,如果字段名包括了字母、數字或下劃線、或并不以字母打頭,或者它是個關鍵字(詳見關鍵字表),那么當使用字段名稱時,必須用雙引號括起來。
為字段選擇數據類型
NULL與NOT NULL
如果一個字段值是必填的,你就將此字段定義為NOT NULL。否則,字段值可以為NULL值,即可以有空值。SQL中的默認值是允許空值;你應該顯示地將字段定義為NOT NULL,除非你有好理由將其設為允許空值。
選擇約束
盡管字段的數據類型限制了能存在字段中的數據(例如,只能存數字或日期),你或許希望更進一步來約束其允許值。
你可以通過指定一個“CHECK”約束來限制任意字段的值。你可以使用能在WHERE子句中出現的任何有效條件來約束被允許的值,盡管大多數CHECK約束使用BETWEEN或IN條件。
選擇主鍵及外部鍵
主鍵是唯一識別表中每一項記錄的字段。如何你的表已經正確標準化,主鍵應當成為數據庫設計的一部分。外部鍵是包含另一表中主鍵值的一個或一組字段。外部鍵關系在數據庫中建立了一對一及一對多關系。如果你的設計已經正確標準化,外部鍵應當成為數據庫設計的一部分。
來源:pdai.tech/md/db/sql/sql-db.html
ip地址與網絡上的其他系統有沖突怎么辦
ip地址與網絡上的其他系統有沖突是因為ip發生沖突,導致無法上網,其解決辦法是:1、設置成為由dhcp自動獲取;2、修改本機ip地址。
本文操作環境:系統,DELL G3電腦
ip地址與網絡上的其他系統有沖突怎么辦?
IP地址與網絡上的其他系統發生沖突的原因是:都是在一個路由器連接下上網的,難免IP會發生沖突。從而導致無法上網。
解決這個問題,可以按照以下幾個步驟進行。
1、設置成為由DHCP自動獲取
如果電腦在一個局域網內,并且網卡IP的地址是通過局域網服務器自動分配的,可以單擊“開始”按鈕,選擇“附件”中的“命令提示符”,在命令行狀態下輸入“ /renew”,讓系統釋放當前的IP地址,重新獲得一個新的地址。
如果電腦在IP地址是固定IP地址,可以另外設置一個。
2、修改本機IP地址
在電腦“常規”選項卡中的“此連接使且下列組件”列表框,選中“協議(TCP/IP)”,單擊“屬性”按鈕。在出現的“協議(TCP/IP)屬性”對話框中選擇“常規”選項卡“常規”選項卡中的“使用下列IP地址”單選按鈕,然后就可以在下面的文本框中填寫需要的IP地址,子網埯碼及默認網關了。
擴展資料:
ip地址與網絡上的其他系統有沖突原因:
1、IP地址相當于是每一個計算機唯一的身份證號碼,處于局域網的環境中,如果你的計算機的IP設置是192.168.2.10,另外一臺計算機的IP也設置成192.168.2.10,那么就會導致IP與其他系統沖突。
2、病毒問題:局域網ARP病毒攻擊導致的。ARP,即地址解析協議,實現通過IP地址得知其物理地址。ARP協議是TCP/IP協議組的一個協議,用于進行把網絡地址翻譯成物理地址(又稱MAC地址)。ARP病毒并不是某一種病毒的名字,而是對利用ARP協議的漏洞進行傳播的一類病毒的總稱。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。