参照整合性の問題 (Access 2007)

参照整合性の問題 (Access 2007)

データベース設計者または管理者など、専門家の支援をお願いしたいと思います。

2 つのテーブルの参照整合性を設定するときにこの問題が発生しました。参照整合性の設定は問題ではありませんが、私が抱えている問題は、この参照整合性の設定が完了すると、他のテーブルで null 値が許可されなくなることです。つまり、両方のテーブルにおそらく同じ数の行が含まれている必要があり、両方のテーブルが対応することになります。

これはまさに私がやりたいことの一例です:

  • 私は、店舗で入手可能な商品やアクセサリーを保存するための「Stock」という名前のテーブルと、「Customer_Details」という名前のテーブルを作成しています。
  • 両方のフィールドにフィールド(つまり、「availability」という名前のフィールド)を設定し、Yes/Noデータ型にします。このフィールドは両方のフィールドに存在する必要があります。
  • 顧客が「在庫」テーブルから選択された特定のアクセサリを購入するたびに、在庫の「在庫状況」フィールドの値が自動的に変更されます。

私が知っていることとやろうとしていることは、リレーションシップウィンドウで参照整合性を設定することだけですが、残念ながらこれはうまくいきません。

私は Access 2007 を初めて使用するので、この操作方法を教えていただける方を探しています。

答え1

「私が抱えている問題は、この参照整合性の設定が完了すると、他のテーブルで null 値が許可されなくなることです」

Nul値は許可されますが、制限があります:

ただし、外部キーに Null 値を入力できます。これにより、レコードが関連していないことが指定されます。たとえば、存在しない顧客に割り当てられている注文を持つことはできません。ただし、CustomerID フィールドに Null 値を入力することで、誰にも割り当てられていない注文を持つことはできます。


ソースAccess データベースのテーブル間の関係を定義する方法

参照整合性

参照整合性は、関連テーブル内のレコード間の関係が有効であること、および関連データが誤って削除または変更されないことを確認するために Access が使用するルールのシステムです。次の条件がすべて満たされている場合に参照整合性を設定できます。

  • プライマリ テーブルの一致するフィールドは主キーであるか、一意のインデックスを持っています。
  • 関連フィールドのデータ型は同じです。例外が 2 つあります。AutoNumber フィールドは、FieldSize プロパティが Long Integer に設定されている Number フィールドに関連付けることができます。また、FieldSize プロパティが Replication ID に設定されている AutoNumber フィールドは、FieldSize プロパティが Replication ID に設定されている Number フィールドに関連付けることができます。
  • 両方のテーブルは同じ Access データベースに属しています。テーブルがリンク テーブルである場合は、Access 形式のテーブルである必要があり、参照整合性を設定するには、テーブルが格納されているデータベースを開く必要があります。他の形式のデータベースからのリンク テーブルには参照整合性を適用できません。

参照整合性を使用する場合、次のルールが適用されます。

  • 関連テーブルの外部キー フィールドに、主テーブルの主キーに存在しない値を入力することはできません。ただし、外部キーに Null 値を入力することはできます。これにより、レコードが関連していないことが示されます。たとえば、存在しない顧客に割り当てられている注文を持つことはできません。ただし、CustomerID フィールドに Null 値を入力することで、誰にも割り当てられていない注文を持つことはできます。
  • 関連テーブルに一致するレコードが存在する場合、プライマリ テーブルからレコードを削除することはできません。たとえば、「注文」テーブルで従業員に割り当てられた注文がある場合、「従業員」テーブルから従業員レコードを削除することはできません。
  • 主テーブルのレコードに関連レコードがある場合、主キーの値を変更することはできません。たとえば、「注文」テーブルでその従業員に割り当てられた注文がある場合、「従業員」テーブルでその従業員の ID を変更することはできません。

関連情報