查了下相關資料,目前有兩種實現方式,1是通過dtd,2是schema
1 dtd作為xml的一種老結構描述方式,採用的不同於xml的語法規則,而且不支援資料型別,基本被淘汰,在此不議 。
2 schema是完善了dtd的不足,以下是實現方式,相信有些簡單基礎的朋友都能看明白:
如果曾經嘗試用 dtd 來描述具有複雜關係對映的關聯式資料庫,那麼好象必須使用 id-idref指向機制。例如,在乙個結構中,兩個實體通過一張關係表表示相互聯絡的多對多關係(例如,bbs論壇應用中使用者和帖子),簡單的 xml 父子關係是不夠的。然而,id 和 idref 有其自身弱點:在整個文件中,id 必須是唯一的,並且 idref 宣告沒有指定 idref 屬性的例項必須引用的元素型別。xml schema,提供了一種與關聯式資料庫中宣告的外來鍵關係幾乎相同的方式來指定這些指向關係。例如,bbs論壇中使用者表與帖子表有乙個外來鍵關係,該外來鍵關係不能用xml中簡單的父子關係來表達。
key,keyref示例:bbs.xsd
在 pubuser 元素的復合型別中的鍵定義宣告了 nuserid 屬性必須出現在所有 nuserid 元素中,並且在 pubuser 元素上的所有 nuserid 屬性中它必須是唯一的(注意,這與 id 不同,無論與該元素相關的是什麼元素,該 id 是唯一的)。然後,在 bbsthread 元素的復合型別中的 keyref 定義宣告了 nuserid 字段必須與文件中的 pubuser 元素的 nuserid 字段之一到處相匹配。這種鍵機制的另一好的特性是,該鍵可能是強型別 -與 id 和 idref 相反,它們必須是 xml 名稱標記 -所以您可以在表中不加修改地使用自動遞增的主鍵。定義組合鍵以便建立主鍵(用 key 元素)和外來鍵(用 keyref 元素)也是可能的,這些鍵直接對映到現有關聯式資料庫中出現的主鍵(或外來鍵)。
bbs.xsd
<?xml version="1.0" encoding="utf-8"?>
--> 定義鍵 pubuserpk
--> 指明元素路徑
--> 指明元素名稱
--> 定義鍵
-->定義鍵bbsthreadfk,refer指明對映到鍵pubuserpk
--> 指明元素路徑
--> 指明元素名稱
EFCore中如何移除主外來鍵關係
我用efcore寫了乙個blog程式,我要通過寫文章來分享自己的知識,我定義了乙個article用來存放文章資訊,我還定義了乙個category用來存放文章的分類,category與article是一對的關係。我的 實現如下 article public class article public i...
C 如何物理刪除有主外來鍵約束的記錄 儲存過程實現
十年河東,十年河西,莫欺少年窮 本篇主旨是如何物理刪除有主外來鍵約束的記錄!那麼,我們從主外來鍵走起!下面新建三張有主外來鍵約束的表,分別為 系 學院表,專業班表,學生表,如下 create table dept 系 學院表 deptid intidentity 1,1 primary key,de...
如何在MySQL中設定外來鍵約束
mysql外來鍵設定詳解 1 外來鍵的使用 外來鍵的作用,主要有兩個 乙個是讓資料庫自己通過外來鍵來保證資料的完整性和一致性 乙個就是能夠增加er圖的可讀性 有些人認為外來鍵的建立會給開發時運算元據庫帶來很大的麻煩.因為資料庫有時候會由於沒有通過外來鍵的檢測而使得開發人員刪除,插入操作失敗.他們覺得...