0

問題は、この状況にデータベース設計をどのように適用すべきかということです。

メインテーブル:

ID | name | number_of_parameters | parameters

パラメータテーブル:

parameter | parameter | parameter

パラメータテーブルの要素数は変更されません。cellは、次のセルに格納するテーブルnumber_of_parametersの数を定義します。parameters

オブジェクト思考からデータベース設計に移行するのに問題があります。したがって、オブジェクトについて話すとき、1つの行には言うのと同じくらい多くのパラメーターがありnumber_of_parametersます。

要件の説明が明確であることを願っています。そのようなデータベースを設計する正しい方法は何ですか。誰かがそれを取得するためにいくつかのSQLステートメントを提供できればそれは素晴らしいことです。しかし、この質問の主な目的は、そのようなアーキテクチャを作成する方法を理解することです。

SQLiteを使用してこのデータベースを作成したいと思います。

4

3 に答える 3

3

リレーショナルな方法は、2つのテーブルを持つことです。メインテーブルには、ID、名前、およびその他の普遍的に存在するパラメータが可能な限り多く含まれています。パラメータテーブルには、メインテーブルのIDからパラメータ名およびパラメータ値へのマッピングが含まれています。メインテーブルIDは外部キーである必要があり、IDと名前の組み合わせは一意である必要があります。

パラメータの数は、特定のIDを持つ行の数を数えるだけで見つけることができます。

于 2012-07-18T07:39:24.533 に答える
1

完全に正しい方法は1つではありませんが、リレーショナルデータベースを使用する場合は、リレーショナルテーブルを使用することをお勧めします。

Key-Valueデータベースがある場合は、シリアル化されたデータをキーに添付されたドキュメントとして配置します。

人間が編集できるテーブルと単一のテーブルの両方のハイブリッドソリューションが必要な場合は、データをyamlなどの人間が読める形式にシリアル化できます。これは、オープンソースプロジェクトの構成セクションで頻繁に使用されます。

于 2012-07-18T07:51:56.617 に答える
1

データベースに保存しながらデータをシリアル化し、レコードを取得したときに逆シリアル化できる場合は、機能します。シリアル化されたコンテナ内のオブジェクトの総数を取得し、その数をnumber_of_parametersフィールドに保存し、シリアル化されたデータをparametersフィールドに保存できます。

于 2012-07-18T07:37:42.333 に答える