ホームページ  >  記事  >  データベース  >  オブジェクトの識別とオブジェクトとテキスト

オブジェクトの識別とオブジェクトとテキスト

PHPz
PHPz転載
2023-08-31 22:25:16534ブラウズ

オブジェクトの識別とオブジェクトとテキスト

DBMS は、オブジェクト指向データをサポートします。これにより、実世界のオブジェクトとデータベース内のその表現との間の直接の対応が確保されます。この対応により、オブジェクトの整合性と同一性が確保されます。これにより、簡単な識別が可能になります。オブジェクト データ管理システム (ODMS) は、データベースに格納されている独立した各オブジェクトに一意の ID を割り当てます。

この一意の ID は、システム生成のオブジェクト識別子 (OID) を通じて実現されます。この OID は、システムによって各オブジェクトに割り当てられる一意の値として機能します。外部ユーザーには表示されません。ただし、システムはこれを内部的に使用して、各オブジェクトの一意の識別を保証し、オブジェクト間の参照を確立および管理します。必要に応じて、システムはオブジェクトに関係する操作に適切なタイプのプログラム変数に OID を割り当てます。

不変性と一意性

オブジェクト データ管理システム (ODMS) のオブジェクト識別子 (OID) の主な要件は不変性です。特定のオブジェクトに割り当てられた OID 値が変更されず、現実世界におけるオブジェクトの ID が確実に保持されることが重要です。 . ODMS には、OID を生成し、その不変性を強制するためのメカニズムが組み込まれている必要があります。各 OID は一意で、一度だけ使用されることが望ましいです。オブジェクトがデータベースから削除された場合でも、その OID を別のオブジェクトに再割り当てする必要はありません。

これらの要件を満たすには、OID はオブジェクトの属性値に依存すべきではありません。属性値は時間の経過とともに変更または修正される可能性があるため、これが必要です。リレーショナル モデルでは、各関係に主キーが必要です。場合主キーの値が変更されると、タプルは新しい ID を考慮します。リレーションが異なると、現実世界のオブジェクトはそのキー属性に異なる名前を持つ可能性があります。キーが同じ現実世界のオブジェクトを表すかどうかを判断する際に課題が生じる可能性があります。たとえば、オブジェクト識別子は、あるリレーションでは「Emp_id」として表され、別のリレーションでは「Ssn」として表される場合があります。

効率的な取得のためにオブジェクト識別子 (OID) を使用する

ストレージ内のオブジェクトの物理アドレス上のオブジェクト識別子 (OID) は、データベース管理システム (DBMS) では不適切であると考えられます。これは、データベースの物理的な再編成に続いて物理アドレスが変更される可能性があるためです。ただし、一部の初期のオブジェクトデータ管理システム (ODMS) は、オブジェクト検索の効率を高めるために、OID として物理アドレスを採用しています。

物理アドレスの変更に適応するために、間接ポインタを含むメカニズムを使用できます。このポインタは元のアドレスに配置され、オブジェクトの新しい物理的位置を提供します。ただし、現代の実践では、長整数を OID として割り当てることがより一般的です。その後、ハッシュ テーブルまたは同様のデータ構造を使用して、OID 値をストレージ内のオブジェクトの現在の物理アドレスにマップします。このアプローチにより、OID は物理的な再編成の影響を受けず、効率的なオブジェクトの取得が可能になります。

OID に関する初期のアプローチと課題

初期のオブジェクト指向 (OO) データ モデルでは、単純な値や複雑なオブジェクトを含むすべてのエンティティをオブジェクトとして表現するという要件がありました。その結果、整数、文字列、ブール値などの各基本値がオブジェクト識別子 (OID) が割り当てられました。このアプローチにより、同一の基本値が異なる OID を持つことが可能になり、特定の状況では有利になる可能性があります。たとえば、整数値 50 は、あるコンテキストでの重量をキログラム単位で表し、年齢を表すことができます。別のコンテキスト内の人物。別個の OID を持つ 2 つの異なる基本オブジェクトを作成すると、両方のオブジェクトが整数値 50 を表すことができます。ただし、このアプローチには理論的価値はありますが、多数の OID が生成されるため、非実用的であることが判明しました。

この制限に対処するために、ほとんどのオブジェクト指向データベース システムは、オブジェクトおよびリテラル (または値) 表現をサポートするようになりました。各オブジェクトには、一意の識別を保証するために、不変の OID が割り当てられている必要があります。対照的に、リテラル値には OID がなく、単にそれ自体の値を表します。通常、リテラル値はオブジェクト内に格納され、他のオブジェクトから参照することはできません。さらに、多くのシステムでは、必要に応じて、対応する OID なしで複雑な構造のリテラル値を作成することができます。

以上がオブジェクトの識別とオブジェクトとテキストの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。