物件標識,物件與字面量
DBMS 支援面向物件資料。它確保現實世界物件與其在資料庫中的表示之間存在直接對應關係。這種對應關係確保物件保持其完整性和標識。它使輕鬆識別和操作成為可能。物件資料管理系統 (ODMS) 為儲存在資料庫中的每個獨立物件分配唯一的標識。
此唯一標識透過系統生成的 物件識別符號 (OID) 實現。此 OID 充當系統為每個物件分配的獨特值。外部使用者無法看到它。但是,系統會在內部使用它來確保每個物件的唯一標識,並建立和管理物件之間的引用。根據需要,系統會將 OID 分配給適當型別的程式變數,以及涉及物件的運算。
不變性和唯一性
物件資料管理系統 (ODMS) 中的物件識別符號 (OID) 的主要要求是不變性。為特定物件分配的 OID 值保持不變至關重要,以確保物件在現實世界中身份的保留。ODMS 必須包含生成 OID 和強制其不變性的機制。每個 OID 都是唯一的並且只使用一次是理想的。即使物件從資料庫中刪除,其 OID 也不能重新分配給另一個物件。
為了滿足這些要求,OID 不應依賴於物件的任何屬性值。這是必要的,因為屬性值可能會隨著時間的推移而發生變化或被糾正。在關係模型中,每個關係都需要主鍵。如果主鍵的值被更改,則元組將被視為新的標識。在不同的關係中,現實世界中的物件可能對其關鍵屬性具有不同的名稱。這可能會在確定鍵是否表示相同的現實世界物件時造成挑戰。例如,物件識別符號在一個關係中可以表示為“Emp_id”,而在另一個關係中可以表示為“Ssn”。
使用物件識別符號 (OID) 進行高效檢索
在資料庫管理系統 (DBMS) 中,物件識別符號 (OID) 儲存在物件的物理地址上是不合適的。這是因為在資料庫的物理重組之後,物理地址可能會發生變化。但是,一些早期的物件資料管理系統 (ODMS) 已經使用物理地址作為 OID 以提高物件檢索效率。
為了適應物件的物理地址發生變化的情況,可以使用涉及間接指標的機制。該指標放置在以前的地址處,並提供物件的新的物理位置。但是,在現代實踐中,更常見的是將長整數作為 OID 分配。隨後,使用雜湊表或類似的資料結構將 OID 值對映到儲存中物件的當前物理地址。這種方法確保 OID 不受任何物理重組的影響,同時仍然能夠高效地檢索物件。
早期的 OID 方法和挑戰
在早期的面向物件 (OO) 資料模型中,需要將所有實體(包括簡單值和複雜物件)表示為物件。因此,每個基本值(如整數、字串或布林值)都被分配了一個物件識別符號 (OID)。這種方法允許相同的基值擁有不同的 OID,這在某些情況下可能是有利的。例如,整數 50 在一種情況下可以表示以千克為單位的重量,而在另一種情況下可以表示一個人的年齡。透過建立兩個具有單獨 OID 的不同基本物件,這兩個物件都可以表示整數 50。但是,雖然這種方法具有理論價值,但它被證明是不切實際的,因為它導致了大量 OID 的生成。
為了解決此限制,大多數面向物件資料庫系統現在都支援物件和字面量(或值)的表示。每個物件都必須分配一個不可變的 OID,以確保其唯一標識。相反,字面值不擁有 OID,而只是表示其自身的值。通常,字面值儲存在物件中,並且不能被其他物件引用。此外,在許多系統中,如果需要,可以建立複雜的結構化字面值而無需相應的 OID。