[英]Do DBMSs store referencing attributes separately?
假設我有以下關系(表):
Student (id, name , family) Course (id, title, unit, ref) Std-Course (std-id, course-id)
//標准ID和課程ID是分別引用學生和課程關系的外鍵。
是將std-id和course-id分開存儲還是將它們僅存儲為指針? (特別是在MySql
和MS SQLSERVER
)
編輯 :讓我更多地解釋這種方式:
如果在Student
表中有這樣的行(123456, JOHN, SMITH)
,而在Std-Course
中的(123456,db1)
是123456
存儲兩次或存儲在第二個表中(作為外鍵),那僅僅是鏈接嗎?
根據文檔:
MySQL支持外鍵和外鍵約束,這些外鍵使您可以跨表交叉引用相關數據,外鍵約束可以幫助保持擴展數據的一致性。
意思是,我們使用子級以及父級來存儲數據。 foreign key ... references ...
的指令將存儲在系統表table_constraints
以維護表之間已定義的關系 。
編輯 :
如果Student表中有這樣的行(
123456
,JOHN
,SMITH
),而Std-Course
中有(123456
,db1
)行,則123456
是存儲兩次還是存儲在第二個表中(作為外鍵),它只是一個鏈接?
它被存儲兩次。 第一個在父表中,第二個在子表中。
引用不直接是表數據的一部分。 它們是對數據庫系統的指令,並以其自己的稱為information_schema
的模式進行維護。
表table_constraints
是該模式的一部分,並包含有關在mysql
當前實例下跨各種數據庫定義的所有這樣的約束的信息。
參考 :
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.