首頁 資料庫 mysql教程 关系数据库设计

关系数据库设计

Jun 07, 2016 pm 03:47 PM
關係 基本 數據 資料庫 規範 設計

1. 基本设计规范 构造数据 库 必 须 遵循一定的 规则 。在 关 系数据 库 中, 这种规则 就是范式。范式是符合某一 种级别 的 关 系模式的集合。 关 系数据 库 中的 关 系必 须满 足一定的要求,即 满 足不同的范式。目前 关 系数据 库 有六 种 范式:第一范

1.基本设计规范

构造数据遵循一定的规则。在系数据中,这种规则就是范式。范式是符合某一种级别系模式的集合。系数据中的系必须满足一定的要求,即足不同的范式。目前系数据有六范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、第四范式(4NF)、第五范式(5NF)和第六范式(6NF)。足最低要求的范式是第一范式(1NF)。在第一范式的基步满足更多要求的称第二范式(2NF),其余范式以次推。一般来,数据只需足第三范式(3NF)就行了。下面我们举例介第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。

1.1 第一范式(1NF

在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范式(1NF)中表的每一行只包含一个实例的信息。例如,职工号,姓名,电话号码组成一个“员工信息表”(一个人可能有一个办公室电话和一个家里电话号码),不能将员工信息都放在一列中显示,也不能将其中的两列或多列在一列中显示;员工信息表的每一行只表示一个员工的信息,一个员工的信息在表中只出现一次。

按照1NF采取三方法进行规范:

一是重储职工号和姓名。这样关键字只能是电话
二是工号为关键字,电话为单电话和住宅电话两个属性
三是工号为关键字,但记录只能有一个电话
以上三个方法,第一方法最不可取,按实际情况取后两情况。

而言之,第一范式就是无重的列。

1.2 第二范式(2NF

第二范式(2NF)是在第一范式(1NF)的基上建立起来的,即足第二范式(2NF)必足第一范式(1NF)。第二范式(2NF)要求数据表中的例或行必可以被唯一地区分。为实现区分通常需要表加上一个列,以存各个例的唯一标识。例如在工信息表中加上了号(emp_id)列,因为每工的号是唯一的,因此工可以被唯一区分。个唯一属性列被称关键字或主、主。第二范式(2NF)要求体的属性完全依于主关键字。所完全依是指不能存在关键字一部分的属性,如果存在,那么这个属性和主关键字的一部分应该分离出来形成一个新的体,新体与原体之是一多的系。为实现区分通常需要表加上一个列,以存各个例的唯一标识

例如:假定选课关系表SelectCourse包含(学号, 姓名, , 程名称, , 学分)字段,关键为组关键(学号, 程名称),因存在如下决定系:

   (学号, 程名称) → (姓名, , , 学分)

   个数据表不足第二范式,因存在如下决定系:

   (程名称) → (学分)

   (学号) → (姓名, )

   即存在关键字中的部分字段决定非关键字的情况。

   由于不符合2NF选课关系表会存在如下问题

   (1) 数据冗余:

   同一门课程由n个学生修,"学分"就重n-1次;同一个学生修了m门课程,姓名和年就重m-1次。

   (2) 更新异常:

   若整了某门课程的学分,数据表中所有行的"学分"都要更新,否会出同一门课程学分不同的情况。

   (3) 插入异常:

   假开设新的程,暂时还没有人修。这样,由于没有"学号"关键字,程名称和学分也无法记录入数据

   (4) 除异常:

   假一批学生已完成程的修,记录应该从数据表中除。但是,与此同程名称和学分信息也被除了。很然,也会致插入异常。

   要解决上述问题把选课关系表SelectCourse如下三个表:

   学生:Student(学号, 姓名, )

   程:Course(程名称, 学分)

   选课关系:SelectCourse(学号, 程名称, )

   这样的数据表是符合第二范式的,消除了数据冗余、更新异常、插入异常和除异常。

   另外,所有单关键字的数据表都符合第二范式,因不可能存在关键字。

而言之,第二范式就是非主属性非部分依于主关键字。

1.3 第三范式(3NF

足第三范式(3NF)必足第二范式(2NF)。在第二范式的基上,数据表中如果不存在非关键字段任一候选关键字段的传递函数依赖则符合第三范式。所谓传递函数依,指的是如果存在"A → B → C"的决定系,C传递函数依A。因此,足第三范式的数据应该不存在如下依赖关系:

   关键字段关键字段x → 关键字段y

   例如:假定学生系表Student(学号, 姓名, , 所在学院, 学院地点, 学院电话)关键为单关键"学号",因存在如下决定系:

   (学号) → (姓名, , 所在学院, 学院地点, 学院电话)

   个数据是符合2NF的,但是不符合3NF,因存在如下决定系:

   (学号) → (所在学院) → (学院地点, 学院电话)

   即存在非关键字段"学院地点""学院电话"对关键字段"学号"传递函数依

   它也会存在数据冗余、更新异常、插入异常和除异常的情况,者可自行分析得知。

   把学生系表分如下两个表:

   学生:(学号, 姓名, , 所在学院)

   学院:(学院, 地点, 电话)

   这样的数据表是符合第三范式的,消除了数据冗余、更新异常、插入异常和除异常。

而言之,第三范式就是属性不依于其它非主属性。第三范式(3NF)要求一个数据表中不包含已在其它表中已包含的非主关键字信息。例如,存在一个部信息表,其中个部有部门编号(dept_id)、部名称、部门简介等信息。那
工信息表中列出部门编号后就不能再将部名称、部门简介等与部的信息再加入工信息表中。如果不存在部信息表,根据第三范式(3NF)也应该构建它,否就会有大量的数据冗余。

 

1.4依斯-科得范式(BCNF

如果系模式RUF)的所有属性(包括主属性和非主属性)都不传递R的任何候选关键字,那R是属于BCNF的。或是系模式R,如果个决定因素都包含关键字(而不是被关键字所包含),RCNF系模式。
例:配件管理系模式 WPEWNOPNOENOQNT)分仓库号,配件号,工号,数量。有以下条件:

a.一个仓库有多个工。
b.
一个在一个仓库工作。
c.
仓库里一型号的配件由负责,但一个人可以管理几配件。
d.
同一型号的配件可以分放在几个仓库中。
分析:

由以上得 PNO 不能确定QNT,由合属性(WNOPNO)来决定,存在函数依WNOPNO -> ENO。由于仓库里的一配件由负责,而一个人可以管理几配件,所以有合属性(WNOPNO)才能确定负责人,有(WNOPNO-> ENO。因 一个在一个仓库工作,有ENO -> WNO。由于仓库里的一配件由负责,而一个在一个仓库工作,有(ENOPNO-> QNT

找一下候选关键字,因WNOPNO -> QNT,(WNOPNO-> ENO ,因此 (WNOPNO)可以决定整个元,是一个候选关键字。根据ENO->WNO,(ENOPNO->QNT,故(ENOPNO)也能决定整个元另一个候选关键字。属性ENOWNOPNO 主属性,只有一个非主属性QNT。它任何一个候选关键字都是完全函数依的,并且是直接依,所以该关系模式是3NF

分析一下主属性。因ENO->WNO,主属性ENOWNO的决定因素,但是它本身不是关键字,只是关键字的一部分。就造成主属性WNO另外一个候选关键字(ENOPNO)的部分依,因ENOPNO-> ENO但反来不成立,而P->WNO,故(ENOPNO-> WNO 也是传递

然没有非主属性选关键字传递,但存在主属性选关键字的传递,同也会来麻。如一个新工分配到仓库工作,但暂时处实习阶段,没有独立负责对某些配件的管理任。由于缺少关键字的一部分PNO而无法插入到该关系中去。又如某个人改成不管配件了去负责安全,除配件的同时该职工也会被除。
解决法:分成管理EPENOPNOQNT),关键字是(ENOPNO)工作EWENOWNO)其关键字是ENO
缺点:

分解后函数依的保持性差。如此例中,由于分解,函数依WNOPNO-> ENO 失了, 因而原来的语义有所破坏。没有体仓库里一部件由负责。有可能出一部件由两个人或两个以上的人来同管理。因此,分解之后的系模式降低了部分完整性束。

一个系分解成多个系,要使得分解有意,起的要求是分解后不失原来的信息。些信息不包括数据本身,而且包括由函数依所表示的数据之的相互制行分解的目是达到更高一范化程度,但是分解的同两个问题:无损联接性和保持函数依。有往往不可能做到既有无损联接性,又完全保持函数依。需要根据需要衡。

 

1.5

目地:范化目的是使构更合理,消除存异常,使数据冗余尽量小,便于插入、除和更新
:遵从概念一化 "一事一地",即一个系模式描述一个体或的一种联系。范的实质就是概念的一化。
方法:将系模式投影分解成两个或两个以上的系模式。
要求:分解后的系模式集合当与原系模式"等价",即经过自然接可以恢系而不失信息,并保持属性合理的系。

注意:一个系模式结这分解可以得到不同系模式集合,也就是分解方法不是唯一的。最小冗余的要求必以分解后的数据表达原来数据所有信息前提来实现。其根本目省存,避免数据不一致性,提高对关系的操作效率,同时满用需求。实际上,并不一定要求全部模式都达到BCNF不可。有故意保留部分冗余可能更方便数据查询。尤其于那些更新度不高,查询频度极高的数据更是如此。

系数据中,除了函数依之外有多接依问题,从而提出了第四范式,第五范式等更高一范化要求。在此,以后再。通常的数据库设计,很少有人做到很符合以上几个范式的,一般来,第一范式大家都可以遵守,完全遵守第二第三范式的人很少了,遵守的人一定就是设计数据的高手了,BCNF的范式出机会少,而且会破坏完整性,你可以在做设计不考它,当然在ORACLE中可通器解决其缺点。以后我共同做设计,也希望大家遵守以上几个范式。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1665
14
CakePHP 教程
1424
52
Laravel 教程
1322
25
PHP教程
1270
29
C# 教程
1249
24
vivo訊號最強手機! vivo X100s搭載寰宇訊號放大系統:21天線、360°環繞設計 vivo訊號最強手機! vivo X100s搭載寰宇訊號放大系統:21天線、360°環繞設計 Jun 03, 2024 pm 08:41 PM

5月13日消息,vivoX100s今晚正式發布,除了出色的影像,新機在訊號方面表現也十分強悍。根據vivo官方介紹,vivoX100s採用了創新的寰宇訊號放大系統,該系統配備了高達21根天線。這項設計基於直屏進行了重新優化,以平衡5G、4G、Wi-Fi、GPS以及NFC等眾多訊號需求。這使得vivoX100s成為了vivo有史以來訊號接收能力最強的手機。新款手機還採用了獨特的360°環繞設計,天線分佈在機身周圍。這項設計不僅增強了訊號的強度,還針對日常各種握持姿勢進行了優化,避免了因握持方式不當導

榮耀Magic V3首發AI離焦護眼技術:有效緩和近視發展 榮耀Magic V3首發AI離焦護眼技術:有效緩和近視發展 Jul 18, 2024 am 09:27 AM

7月12日消息,榮耀MagicV3系列今日正式發布,搭載全新榮耀視力舒緩綠洲護眼屏,在屏幕本身俱備高規格和高素質的同時,還開創性的引入AI主動式護眼技術。據悉,傳統的緩解近視的方式是“近視鏡”,近視眼鏡度數均勻分佈,保證了視線中心區域成像在視網膜之上,但周邊區域成像在視網膜後,視網膜感應到成像在後,促進眼軸向後生長,從而使度數加深。目前主要的緩解近視發展的方式之一是“離焦鏡”,其中心區域度數正常,週邊區域透過光學設計分區調整,從而使周邊區域成像落在視網膜前,

iOS 18 新增「已復原」相簿功能 可找回遺失或損壞的照片 iOS 18 新增「已復原」相簿功能 可找回遺失或損壞的照片 Jul 18, 2024 am 05:48 AM

蘋果公司最新發布的iOS18、iPadOS18以及macOSSequoia系統為Photos應用程式增添了一項重要功能,旨在幫助用戶輕鬆恢復因各種原因遺失或損壞的照片和影片。這項新功能在Photos應用的"工具"部分引入了一個名為"已恢復"的相冊,當用戶設備中存在未納入其照片庫的圖片或影片時,該相冊將自動顯示。 "已恢復"相簿的出現為因資料庫損壞、相機應用未正確保存至照片庫或第三方應用管理照片庫時照片和視頻丟失提供了解決方案。使用者只需簡單幾步

AI新創集體跳槽OpenAI,Ilya出走後安全團隊重整旗鼓! AI新創集體跳槽OpenAI,Ilya出走後安全團隊重整旗鼓! Jun 08, 2024 pm 01:00 PM

上週,在內部的離職潮和外部的口誅筆伐之下,OpenAI可謂是內憂外患:-侵權寡姐引發全球熱議-員工簽署“霸王條款”被接連曝出-網友細數奧特曼“七宗罪」闢謠:根據Vox獲取的洩漏資訊和文件,OpenAI的高級領導層,包括Altman在內,非常了解這些股權回收條款,並且簽署了它們。除此之外,還有一個嚴峻而迫切的問題擺在OpenAI面前——AI安全。最近,五名與安全相關的員工離職,其中包括兩名最著名的員工,「超級對齊」團隊的解散讓OpenAI的安全問題再次被置於聚光燈下。 《財星》雜誌報道稱,OpenA

1399元起 榮耀X60i手機開售:視覺四等邊OLED直屏 1399元起 榮耀X60i手機開售:視覺四等邊OLED直屏 Jul 29, 2024 pm 08:25 PM

7月29日消息,榮耀X60i手機今日正式開售,先發1,399元。設計上,榮耀X60i手機採用居中挖孔直屏設計,四邊近乎無界的超窄邊框,大大拓寬了視野邊界。榮耀X60i參數顯示器:6.7吋高清顯示器電池:5000mAh大容量電池處理器:天璣6080處理器(台積電6nm,2x2.4G的A76+6×2G的A55)系統:MagicOS8.0系統其他功能: 5G訊號增強靈動膠囊螢幕下指紋雙MIC降噪知識問答攝影能力:後置雙攝系統:5000萬像素主攝200萬像素輔助鏡頭前置自拍鏡頭:800萬像素價格:8GB

如何在PHP中處理資料庫連線錯誤 如何在PHP中處理資料庫連線錯誤 Jun 05, 2024 pm 02:16 PM

PHP處理資料庫連線報錯,可以使用下列步驟:使用mysqli_connect_errno()取得錯誤代碼。使用mysqli_connect_error()取得錯誤訊息。透過擷取並記錄這些錯誤訊息,可以輕鬆識別並解決資料庫連接問題,確保應用程式的順暢運作。

在PHP中使用MySQLi建立資料庫連線的詳盡教學 在PHP中使用MySQLi建立資料庫連線的詳盡教學 Jun 04, 2024 pm 01:42 PM

如何在PHP中使用MySQLi建立資料庫連線:包含MySQLi擴充(require_once)建立連線函數(functionconnect_to_db)呼叫連線函數($conn=connect_to_db())執行查詢($result=$conn->query())關閉連線( $conn->close())

全新堆疊工藝!小米MIX Fold 4首搭金沙江「立體異型」電池 全新堆疊工藝!小米MIX Fold 4首搭金沙江「立體異型」電池 Jul 20, 2024 am 03:20 AM

7月19日消息,小米MIXFold4首旗艦折疊新機今晚正式發布,首次搭載「立體異形電池」。據介紹,小米MIXFold4在電池技術上實現了重大突破,專為折疊螢幕設計了創新的「立體異形電池」。傳統折疊式螢幕設備多採用常規方形電池,空間利用效率較低。為解決此問題,小米沒有採用常見的捲繞式電芯,而是全新開發疊片製程,打造全新形態的電池,大幅提升了空間利用率。電池技術創新為了實現精確交替堆疊正負極片,確保鋰離子安全嵌入,小米開發了新型超音波焊接機和疊片機,提高了焊接和裁切精

See all articles