• ベストアンサー

access2007 リレーションシップについて

アクセス初心者です。 テーブルを複数作成しました。 これをリレーションシップをしたいと思うのですが、「主キー」の扱いに悩んでいます。 参考書などは主キーともう1つのテーブルの同じ項目名でかつ主キーでないものを結んでいますが、主キー同志は結んではいけないですか? メインで使うテーブルのIDを支点に、他の複数のテーブルのIDを放射状に結びつけて関連付けたいと考えています。 どのようにして作成していけばできますか? そのようなことができないのでしたら、どのようにしたらできますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.2

主キー同士を結ぶ = 一対一 の関係でしょうか。 一概に意味がないとは言えないと思います。 > 放射状に結びつけて関連付けたいと ちょっとイメージできませんでした。

masa8kazu3
質問者

お礼

回答ありがとうございます。 イメージが大分ついてきました。 私のリレーションシンプの取り方は一対多・一対一で両方使用する形となりそうです。 もうひとつ疑問が出たのですが、主キーを設定しないでリレーションを結んだ場合はどのような処理になるのでしょうか?

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

その他の回答 (3)

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.4

#2です > 主キーを設定しないでリレーションを結んだ場合 主キーを設定しないと、一側としてリレーション設定できなかった?かと。 疑問が出たらまず、ちっちゃい環境作って、あーでもない、こーでもないと実験されたらと思います。 フィールド2~3個のテーブルを5~6個作って、 (今回はリレーション設定なので、データは要りません) 主キー設定してみたり、、、 で、結べるかどうか、とか 疑問 即 質問ではないと思います

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

回答1です。 回答2の方のおっしゃるとおり例外もあります。しかしそれは、リレーションシップをある程度理解した人にとっての話です。 質問文を読めば、それ以前のところで躓いていると推測できます。回答1では、いまの質問者さんに必要と思われることを示しました。

masa8kazu3
質問者

お礼

半年後までにはある程度出来るようにと今から勉強を始めたところです。 今後なにかありましたら宜しくお願いします。

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

>参考書などは主キーともう1つのテーブルの同じ項目名でかつ主キーでないものを結んでいますが、主キー同志は結んではいけないですか? 「いけない」のではなく、「意味がない」からやらないのです。 二つのテーブルで主キーが同じということは、二つのテーブルにしている必要はなく最初から一つのテーブルにしておけばよいことになります。そうでなければ主キーの付け方を間違っています。 そういう疑問がわくということは、おそらくテーブルを設計する段階で推敲がまだまだ必要ということだと思います。もう一度、リレーションシップについて学習してみてください。 http://www.officepro.jp/access/relation/

masa8kazu3
質問者

お礼

回答ありがとうございます。 イメージが大分ついてきました。 私のリレーションシンプの取り方は一対多・一対一で両方使用する形となりそうです。 もうひとつ疑問が出たのですが、主キーを設定しないでリレーションを結んだ場合はどのような処理になるのでしょうか?

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

