• 締切済み

Access2002 参照整合性について

テーブル間にリレーションシップを設定する場合、リレーションテーブル側に主テーブルにないレコードがあると参照整合性を設定できないにも関わらず、「結合の種類」で「3」(リレーションテーブル側の全レコードと主テーブル側の同じ結合フィールドのレコードだけを含める)を選べるのは何故でしょうか。 参照整合性を設定できた時点で、リレーションテーブル側には主テーブルにないレコードは無いということだと思うのですが・・・。 よくわからなくなってしまいました。 お答え、よろしくお願いいたします。

みんなの回答

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

>リレーションテーブル側に主テーブルにないレコードがあると参照整合性を設定できないにも関わらず、「結合の種類」で「3」(リレーションテーブル側の全レコードと主テーブル側の同じ結合フィールドのレコードだけを含める)を選べるのは何故でしょうか。 参照整合性は一連のルールを使用して関連テーブルのレコード間のリレーションシップが有効であることや関連データが誤って削除や変更されていないことを保証する機能です。もう一方のテーブルやクエリに一致するレコードがあってもなくてもテーブルやクエリのすべてのレコードが選択されるようなクエリにするために3にある外部結合があります。 >参照整合性を設定できた時点で、リレーションテーブル側には主テーブルにないレコードは無いということだと思う リレーションテーブル側に主テーブルにないレコードがあれば参照整合性を設定できません。できるという事は主テーブルにないレコードはないという事です。

ribon2004
質問者

お礼

お答えいただいた内容はすべて理解している上で、わざわざ設定する必要のなさそうな結合の種類があるのは何故?と思ったのですが・・・・ ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

参照整合性には、外部キー(FOREIGN KEY)を含むため、NULLが許される場合があるのでは?

ribon2004
質問者

お礼

