1

多くのデータベースと同様に、名前は一意ではないため、シリアル生成された数値の主キーを持つ人のテーブルがあります。

ID  NAME  STUFF
---------------
101  Bob     20
102  Bob     30

また、他のいくつかのテーブルでは、これらの ID を外部キーとして参照しています。

ORDER  PERSON  NOTE
-------------------
1       02     Blah
2       01     Foo

(FK は一意の制約を持つ列を参照する必要があるため、ID の代わりに名前を FK として使用することはできません)。私のデータ入力は手動なので、GUI (現在は Mac の pgAdmin または LibreOffice) を使用すると、注文テーブルで作業するときに数値 ID の代わりに人の名前を確認する方がはるかに簡単です。この一見単純な問題に対する解決策をいくつか考えましたが、どれもうまくいきません。

A) ビュー - 編集不可。トリガーを使用してビューを編集可能にする方法は知っていますが、これを使用して編集可能なビューを許可する GUI エディターはありません。

B) Order テーブルに名前列を追加し、トリガーを使用してすべてを同期させます。これは魅力的ですが、データが重複しており、テーブル構造が進化すると頭痛の種になります。Order name 列がトリガーで読み取り専用に設定されている場合は多少改善されますが、それでも多くの落とし穴があります。

C) 私が本当に欲しいのは、基礎となるデータの整合性を損なうことなく、GUI エディターで個人 ID と対応する名前を任意のテーブルに表示するように切り替える方法です。

これが明確であることを願っています。必要に応じて詳細を提供できます。助けてくれてありがとう!

4

1 に答える 1

1

You can achieve this (at least on Windows) with Microsoft Access and the postgres ODBC driver. Steps are based on 2010, but the process is the same on 2003 and 2007.

  1. Link your tables to a new Access database and set the relationships between them.
  2. Open the table with the foreign key in design view and switch to design tab on the bottom.
  3. Choose Combo box instead of Textbox.
  4. Click on Query source then on the three dots on the right.
  5. 主キーを持つテーブルをクエリ デザイナーに追加する
  6. 見たい列を追加してから、IDの列を追加します
  7. エディターを閉じる
  8. 2 番目の列がキーであるため、バインドされた列を 2 に変更します。

ここでは、質問に基づいた小さな例を見つけることができます: (ODBC なし) https://www.sugarsync.com/pf/D949685_2198453_6801553

于 2012-08-15T09:58:50.830 に答える