列和約束演算法
約束,主要為了維護資料庫的完整性而定義的一些規則,列約束作為列定義的一部分只作用於此列本身。表約束作為表定義的一部分,可以作用於多個列。在這里舉幾個例子。
1.主鍵約束
主關鍵字約束指定表的一列或幾列的組合的值在表中具有惟一性,即能惟一地指定一行記錄。每個表中只能有一列被指定為主關鍵字,且IMAGE 和TEXT 類型的列不能被指定為主關鍵字,也不允許指定主關鍵字列有NULL 屬性。
多列組成的主鍵叫聯合主鍵,聯合主鍵就是表級約束,單列主鍵就是列級約束。
2.唯一性約束
某一列的值,在這個表中,只能出現一個,比如身份證號碼等
3.外鍵約束
外關鍵字約束定義了表之間的關系。當一個表中的一個列或多個列的組合和其它表中的主關鍵字定義相同時,就可以將這些列或列的組合定義為外關鍵字,並設定它適合哪個表中哪些列相關聯
等等,不一一列舉了。
② 關系資料庫的三個完整性約束是什麼各是什麼含義
可分為三種類型:與表有關的約束、域(Domain)約束、斷言(Assertion)。
1、與表有關的約束:是表中定義的一種約束。可在列定義時定義該約束,此時稱為列約束,也可以在表定義時定義約束,此時稱為表約束。包括列約束(表約束+NOTNULL)和表約束(PRIMARYKEY、foreignkey、check、UNIQUE)。
2、域(Domain)約束:在域定義中被定義的一種約束,它與在特定域中定義的任何列都有關系。
3、斷言(Assertion):在斷言定義時定義的一種約束,它可以與一個或多個表進行關聯。不必與特定的列綁定,可以理解為能應用於多個表的check約束,因此必須在表定義之外獨立創建斷言。
(2)列和約束演算法擴展閱讀:
完整性約束中包含四個完整性,即域完整性,實體完整性、參照完整性和用戶定義完整性。
1、域完整性為保證資料庫欄位取值的合理性。屬性值應是域中的值,這是關系模式規定了的。除此之外,一個屬性能否為NULL,這是由語義決定的,也是域完整性約束的主要內容。
2、實體完整性,指關系的主關鍵字不能重復也不能取「空值"。一個關系對應現實世界中一個實體集。現實世界中的實體是可以相互區分、識別的,也即它們應具有某種惟一性標識。
3、參照完整性,定義建立關系之間聯系的主關鍵字與外部關鍵字引用的約束條件。關系資料庫中通常都包含多個存在相互聯系的關系,關系與關系之間的聯系是通過公共屬性來實現的。
4、用戶定義完整性,則是根據應用環境的要求和實際的需要,對某一具體應用所涉及的數據提出約束性條件。
③ 資料庫有哪幾種類型約束
主鍵約束(Primary Key constraint):要求主鍵列數據唯一,並且不允許為空。
唯一約束(Unique constraint):要求該列唯一,允許為空,但只能出現一個空值。
檢查約束(Check constraint):某列取值范圍限制,格式限制等,如有關年齡、郵箱(必須有@)的約束。
默認約束(Default constraint):某列的默認值,如在資料庫里有一項數據很多重復,可以設為默認值。
外鍵約束(Foreign Key constraint):用於在兩個表之間建立關系,需要指定引用主表的哪一列。
(3)列和約束演算法擴展閱讀
主鍵約束在表中定義一個主鍵來唯一確定表中每一行數據的標識符。
(非空,唯一)
例如:
alter table member
add
constraint PK_member_member_no primary key clustered (member_no)
主鍵列的數據類型不限,但此列必須是唯一並且非空。
如該表中已有主鍵為1000的行,則不能再添加主鍵為1000。
人工或程序不好控制的時候,也可以設置主鍵列為自動增長列。
主鍵主要用在查詢單調數據,修改單調數據和刪除單調數據上。做程序的時候,都將表的主鍵設置為int型的可自增的列,這樣在編程的時候,很容易區分數據。
④ 列和生成約束演算法在雙層模型中的運用
一般建模軟體在平面層和三維層都有相控參數這一模塊,應用沉積相控制物性參數,最好粗化成輸出模型。比如在DIRECT裡面步驟是這樣的:1)提取單井相:按照優勢相的比例提取;按照優勢相門限值提取