圖文分析ADO.NET DataTable約束
工作了很長時間了,也有了一點點的經驗,看到網上的帖子問道如何定義Datatable的主鍵,在這里就簡單的分析一下。根據數據庫基本理論,所謂表中的主鍵用于對記錄行進行唯一標識的屬性或者屬性集合的統稱,同樣DataTable的主鍵屬性接受含有一個或多個DataColumn對象的數組。設置單個列為DataTable的主鍵,請看下面的使用示例代碼:
- objStudentTable.PrimaryKey = new DataColumn[]{objStudentTable.Columns["StudentNo"]}
代碼中將表objStudentTable的"StudentNo"列作為表的主鍵。
#T#注意:上面的代碼示例中“objStudentTable”是DataTable對象的引用名,DataTable對象還有個表名,如“Student”。前面在講DataTable實例化時,提到將表名字符串作為參數傳給構造函數,這個字符串傳給DataTable對象的TableName屬性,而TableName屬性就是前面所指的表名。DataTable對象引用名和表名不能混為一談,DataTable對象引用名是以對象角度去考慮數據表,編程中用的較多,而表名是從數據庫角度考慮,設計中用的較多。同樣道理,DataColumn對象、DataSet對象也存在同樣的情況,請讀者使用時留意。
為DataTable對象設置復合主鍵,請看下面的使用示例代碼:
- objStudentTable.PrimaryKey = new DataColumn[]{objStudentTable.Columns["StudentNo"], objStudentTable.Columns["StudentName"]};
代碼中將表objStudentTable的"StudentNo"列和"StudentName"的組合作為表的主鍵。
ADO.NET DataTable約束
所謂關系型數據庫的約束,實質是數據庫理論中三個參照完成整性的規定:實體完整性(主屬性非空唯一性),參照完整性(外鍵可以為空,一旦添加數據則必須受制于主表的主鍵約束)和用戶定義完整性(用戶自行規定的屬性規則)。DataTable對象的屬性Constraints就是用來進行對關系型數據表進行約束的,它里面可以包含若干Constraint對象,每個Constraint對象是這個ADO.NET DataTable約束。約束的作用是用于維護數據的正確性和有效性。主要體現在兩個方面,請見ADO.NET DataTable約束圖所示:

其中ForeignKeyConstraint表示刪除或更新某個值或行時,對主鍵/外鍵關系中一組列強制進行的操作限制。UniqueConstraint表示對一組列的限制,列中的所有值必須是唯一的。