4

プログラミングをするたびに、このクラスとテーブルの関係を認識するか、想像しています。

データベーステーブルごとにクラス、またはクラスごとにテーブルを持つことができます。

    tables: customer, products, order.

    classes: customer, products, order, may have methods such as addRecord, deleteRecord, updateRecord.

これは何と呼ばれていますか?オブジェクトリレーショナル? 私は DBA ではありません。

4

2 に答える 2

7

ボブの答えに加えて、以下。

オブジェクト モデリングでは、クラスとサブクラスの間の関係は継承によって処理されます。オブジェクト モデル作成者は、継承をうまく利用する方法を知っています。リレーショナル データ モデルと、ひいては SQL データベースは、継承を実装していません。同じ結果を得るには、テーブルを設計する必要があります。

ER (Entity-Relationship) モデリングでは、対応する概念を一般化/専門化と呼びます。これは、クラス/サブクラスの関係をモデル化する方法を示していますが、データベースを構築するときにテーブルを設計する方法は示していません。

クラスとサブクラスを扱う際に非常に役立つ、よく理解されている 3 つのテクニックがあります。タグは次のとおりです: . 残念ながら、データベース設計に関する多くのチュートリアルでは、これらの手法について説明していません。これらは、オブジェクト モデリングの知識があり、リレーショナル モデリングを習得したい人にとって非常に役立ちます。

于 2013-02-16T16:21:03.160 に答える
6

それはすべて、使用しているデータベースのタイプによって異なります。オブジェクト指向データベース(OODB)を使用している場合、オブジェクトと永続化されたデータは同じものであるため、関係はありません。たとえば、Customerクラスがあり、それを OODB に保存すると、その顧客のインスタンスがDB に格納されます。

リレーショナル データベースを使用している場合、クラス インスタンスと、DB 内のそれらの永続的な表現は同じものになる可能性がありますが、多くの場合、そうではありません。これは、ほとんどの人が(リレーショナル DB で) 効率的な方法でデータを表現するために正規化を使用しているためです。これは、クラスごとにテーブルを持つ代わりに、複数のテーブルで表されるクラスを持つことができることを意味します。このCustomer例では、テーブルはCustomer(名前、生年月日、およびその他のプロパティを含む) およびOrder(さらに別のテーブル内の製品を指している順序を含む) である可能性があります。この理由はカーディナリティと、Customers複数の注文があること。ビジネス ロジックが DB からのこの情報を必要とする場合、データ アクセス層の仕事は、DB からのデータ ( ORMと呼ばれる) をクラスにマップすることです。

さらに別の種類の DB を使用している場合は、クラス (ドメイン モデル) と DB に保持されているものとの間に異なる関係があります。

しかし、この関係に名前がある限り?いいえ、名前はありません。

于 2013-02-16T14:33:50.987 に答える