簡體   English   中英

如何確保循環關系表上的參照完整性

[英]How to ensure referential integrity at circular relationship tables

我有類似的架構

在這個數據庫中

  • 本章有很多作用
  • 本章有很多訪客
  • 訪客屬於角色

我的問題是,如何確保the visitor and its role should have same chapter_id

有任何想法嗎?

您不需要在visitor表中的Chapter_id。 這是多余的,因為您可以從role_id告訴訪問者所屬的章節。

筆記

[p x]   = predicate  x
(c x.y) = constraint x.y

PK = Primary Key
AK = Alternate Key   (Unique)
SK = Proper Superkey (Unique)
FK = Foreign Key

All attributes (columns) NOT NULL

[p 1]角色ROLE_ID存在。

(c 1.1)角色由ROLE_ID標識

role {ROLE_ID}  -- p 1
  PK {ROLE_ID}  -- c 1.1

[p 2]PERSON_ID存在。

(c 2.1)人員由PERSON_ID標識

person {PERSON_ID} -- p 2
    PK {PERSON_ID} -- c 2.1

[p 3]存在CHAPTER_ID章。

(c 3.1)章由CHAPTER_ID標識

chapter {CHAPTER_ID}  -- p 3
     PK {CHAPTER_ID}  -- c 3.1

[p 4]PERSON_ID具有角色ROLE_ID

(c 4.1)對於每個人,該人可以擔任多個職務;
對於每個角色,該角色可能屬於一個以上的人。

(c 4.2)如果某人有角色,則該人必須存在

(c 4.3)如果一個人有一個角色,那么該角色必須存在

person_role {PERSON_ID, ROLE_ID}    -- p 4
         PK {PERSON_ID, ROLE_ID}    -- c 4.1

        FK1 {PERSON_ID} REFERENCES
     person {PERSON_ID}             -- c 4.2

        FK2 {ROLE_ID} REFERENCES
       role {ROLE_ID}               -- c 4.3

[p 5]第章章CHAPTER_ID角色為ROLE_ID

(c 5.1)對於每一章,該章可以扮演多個角色; 對於每個角色,該角色可能屬於多個章節。

(c 5.2)如果某章有角色,則該章必須存在

(c 5.3)如果某章具有角色,則該角色必須存在

chapter_role {CHAPTER_ID, ROLE_ID}      -- p 5
          PK {CHAPTER_ID, ROLE_ID}      -- c 5.1

         FK1 {CHAPTER_ID} REFERENCES
     chapter {CHAPTER_ID}               -- c 5.2

         FK2 {ROLE_ID} REFERENCES
        role {ROLE_ID}                  -- c 5.3

[第6頁]PERSON_ID與角色ROLE_ID參觀章CHAPTER_ID其作用ROLE_ID -在某個時間點。

(c 6.1)對於每個人,在某個時間點該人可能訪問了多個章節。 對於每一章,在某個時間點可能已經有多個人訪問了該章。

(c 6.2)如果某人訪問了某個具有某一角色的章節,則該人必須具有該角色。

(c 6.3)如果有角色的人訪問了一章,則該章必須具有該角色。

visit {PERSON_ID, CHAPTER_ID, ROLE_ID}          -- p 6
   PK {PERSON_ID, CHAPTER_ID}                   -- c 6.1

        FK1 {PERSON_ID, ROLE_ID} REFERENCES
person_role {PERSON_ID, ROLE_ID}                -- c 6.2

         FK2 {CHAPTER_ID, ROLE_ID} REFERENCES
chapter_role {CHAPTER_ID, ROLE_ID}              -- c 6.3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM