1

私は人々の情報について設計するデータベースを持っています

名前、年齢、住所、連絡先など、人々に関する一般的な詳細がいくつかあります...

しかし、公務員、ビジネスマン、サラリーマン、政治家などのような人々のカテゴリーがあります...

そのため、カテゴリに関するいくつかの動的フィールドがあります...

一般的な詳細テーブルは簡単に作成できますが、問題は、公務員の収入、部門、以来などのカテゴリの動的フィールドにあります...

3 つのテーブルを作成しました。

Peoples テーブル: 名前、年齢、生年月日など. カテゴリ: 公務員、サラリーマンなどの行. 属性:

------------------------
ID|Category|Field|Value
-----------------------
1 |GS      |dept |electricity

上記のデータベース設計 (私が現在使用しているもの) は、 NopCommerceデータベース の設計Nop_CustomerNop_CustomerAttributeテーブルの一種です。

これは良いものですか、それともこれよりも優れたものですか: (この状況の場合)

考慮すべき 2 つのインプ ポイント: 1- ユーザーはこれにデータを追加するため、それに応じてコントロールを作成する必要があります。 2- このデータベースは他のユーザーによって検索されます。

編集:

各カテゴリのフィールドは固定されます。

ただし、カテゴリはユーザーではなく開発者によって徐々に追加されるため、開発者にとって多忙で保守しやすいものにする必要があります

4

3 に答える 3

4

人のタイプごとに表を作成します。これらのテーブルには、該当するものだけを保存してください。Phil Jones が政治家である場合、Person テーブルには、個人に関する限り彼を説明するエントリがあります。彼はまた、政治家に関する限り、彼を説明する行を Politicians テーブルに持っています。子テーブルのそれぞれが、person テーブルの ID 列との外部キー関係を持つようにします。

于 2012-08-03T06:23:57.873 に答える
0

NHibernateなどのORMツールの使用を選択できます。

NHibernate は、.NET フレームワーク用の成熟したオープン ソースのオブジェクト リレーショナル マッパーです。積極的に開発され、完全な機能を備えており、何千もの成功したプロジェクトで使用されています。

次に、継承などの OOP プリンシパルを使用して、基本をカバーする 1 つのスーパー クラスを作成し、必要なその他の追加機能に応じてクラスを拡張できます。このチュートリアルでは、その方法についてのアイデアを提供します。

于 2012-08-03T06:22:13.000 に答える
0

XML フィールドを使用できるので、非構造化データを保存したり、継承マッピングの 1 つを使用したりできます。こちらを参照してください http://www.agiledata.org/essays/mappingObjects.html

于 2012-08-03T06:50:50.963 に答える