ありがとうございました。参考になりました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Accessの参照整合性について

    アクセスでリレーションシップをはると参照整合性にチェックするボックスがありますよね。 以下の選択の組み合わせが考えられると思うのですが、 1.参照整合性にチェックしない場合 2.参照整合性のみチェックした場合 3.参照整合性と連鎖更新にチェックした場合 4.参照整合性と連鎖更新と連鎖削除にチェックした場合 一(マスタ)対多のリレーションを張ったとき、以下のように理解しています。 2.のとき マスタにあるものしか登録できない。また、マスタは他のテーブルにリレーションを張っている場合、削除も編集もできない。 3.のとき マスタにあるものしか登録できない。またマスタで更新をかけると、他のテーブルのレコードも更新がかかる。また、マスタは他のテーブルにリレーションを張っている場合、削除はできない。 4.のとき マスタにあるものしか登録できない。またマスタで更新、削除を行なうと他のテーブルのレコードも更新、削除がかかる。 では1.のときってリレーションシップは張れるのですが、何の意味があるのでしょうか?

  • 参照整合性などがクリックできない状態なのですが

    アクセスです。 リレーションシップを組もうとしたら リレーションシップの種類が一対多になり 参照整合性などがクリックできない状態なのですが どういう原因が考えられるのでしょうか? 最初T_カテゴリテーブルに主キーがなかったのですが リレーションシップの種類が未定義だったので カテゴリフィールドをを主キーにしたら一対多にはなったのですが 参照整合性などがクリックできない状態は変わらないです。

  • このリレーションシップを作成して、参照整合性を設定

     Access2007で、このリレーションシップを作成して、参照整合性を設定できません。   手っ取り早いので、問題にAccessデータが以下のURLからとれるようにしました。  http://homepage3.nifty.com/mtaiyo/sanseyou.accdb  以上Accessのsanseyou.accdbファイルを元にして、 以下の設定項目を実行してください。    テーブル「T得意先マスター」とテーブル「T売上げデータ」の間にリレーションシップを設定します。    「T得意先マスター」の「得意先CD」を「T売上データ」の「得意先CD」までドラッグします。  ≪参照整合性≫のにチェック マーク記号を入れます。 ≪作成≫をクリックする。・・と以下のエラー表示がでて先に進みません。 「 ’T売り上げデータテーブルのデータが参照整合性の規則に違反しています。  たとえば、ある社員に関する売るレコードがリネーション テーブルにあるときに、この社員に関する レコードが主テーブルにありません。    リレーション テーブルのすべてのレコードのデータについていて、関連するレコードが主テーブルにあるようにしてください。  参照整合性の規則に従わないでリレーションシップを作成するときは、[参照整合性]チェックボックスを オフにしてください。」  FOM出版 SETP1 「リレーションシップを設定する」  の項目の、別な設定でも、同じエラーがでたので、最初からエクセルを再イポートしたら無くなりました。   次の設定にかかったところ又でたので、そもそもどこをどうすれば回避できますか!?  以上宜しくお願いいたします。  

  • Accessのリレーションシップ

    Access初心者です。 Access2010でデータベースを作っていて、行き詰ってしまいました。 テーブル1にフィールドABCDEFがあって、Aに主キーが付いています。(Aはテキスト型でフィールドサイズ10です。) テーブル2にはフィールドAGHがあり、Aに主キーが付いてます。(Aはテーブル1と同じです。) テーブル3にも同じくフィールドAIJがあり、Aに主キーが付いています。(Aはテーブル1と同じです。) テーブル1のフィールドAを主テーブルとし、テーブル2・3のフィールドAにリレーションを組んでいます。 この時のリレーションシップで参照整合性と連鎖更新と連鎖削除にチェックを入れ、種類が一対一になりました。 その後、テーブル1でレコードを追加しようとすると、「テーブル'2'にリレーションシップが設定されたレコードが必要なので、レコードの追加や変更を行うことができません。」と出ます。 これを解決する方法はどうするのか、お教えお願いします。 分かりにくい説明ですいません。

  • Access 参照整合性について

    一対多のリレーションシップで参照整合性の設定ができないし、1も∞も表示されず結合線のみです。一側のファイルは他のアクセスで作成したものをリンクしています。リンクファイルを使用していると参照整合性は設定できないですか?

  • Access2000のリレーションシップのエラーについて

    どのくらい説明すればいいのかわからないのですが、アクセス2000でリレーションシップの設定をするときに、 「主テーブルで参照されているフィールド用の固有インデックスがありません。」 というエラーメッセージが出てきてリレーションを作る事が出来ません。 問題なのは3つのテーブルのリレーションなのですが、それぞれのインデックスをチェックすればいいのだとは思いますが、対象となったフィールドは主キーではないので、重複は許可していますが、一応どちらもインデックスは作成しています。 どのようなリレーションシップかというと、業者テーブルと商品テーブルと販売履歴テーブルのリレーションで、 商品テーブルの業者IDと業者テーブルのIDのリレーション→左内部結合(商品テーブルの全フィールドに入れる) 業者テーブルの業者IDと販売履歴の業者IDのリレーション→右内部結合 は出来るのですが、商品テーブルの商品名と値段フィールドと、販売履歴の対応する部分についてのリレーションについてもたせようとするとエラーが出てしまいます。このようなリレーションはいらないのでしょうか? どちらも固有の値でない量のリレーションだからなのでしょうか? この二つのフィールドの参照整合性をどう保てばいいのか教えて下さい。

  • リレーション?参照整合性の謎?

    Ac2000です。 「T_メンバー一覧」(テーブル) ・ID ・名前 ・所属 「T_マスタ」(テーブル) ・ID ・名前 ・所属 ・備考 とします。 それぞれからフォームを作成し、「F_マスタ」のフォーム上で IDはコンボボックスとし、ここでIDを指定すれば 名前と所属が入るようになっています。 「T_メンバー一覧」に変更があった場合(所属が変わるなど)に、 「T_マスタ」も自動で変更されるようにしたいのです。 T_マスタにデータが入っている場合です。(1件のみ) リレーションをはり、ID同士で設定しました。 「参照整合性」にチェックをし作成しようとすると、 「T_マスタ」テーブルのデータが参照整合性の規則に違反しています。 たとえば、ある社員に関連するレコードがリレーションテーブルにあるときに、 この社員に関連するレコードが主テーブルにありません。 ・・・・ となってしまうのです。 T_マスタにデータが入っておらず、上のリレーションが成功したあとに、 入力をしようと、F_マスタを開き、IDを選択して、 フォームを閉じようとすると、 「テーブル 'T_メンバー一覧'にリレーションシップが設定されたレコードが必要なので、 レコードの追加や変更は行うことはできません。 となります。 この2点を解決する回避策を教えてください。

  • Accessの参照整合性

    MSAcess2000を使用しています。 テーブルのリレーションシップで、「参照整合性」という チェックがあるのですが、これにチェックを入れない場合の リレーションシップには何か意味があるのでしょうか? 「参照整合性」についてどういうものか、という説明は いろんなところに記述があるのでわかりました。 ですが、これにチェックを入れてこそ、外部キーの意味がある 気がするので、入れない場合について知りたいのです。 ご存知の方がいらっしゃいましたら、教えてください。 よろしくお願いします。

  • アクセス 各テーブルでのフィールドの持ち方と、参照整合性リレーションのつなぎ方

    お世話になります。 アクセスでテーブルを作っています。 後で参照整合性のリレーションで結ぶ予定のフィールドなんですが、 同じフィールドを、複数のテーブルに持つ必要があるか悩んでいます。 意味わかりにくくてすみません。 例えば、「○○事業部の、○○部署の、○○社員」という識別をする場合、 ◆「事業部」テーブルのフィールド:「事業部コード」 ◆「部署」テーブルのフィールド:「部署コード」「事業部コード」 ◆「社員」テーブルのフィールド:「社員コード」「部署コード」 *「事業部コード」 を作ります。 ★この場合、「社員」テーブルの *「事業部コード」フィールドは必要か否かと、その理由(影響など)を知りたいのです! 「事業部」テーブルと「部署」テーブルの「事業部コード」、 「部署」テーブルと「社員」テーブルの「部署コード」は、 それぞれリレーションシップ(参照整合性)で結ぶ予定です。 ★「事業部」テーブルと「社員」テーブルの「事業部コード」も、リレーションで結ぶ必要があるのでしょうか? よろしくお願いします。

  • アクセスでリレーションシップの一対多で参照整合性で

    アクセスでリレーションシップの一対多で参照整合性で組める条件を教えてください。 例えば、 ・数値型とテキスト型のフィールドでは繋げられない。とか ・主キー同士でないとダメ。とか ・重複するデータが入っているレコードがある場合はダメ とか・・・ どういう条件がOKでどういう条件がダメなのかよくわからなくて混乱しています。 自分で試していますが、うまくいったりできなかったりです。

このQ&Aのポイント
  • ThinkBook 13s-IMLの修理後、Windows Updateが進まない状況です。
  • Lenovoのサポートへ連絡したところ、更新が終わるまで待ってくださいとの回答がありました。
  • 現在再修理に出しています。
回答を見る

専門家に質問してみよう