関連するQ&A

  • アクセスのリレーションシップについて

    ACCESS のリレーションシップについて教えてください! 今、 ★基本情報(会社情報)   L★会社毎案件情報     L★案件毎履歴 を 3つのテーブルで  1対多 のリレーションシップを組んでいます。 ここまではいいのですが、  企業毎の案件が無い場合で 企業毎に アプローチ履歴を つけるとしたらどのようにリレーション組んだらよろしいでしょうか? ↓このようにテーブルを組みたいと考えてます。 ★基本情報(会社情報)(主キー企業ID) | L★会社毎案件情報(主キー案件ID) |   L★案件毎履歴 L★会社毎履歴 ★会社毎履歴 の には 企業ID と 履歴IDの数値型を  おいてますが、1つのテーブルから 2箇所のテーブルへ  1対多  はいくらやってもできなかったのでこのような  形で運用できる 方法があれば教えてください。 アクセスははじめたばかりで、なるべくクエリや、 なるべくシンプルで簡単な方法があればご伝授いただければと 思いますなにとぞよろしくお願いいたします。 

  • 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'にリレーションシップが設定されたレコードが必要なので、レコードの追加や変更を行うことができません。」と出ます。 これを解決する方法はどうするのか、お教えお願いします。 分かりにくい説明ですいません。

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

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

  • Access2013のリレーションシップについて

    Access2013を勉強しています。 リレーションシップについて参考書(2冊)を見ていて疑問を持ったのですが、 二つのテーブルでリレーションシップを定義したいそれぞれのフィールド名は同じ名前だとうまくいかないのでしょうか?参考書では、値は同じ(例えば1、2、3・・・)は同じなのにフィールド名は微妙に違う名前をつけているのですが(例えばテーブルAでは顧客IDでテーブルBでは取引先ID)・・・ 宜しくお願いします。

  • リレーションシップが作成できなくなりました

    Accessにて、受注管理システムを構築しているのですが 何かの拍子で、リレーションシップが壊れてしまい 再度設定しようとしても 「このリレーションシップを作成して、参照整合性を設定できません」と表示されできません。 テーブルは3つあり、以下の通りになっています。 ・顧客管理テーブル(顧客IDと氏名・住所など) ・売上情報テーブル(受注IDと、顧客IDなどの情報) ・売上明細テーブル(明細IDと、受注IDなどの情報) 問題の箇所は、売上情報テーブルと売上明細テーブルで 売上情報テーブルの「受注ID」と売上明細テーブルの「受注ID」 を結びつけようとすると、上記のメッセージが出てきてしまいます。 一通り、主キーの設定や空白行などはチェックしてみましたが やはり解決しませんでした。 一度壊れてしまったリレーションシップは修復不可能なのでしょうか・・・ どなたか、お知恵を拝借願います。

  • アクセスのリレーションシップとクエリ

    私は、アクセスの初心者です。なので、難しいことはよく分からないのですが、アクセスではある1つのフィールドをキーにしてくっつけたりすることができるじゃないですか?そのキーを設定したりするのはリレーションシップでも、クエリでも同じような感じで行うと思うのですが、その2つの違いはクエリはそれをテーブルとして表示できるのに対して、リレーションシップはただ定義するしかできずテーブルとして表示はできないのでしょうか? あと、クエリとかである条件で抽出したテーブルの1つのフィールドのSUMを出したいのですがどういった条件式を書けばいいのでしょうか? なにぶん、初心者ゆえに質問が分かりにくいと思いますが、どうかよろしくお願いします。

  • Access(リレーションシップについて) 

     Win XP Office 2003 Accessを勉強中です。  デザインビューでクエリを作成するときに、関連するテーブルを表示させると自動的に「結合プロパティ」の線が表示されますが、 この表示で自動的に「1対多」を表示する時としない時がありますが、これは何故でしょうか。  これはどこかから設定をしてやるのでしょうか。  また、同じような線としてメニュバーから「リレーションシップ」を表示させることが出来ますが、 内容的には「結合プロパティ」と同じものですが、これは「リレーションシップ」とはどのようなに使い分けるものでしょうか。

  • マイクロソフト アクセス リレーションシップの扱い方について

    よろしくお願いします。アクセスで作成したテーブル、例えばAとBには共通の番号があります。それぞれは各テーブル内で番号がいくつか重複しています。この番号により、リレーションシップの関連付け(参照整合性は行わず)を行った後、クエリで抽出したところ、ところどころ同じデータが発生して、膨大な量になってしまいます。参照整合性・フィールドの連鎖更新・レコードの連座削除をチェックして再度リレーションシップを作成しましたが、主テーブルで参照されている固有のインデックスが見つからないとのエラーメッセージが出ます。このテーブルA・Bを使用してデータが重複しないようにクエリで抽出する事はできますか。

  • Accessのデータベースの構築の仕方について

    Accessのデータベースの構築の仕方について Access初心者です。 1注文書にmax3品目まで記入できる注文書データベースの構築について教えて下さい。 メインテーブルと、サブデータを作っており、 メインテーブルには、注文書Noと注文者名、日付の1注文書内の重複するフィールドを サブテーブルには、連番(max3)、品名(max3)、金額(max3)の重複しないデータとしています。 以下の様な感じです。 メイン→注文書No  1   2   2   3   3   3 サブ →連番      1   1   2   1   2   3 本当は、注文書Noを主キーにして、同じ注文書Noを入力出来ない様にしたいのですが、インデックス、主キー、リレーションシップで値が重複しているのでテーブルを変更できないというエラーメッセージが出ます。 仕方が無いので、現在は諦めて、以下の様に注文書Noでリレーションシップを組んでいます。なので注文書Noの2度打ちの可能性はあります。 メインIDもサブIDも意味が無いと思っていますが。 メイン                    サブ(主キー設定無し) メインID(オートNo)主キー      サブID(オートNo) 注文書No-----------注文書No 注文者名                   連番 日付                      品名                          金額 私のやりたいことは、一つの注文書Noに対し、max3つまで連番で紐づけて、同じ注文書Noを入力出来ないようにしたいことなのですが。 この様な場合、どの様にデータベースとして、リレーションシップはどの様にして、主キーもどの様にするのが正しいやり方なのでしょうか? リレーションシップも良く理解出来ていない状態ですが、宜しくお願いいたします。

  • Access アクセス VBA レコード追加

    Access フォームからのレコードの追加方法を教えてください。 テーブル1 ・ID(主キー) ・窓口 ・コストセンター ---------- テーブル2 ・コストセンター(主キー) ・目的 ---------- リレーションシップ テーブル1のコストセンターとテーブル2のコストセンターを一対多 ---------- メインのフォームに”ID”を入力したときにテーブル1に一致するレコードがない場合、新規登録用のフォームが表示されるようになっています。 新規登録用のフォームにレコードを入力してもテーブルに反映されません。 新規登録用のフォームは下記のように作成しています。 また、フォームに”コストセンター”を入力したときに入力したレコードがテーブル2にあっても自動で”目的”が表示されません。 メインフォームにはサブフォームで各テーブルが表示されています。 フォーム ・ID(初期値•••メインで入力したID) ・窓口 ・コストセンター ・目的 ・コストセンター(非表示) 上から順に ・テーブル1 ・テーブル1 ・テーブル2 ・テーブル2 ・テーブル1

このQ&Aのポイント
  • 8年前に購入したDCP-J4225Nのインクカートリッジ交換時に「廃インク吸収パッド満杯」表示が出て修理期限が過ぎていることが判明しました。修理部品の在庫やインクカートリッジの転用可能性について質問します。
  • 「廃インク吸収パッド満杯」表示がでて印刷ができない問題について、既に修理期限が過ぎている機種については補修部品は処分されるのか、またインクカートリッジの転用は可能かどうか知りたい。
  • 購入から8年経っているDCP-J4225Nで、「廃インク吸収パッド満杯」表示が出ましたが、修理期限が過ぎているため修理ができないようです。修理部品の在庫やインクカートリッジの転用について教えてください。
回答を見る

専門家に質問してみよう