2017-09-07 7 views
0

私はSQLストアドプロシージャのマニュアルを書いていますが、私はリレーショナルデータベース理論に習熟していませんが、できるだけ正確にしたいと思います。私はテーブルがエンティティを表すことを知っています。私はレコード/行が何を表しているのかを知る必要があります。私はそれがエンティティ何かになると思います:多分エンティティオブジェクトですか?エンティティのインスタンス化?リレーショナルデータベース:テイル行が表すものの正式な言葉は何ですか?

私はその本質を私の問題として再表明しています。私のテーブルにはcustomerという名前のテーブルがあります。私は同じ名前のテーブルを持っている別のデータベースに行を挿入する必要があります。しかし、私のデータベースには顧客ごとに1つの行があります。私が何かを変更すると、私はSQLの更新を行います。私が他のデータベースに何かを変更した場合は、更新を行うべきではなく、新しい行全体を作成する必要があります。その場合、 "change"の値を持つstatusという特別なフィールドがあります。

...私の全面的な問題は、正式な仕様でこれを記述しようとすることです。私たちのデータベースの各エンティティのインスタンス化(???)は、エンティティ自体ではなく、実際には挿入/更新コマンドを表している他のデータベースのレコードのセットに対応しています "

+0

エンティティは通常、単一レコードを表すインスタンス化されたオブジェクトです。そのエンティティを記述するクラスまたはコードテンプレートは、テーブル定義に対応します。 –

答えて

0

データモデリング規律に依存する表または行はどのようなものですか。

エンティティの表現については、エンティティの識別と拡張を区別する必要があります。ナイーブデータモデルは主体としてのエンティティの範囲に焦点を当てる傾向がありますが、論理モデルではエンティティを単に関連付けるだけです。どちらの場合も、エンティティが表現されていると言えます。違いは、論理モデルはナレッジのエンティティを編成するのに対し、ナイーブなデータモデルはエンティティ自体をキャプチャしようとしている点です。

リレーショナル・データベース・モデルでは、表はリレーション/述語を表し、行は命題を表します。各行の値は、真の文を作成するために表の述語文のロール/プレースホルダを満たします。エンティティは値に対応し、エンティティセットはドメインに対応します。

エンティティリレーションシップモデルでは、テーブルはエンティティリレーションシップまたはリレーションシップリレーションのいずれかを表します。エンティティセットは主キーで表され、リレーションシップセットは複合キーで表されます。行は、エンティティまたは関係の属性値を表します。

ネットワークデータモデルでは、テーブルはエンティティセットを表し、行は個々のエンティティを表します。行間の参照は関係を表します。これはあなたが来ているモデルのようです。しかし、このアプローチは、これらの3つの中で最も古く、最も未知であり、複雑な関係を表現する能力が限られているため、人工的なエンティティを作成する必要があり、データモデルの存在論的解釈が困難になります。

正式な仕様を記述する必要がある場合は、データのリレーショナル・モデルを検討することをお薦めします。これは、3つのうち最も表現力があり、1次述語論理に相当します。 object-role modelingとLex de HaanとToon Koppelaarののような本をデータベースの専門家のための応用数学でご覧ください。ビルケントのデータとリアリティは、現実世界のモデリングの難しさについて多くの洞察を提供します。

+0

ああ、それは重かった!私はそれを求めていたと思う。ありがとう、私はこれを将来の読書の出発点としておきます。 –

関連する問題