1

免責事項:私はSQL初心者であり、アプリケーションに組み込まれたsqliteの大きな可能性を発見しただけです。

私は、主にプロット用のデータストレージを処理するアプリケーション用の小さなデータベースを設計しています。圧力、温度、湿度などの各データフィールドの列を持つ複数の機器データテーブル(機器のタイプごとに1つ)があるとします。これらのデータテーブルを結合し、列名を引き出して、割り当てます。プロットする独立/従属変数を選択するためにユーザーが利用できる、より人間が読みやすい列「説明」。sqliteで列名を取得するのは簡単ですが、結果の名前(およびより長い説明)をデータベースの別のテーブルとして、またはアプリケーションのある種のリストに保存する必要があるかどうかはわかりません。それがデータベース内の別のテーブルである場合、SQLで列を参照する方法がない限り、列名を文字列として格納する必要があると思います。私'

提案をありがとう、スタックオーバーフロー。

4

2 に答える 2

2

SQLでイントロスペクションを実行し、テーブル名と列名を引き出す方法はいくつかありますが、おそらくその方法は望まないでしょう。その実装の詳細は、特定のRDBMSに大きく依存します。

人間が読める形式の列名は表示の詳細であり、静的な値である可能性が高いため、データベースやアプリの表示/レンダリング部分のどこかに配置しないでください。(列名をユーザーごとにカスタマイズできるようにする場合など、これには例外があります。)人間にわかりやすい名前を定義し、実際のデータベース列名をキーとして使用するハッシュまたは辞書を保持できます。この設定は、データ型、表示精度(数値の場合)など、列の表示に関する他の設定を保存する場合に便利です。

于 2010-02-08T04:03:14.397 に答える
1

あなたが求めているものは、「データディクショナリ」と呼ばれることもあります。DBMSが注釈機能を提供していない場合は、それらをシミュレートする必要があります。これには、テーブル名と列名を含むテーブルの作成が含まれる可能性があります。それを行うのは完全に合理的です。

テーブル名の変更や追加または削除された列を追跡することの難しさに注意してください。組み込み機能は、システムカタログ内のデータ(DBMSが何が起こっているかを追跡するために必要な「データディクショナリ」情報)のみを追跡し、テーブル内のデータは追跡しません。

于 2010-02-08T04:03:52.947 に答える