『壹』 簡述資料庫的三大範式和五大約束
範式書上講解太拗口,自己總結一下:
第一範式:數據表中的每一列(每個欄位)必須是不可拆分的最小單元,不允許存在隱藏欄位,屬性保持「原子性」(最大細分的二維表)
第二範式:第一範式基礎上要有主鍵,所有列都必須依賴於主鍵,而不能有任何一列與主鍵沒有關系,也就是說一個表只描述一件事情(相當於這行闡述的是一個人時,你不能加一列說明天氣)
第三範式:滿足第二範式,表中的每一列只與主鍵直接相關而不是間接相關,(表中的每一列只能依賴於主鍵)
正規化範式(BCDF):所有表中的決定因素必須是一個候選鍵,如果只有一個候選鍵,那麼就和第三範式是一樣的。
有第四第五範式,更高的範式是為了解決數據冗餘問題,但可以通過其他辦法達到。所以一般用不到
五大約束:
1. primary KEY :設置主鍵約束;
2. UNIQUE :設置唯一性約束,不能有重復值;
3. DEFAULT 默認值約束,height DOUBLE(3,2)DEFAULT 1.2 height不輸入是默認為1,2
4. NOT NULL :設置非空約束,該欄位不能為空;
5. FOREIGN key :設置外鍵約束。
『貳』 什麼是資料庫的完整性約束條件
資料庫完整性(Database
Integrity)是指資料庫中數據的正確性和相容性,其目的是防止垃圾數據的進出。資料庫完整性由各種各樣的完整性約束來保證,因此可以說資料庫完整性設計就是資料庫完整性約束的設計。加在資料庫之上的語義約束條件就是資料庫完整性約束條件。
完整性約束條件作用對象可以使關系、元組、列三種。
●列約束主要是列的數據類型、取值范圍、精度、排序等約束條件。
●元組的約束是元組中各個欄位間的聯系的約束。
●關系的約束是若干元組間、關系集合上以及關系之間的聯系的約束。
完整性約束條件涉及這三類對象,其狀態可以是靜態的,也可以是動態的。所謂靜態約束是指資料庫每一確定狀態時的數據對象所應滿足的約束條件。它是反映資料庫狀態合理性的約束,這是最重要的一類完整性約束。
動態約束是指資料庫從一種狀態轉變為另一種狀態時,新、舊值之間所應滿足的約束條件。
完整性約束條件可分為以下六類:
●靜態列級約束
●靜態元組約束
●靜態關系約束
●動態列級約束
●動態元組約束
●動態關系約束
1.
靜態列級約束是對一個列的取值域的說明,包括以下幾個方面:
(1)對數據類型的約束,包括數據的類型、長度、單位、精度等;
(2)對數據格式的約束。例如規定日期的格式為YYYY-MM-DD;
(3)對取值范圍或取值集合的約束。例如規定學生的成績取值范圍為0~100;
(4)對空值的約束,規定哪些列可以為空值,哪些列不能為空值;
2.
靜態元組約束就是規定元組的各個列之間的約束關系。例如,訂貨關系中包含發貨量、訂貨量等列,規定發貨量不得超過訂貨量。
3.
靜態關系約束是指在一個關系的各個元組之間或者若干關系之間存在的約束。常見的靜態約束有:
(1)實體完整性約束;
(2)引用完整性約束;
(3)函數依賴約束;大部分函數依賴約束都在關系模式中定義。
(4)統計約束;即欄位值與關系中多個元組的統計值之間的約束關系。例如,規定部門經理的工資不得高於本部門職工平均工資的5倍,不得低於本部門職工平均工資的2倍。
4.
動態列級約束是修改列定義或列值時應滿足的約束條件,包括下面兩方面:
(1)修改列定義時的約束。例如,將允許空值的列改為不允許空值時,如果該列目前已存在空值,則拒絕這種修改。
(2)修改列值時的約束。修改列值時有時需要參照其舊值,並且新舊值之間需要滿足某種約束條件。例如,職工調整後的工資不得低於其調整前的原來工資;職工婚姻狀態的變化只能是由未婚到已婚、已婚到離異、離異到再婚等幾種情況。
5.
動態元組約束是指修改元組的值時元組中各個欄位間需要滿足某種約束條件。例如,職工工資調整時新工資不得低於原工資+工齡*1.5等。
6.
動態關系約束是加在關系變化前後狀態上的限制條件。例如,在集成電路晶元設計資料庫中,一個設計中用到的所有單元的工藝必相同,因此,在更新某個設計單元時,設計單元的新老工藝必須保持一致。
『叄』 簡要介紹資料庫表的約束和主要類型、作用
首先應該說下什麼是資料庫約束?
資料庫約束是為了保證數據的完整性而實現的一套機制,它具體的根據各個不同的資料庫的實現而有不同的工具。所以我們在學習約束的時候就會看到域完整性(Domain Integrity)、實體完整性(Entity Integrity)、參照完整性(Referential Integrity)與用戶定義完整性(User-defined Integrity)的不同的約束分類。但我今天就說下我們或是我們有些人剛接觸資料庫的同學,並且從SQL語言基礎了解並學習到的。
1、非空約束(Not Null Constraint)
這個可能大家都了解,就是我們在添加那個表 userinfo,在id、name後面都添加了not null,就是有些列不能把它設為空,相信大家都理解,我就說下我在一個英文資料看到的一段英文:The not null specification prohibits the insertion
of a null value for this attribute.Any database modifucation that would cause a null to be inserted in an attribute declared to be not null generates an error diagnostic.(大家就得自己翻譯了)
2、唯一約束(Unique Constraint)
一個唯一約束並不包括一個NULL值。直接在欄位定義後加入UNIQUE即可定義該唯一約束。
1) 一個表只能創建一個主鍵約束,但一個表可以根據需要對不同的列創建若干unique約束
2)主鍵欄位不允許為null ,unique允許為空
3)一般創建主鍵約束時,系統自動產生簇索引,unique約束自動產非簇索引
3、檢查約束(The Check Clause)
通過在定義資料庫表裡,在欄位級或者是在表級加入的檢查約束,使其滿足特定的要求。
我來舉一個例子
create table student (
name varchar(15) not null,
student_id varchar(15),
degree_level varchar(15),
primary key(student_id),
check(degree_level in('Bachelors','Masters','Doctorate')));
Here ,we use the check clause to simulate an enumerated type by specifying that degree_level must to be one of 'Bachelors','Masters','Doctorate';
4、主鍵約束(Primary Key Constraint)
其實主鍵約束就是一張表只能建立一個主鍵約束,其實就是唯一約束+非空約束。大家通過上課討論那麼多關於「依賴」的事情,估計大家都能理解了
5、外健約束( Foreign Key Constraint)
Foreign Key Constraint主要是確保同一個表或者不同表之間的引用完整性,所以必須引用一個PRIMARY KEY或者UNIQUE約束,用戶必須在應用表上具有REFERENCES許可權;一個表中最多可以有31個外部鍵約束; 在臨時表中,不能使用外部鍵約束; 主鍵和外部鍵的數據類型必須嚴格匹配 。這個就不多說了給大家推薦一個網站http://tech.sina.com.cn/s/2010-01-04/00481199365.shtml
系摘抄....
網上隨便搜索一下,大把大把的~~~
『肆』 資料庫完整性里主要有那些約束
參照完整性
指建立兩個關系建立聯系的主外鍵的約束
foreign
key
外鍵
4,實體完整性.域完整性保證表中數據的合理性
check
檢查
default
默認
not
null
不為空
unique
唯一約束
3。
1.實體完整性
指關系的主關鍵字不為空且不重復
primary
key
主鍵
2、參照完整性和用戶定義完整性域完整性.用戶自定義完整性除了上述關鍵字
『伍』 資料庫有哪幾種類型約束
主鍵約束:要求主鍵列數據唯一,並且不允許為空。唯一約束:要求該列唯一,允許為空,但只能出現一個
空值
。檢查約束:某列取值范圍限制、格式限制等。默認約束:某列的
默認值
。外鍵約束:用於在兩表之間建立
關系
,需要指定引用主表的哪一列。
『陸』 資料庫中約束的類型有幾種
約束類型
總的來說有五種:唯一性和主鍵約束、外鍵約束、檢查約束、空值約束、默認值約束,
約束的簡介
數據的完整性是指數據的正確性和一致性,可以通過定義表時定義完整性約束,也可以通過規則,索引,觸發器等。約束分為兩類:行級和表級,處理機制是一樣的。行級約束放在列後,表級約束放在表後,多個列共用的約束放在表後。
完整性約束是一種規則,不佔用任何資料庫空間。完整性約束存在數據字典中,在執行SQL或PL/SQL期間使用。用戶可以指明約束是啟用的還是禁用的,當約束啟用時,他增強了數據的完整性,否則,則反之,但約束始終存在於數據字典中。
有五大關鍵詞,UNIQUE和Primary Key, Foreign Key, CHECK, NOT NULL, DEFAULT
『柒』 關系資料庫的三個完整性約束是什麼各是什麼含義
可分為三種類型:與表有關的約束、域(Domain)約束、斷言(Assertion)。
1、與表有關的約束:是表中定義的一種約束。可在列定義時定義該約束,此時稱為列約束,也可以在表定義時定義約束,此時稱為表約束。包括列約束(表約束+NOTNULL)和表約束(PRIMARYKEY、foreignkey、check、UNIQUE)。
2、域(Domain)約束:在域定義中被定義的一種約束,它與在特定域中定義的任何列都有關系。
3、斷言(Assertion):在斷言定義時定義的一種約束,它可以與一個或多個表進行關聯。不必與特定的列綁定,可以理解為能應用於多個表的check約束,因此必須在表定義之外獨立創建斷言。
(7)資料庫列約束有哪些擴展閱讀:
完整性約束中包含四個完整性,即域完整性,實體完整性、參照完整性和用戶定義完整性。
1、域完整性為保證資料庫欄位取值的合理性。屬性值應是域中的值,這是關系模式規定了的。除此之外,一個屬性能否為NULL,這是由語義決定的,也是域完整性約束的主要內容。
2、實體完整性,指關系的主關鍵字不能重復也不能取「空值"。一個關系對應現實世界中一個實體集。現實世界中的實體是可以相互區分、識別的,也即它們應具有某種惟一性標識。
3、參照完整性,定義建立關系之間聯系的主關鍵字與外部關鍵字引用的約束條件。關系資料庫中通常都包含多個存在相互聯系的關系,關系與關系之間的聯系是通過公共屬性來實現的。
4、用戶定義完整性,則是根據應用環境的要求和實際的需要,對某一具體應用所涉及的數據提出約束性條件。
『捌』 什麼是資料庫約束
oracle資料庫約束
約束用於確保資料庫數滿足業務規則。
約束包括:NOT
NULL,UNIQUE,PRIMARY
KEY,FOREIGN
KEY以及CHECK等5種類型。
建立主鍵約束和唯一約束時,Oralce會基於約束列自動建立唯一索引;主鍵約束不允許為NULL,唯一約束允許為NULL。
一張表只能建立一個主鍵約束。
建表約束:NOT
NULL只能在列級定義;其它4種既可以在列級定義,也可以在表級定義。復合主鍵約束只能在表級定義。
維護約束:增加NOT
NULL約束時必須使用MODIFY子句,而增加其它約束時需要使用ADD子句。
第一,
定義約束
『玖』 資料庫的五種約束關系是什麼主外鍵有什麼用。求教
資料庫的約束是為了體現資料庫完整性的。
實體完整性有primary key (主鍵)
參照完整性有foreign key (外鍵)
用戶自定義完整性有:列表非空(NOT NULL),列表唯一(UNIQUE),
檢查列值是否滿足一個布爾表達式(CHECK)
通常就上面這5個了
後面更深還會有其他的,但是估計你現在還不用
現在我給你解釋,主外鍵
主鍵就是在一個表中,能夠唯一代表各元組值得
就像我們的身份證號,全世界只有一個,是獨一無二的屬性
外鍵就是在一個表中,參照其他表中的主鍵的本表屬性
就像在SC表中有Sno不是主鍵,但它參照了S表中的主鍵Sno,所以Sno在SC表中就是外鍵啦
希望我的回答能讓你理解這中知識。
不懂可以再問