0

重要な在庫管理データベースを構築しています。私は 5 つのテーブルを持っていますが、参照整合性を確保するためにそれらの間に関係を作成する必要があると思います。

これが私の質問、または困惑した場所です: KEYS テーブルでは、ループアップ ウィザードを使用し、ROOM 属性を選択しました (したがって、新しいキーを挿入すると、部屋 ID ではなく部屋名が表示されます)。ただし、ROOM_ID (ROOM からtable) から ROOM へ ( KEYS から)。それらは正確に同じ属性ではありません。これにより、整合性の問題を維持する際に問題が発生しますか?

ここに画像の説明を入力

これが私のテーブルの外観です。属性を ROOM_ID に変更すると (それらをリンクすることは理にかなっています)、このテーブルにはほとんど意味のない ID 番号がたくさん含まれます。

ここに画像の説明を入力 また、関係を設定するときは、常に CASCADE の削除と更新を選択することをお勧めします。実用的か。ありがとうございました。

4

2 に答える 2

1

まず、テーブルと列の一般的な命名/スタイル規則に従うべきであるというのが私の意見です。たとえば、ROOM_ID が KEY_ID を参照しているか、またはその逆かを区別するのは非常に困難です。

テーブルと列が
ROOM.id (PK)、ROOM.room.
KEY.id (PK)、KEY.room_id (FK)、KEY.drawer、KEY.notes

ルームが複数のキーを持つことができると仮定すると、KEY.id は一意になりますが、KEY.room_id は同じになります。

列が同じ属性でないかどうかという質問に答えるには、2 つのテーブル間の関係を設定するには、相互に一貫して参照する機能が必要になるため、問題になると思います。さらに情報を設定する必要がある場合は、別の列を追加してください。

規約の詳細については、次の Web サイトを参照してください

CASCADE の削除と更新に関しては、データベースの使用方法によって異なります。たとえば、サインインを削除する場合、ユーザーもカスケードして削除したくないと思います。

于 2013-01-12T04:51:41.767 に答える
1

(1) RoomIDで行いたい。テーブルビューで見ているときは何の意味もないかもしれませんが、ユーザーはおそらく部屋の名前を表示するためにルックアップを行うフォームでそれを使用しているでしょう. ただし、ユーザーがテーブル ビューを使用する場合は、常に 2 列のドロップダウンを持つルックアップ フィールドを使用してルーム名を表示し、ID を保存することができます。

(2) 更新と削除をカスケードします。それは言えません。アプリケーションでカスケード更新と削除を行うかどうかによって異なります。普遍的な答えはありません。

于 2013-01-12T05:42:02.510 に答える