資料庫完整性

来源:http://www.cnblogs.com/xidongyu/archive/2016/10/26/6002152.html
-Advertisement-
Play Games

廣義完整性:語義完整性,併發控制,安全控制,故障恢復 狹義完整性:專指語義完整性 完整性涉及實體完整性,參照完整性,用戶自定義完整性 DBMS保證完整性 由資料庫管理員來定義完整性規則,當用戶進行資料庫操作時。先由完整性控製程序根據完整性規則來檢查請求是否合法,如果合法則交給DBMS執行更新操作。 ... ...


廣義完整性:語義完整性,併發控制,安全控制,故障恢復

狹義完整性:專指語義完整性

完整性涉及實體完整性,參照完整性,用戶自定義完整性

DBMS保證完整性

由資料庫管理員來定義完整性規則,當用戶進行資料庫操作時。先由完整性控製程序根據完整性規則來檢查請求是否合法,如果合法則交給DBMS執行更新操作。

image

完整性約束分類

按約束對象分類

  • 域完整性約束條件

施加於某一列上的約束,比如姓名只能是男或者女

  • 關係完整性約束

涉及到多列,比如城市的取值必須依賴於省份

按約束來源分類

  • 結構約束

函數依賴約束,主鍵約束,外鍵約束

  • 內容約束

來自用戶的約束,取值範圍等等

按約束狀態分類

  • 靜態約束

在任意時刻均滿足的約束:例如人的年齡應該大於0而小於150(假定人最多活150)

  • 動態約束

要求屬性值從一種狀態到另一種狀態的約束,例如:人的年齡只能增加,不能減少

 

約束的實現

當我們在創建表的時候可以添加列完整性約束和表完整性約束。下麵是列約束的基本格式

image

示例

image

我們創建了一個student表,在表中定義了下麵屬性

  • S#  不能取空值且取值唯一
  • Sname 無約束
  • Ssex  定義了一個名為ctssex的約束,方便以後修改表結構時來通過約束名來直接修改約束。該約束的內容是檢測屬性值是否為男或者女,檢查成功則允許更新
  • Sage 檢查屬性值是否在1到150之間,符合條件則更新
  • D# 將該屬性定義為外鍵,對應Dept表中的主鍵D#,on delete cascade是關聯性操作。表示在Dept表中某一元組被刪除(該元組的主鍵值為001),則在student表中對應的元組(該元組中的外鍵值為001)也應該被刪除。

表約束格式

image

示例

image

圖中的藍色字體是表約束,定義了主鍵為C#,定義了一個約束為ctcc,該約束涉及到兩列Chours和Credit。

image

為表定義外鍵,當然上面的表約束也可以直接變為列約束

image

check中也可以直接寫查詢語句

修改約束

image


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

-Advertisement-
Play Games
更多相關文章
  • docker鏡像、容器、倉庫的基本概念 鏡像 Docker 鏡像就是一個只讀的模板。例如:一個鏡像可以包含一個完整的 CentOS 操作系統環境,裡面僅安裝了 httpd或用戶需要的其它應用程式。 鏡像可以用來創建 Docker 容器。 Docker 提供了一個很簡單的機制來創建鏡像或者更新現有的鏡 ...
  • 五分鐘認識docker 什麼是docker? 把他想象成一個用了一種新穎方式實現的超輕量虛擬機,在大概效果上也是正確的。當然在實現的原理和應用上還是和VM有巨大差別的,並且專業的叫法是應用容器(Application Container)。 為啥要用docker? 那麼應用容器長什麼樣子呢,一個做好 ...
  • 1. linux 基礎命令 who, which, basename, dirname, echo, type, hash, whatis, makewhatis, man, info, help, ls, cd,pwd, mkdir, rmdir, touch, rm, date, hwcolck ...
  • Navicat for MySQL 10.1.7註冊碼 用戶名、組織、註冊碼均為:NAVN-LNXG-XHHX-5NOO。 ...
  • 一、前言 生命不息,折騰不止。近期公司有數據遷移的計劃,從Sqlserver遷移到mysql,雖說網上有很多數據遷移方案,但閑著也是閑著,就自己整一個,權當做是練練手了 二、解決思路 整個遷移過程類似於ETL,將數據從來源端經過抽取(extract)、轉換(transform)、載入(load)至目 ...
  • 1、查詢當前用戶的所有表(自己的表) 2、查詢Oracle中所有的系統許可權,一般是DBA 3、查詢Oracle所有的角色,一般是DBA; 4、查詢Oracle中所有對象許可權 5、查詢資料庫的表空間 6、查詢當前用戶具有什麼樣的系統許可權 7、查詢當前用戶在其他用戶的表上具有什麼樣的對象許可權 8、查看某 ...
  • 好久不用mysql,今天突然想用的時候, mysql -uroot -p 直接報了下麵的錯誤 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) mac可以在設置裡面 ...
  • TensorBoard簡介 Tensorflow發佈包中提供了TensorBoard,用於展示Tensorflow任務在計算過程中的Graph、定量指標圖以及附加數據。大致的效果如下所示, TensorBoard工作機制 TensorBoard 通過讀取 TensorFlow 的事件文件來運行。Te ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...