• ベストアンサー

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

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

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

  • ベストアンサー
回答No.1

同じ名前でも問題なく設定できます。 クエリ等で2つのテーブルを含めた場合、 結合したフィールドはどちらか一方のみ(通常はトランザクション側)表示すればいいので同じ名前でも問題ないです。 また、両方表示する必要がある場合は、テーブル名を前につけて区別することも可能です。 テーブルA.顧客ID テーブルB.顧客ID > (例えばテーブルAでは顧客IDでテーブルBでは取引先ID) この場合は理由は分かりませんが、 名前を別のする場合、 会社マスターに会社情報が入っていて、 それを別テーブルからリンクする場合、仕入先だったり、売上先だったりなど、意味が異なる場合に、それを表す内容に する場合があります。 仕入先ID 売上先ID

oimoita
質問者

お礼

ご回答ありがとうございます。 よくわかりました。 たぶん参考書では説明しやすくするために便宜上多少名前を変えているのだと思います。 ありがとうございました。

関連するQ&A

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

    accessで作ったデータベースで新たにリレーションシップを設定しようとすると、まだ自分では何も設定していないにも関わらず勝手にリレーションシップが設定されていることがあります。 内容としては「MSysAccessStora」というフィールドリスト名で内容はDateCreate/DateUpdate/Id/Name/ParentId/Type とフィールド名が並んでいます。 これは何でしょうか? このデータはFOM出版のMOS対策テキストのデータなのですが、こんな名前のテーブルなどは存在しないのですが・・・ わかる方いらっしゃったらよろしくお願い致します。

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

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

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

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

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

    Access2007で次のような機能を構築したいと思っています。 その1. (1)テーブル1に、IDと顧客名その他のフィールドを作り、フィールドの中の一つに、Yes/No型のフィールドを作る。 (2)そのフィールドにYesのチェックを入れたレコードをクリックする等すると、テーブル2を参照する。 (3)テーブル2には、テーブル1のID及び顧客名のフィールドと同期したフィールドがあり、その他のフィールドはテーブル2で編集する。 その2. (1)支払額を投入するフィールドと同じフィールドに支払日のデータを投入し、一定期間に支払があった金額を積算する。 いずれも、記載したとおりの動作でなくとも、代替の方法がありましたらご教授いただけますと幸甚です。 以上、Accessのど素人で申し訳ありませんが、アドバイスいただけましたら幸いです。宜しくお願い申し上げます。

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

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

  • リレーションシップの作り方について教えて頂きたいです。(アクセス)

    私はアクセス初心者です。(アクセス2000です) 今現在、市販のソフトで手の届かない分を必要な分だけデータを抜き出してきて使用しています。 そこには、必要なテーブルが3つのテーブルが存在します。 (例) 【T伝票】   {個人ID} {ペットID} {} {} {} 【T個人mst】 {個人ID} {個人名前} 【Tペットmst】{個人ID} {ペットID} {ペット名前} (【】はテーブル、{}はフィールドです。) 【T伝票】の内容を名前入りで表示し、伝票内容を編集していきたいと思っていたのですが、うまくできません。まず、クエリを作ってみているのですが、リレーションシップの作り方がおかしくデータ変更できなくなってしまいます。始めは、IDの数字だけ見て編集していましたが、データが多くなり、時間がかかって仕方ありません。長い間困っています。どうすれば良いのか、良い解決方法をお待ちしております。

  • アクセスで、リレーションシップをかけると更新出来ない?

    すみません。以下の事項を教えて下さい。 テーブル名:T_メール本体 (フィールド項目は) ID(主キー) 宛先名 件名 本文 テーブル名:T_宛先リスト (フィールド項目は) 名前 アドレス この2つのテーブルに、宛先名と名前のフィールドをリレーションシップをかけると未定義と出ます。このクエリー:SELECT T_メール本体.宛先名, T_メール本体.件名, T_メール本体.本文 T_宛先リスト.アドレス FROM T_メール本体 LEFT JOIN T_宛先リスト ON T_メール本体.宛先名 = T_宛先リスト.名前; は、ただ表示が出来るだけで、内容の変更更新、追加が出来ないんです。どこかがおかしいんでしょうか? よろしくお願いします。

  • Accessリレーションシップ

    Accessにて、 テーブルA(個人情報) ●個人コード ●名前 ●住所  ・  ・ テーブルB(個人ごとの数量管理) ●個人コード ●数量 上記のようなテーブルがあるとします。 これは、1:1のリレーションシップにしたいのですが、 クエリAを作成して ●個人コード(テーブルB) ●名前(テーブルA) ●数量(テーブルB) 個人コードを入力すると、名前を参照するというふうに したいのですが、1:1のリレーションシップだと個人コードの入力時に 参照はできないのでしょうか? 一旦閉じて、開くと参照していますが・・・。 良いご意見がありましたら、よろしくお願いします。

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

    お世話になります。 2つのテーブルがありその中のフィールドをリレーションシップでつなぎたいと思っています。 しかしフィールドのデータが以下のように違うため接続できません。 何か良い方法はないでしょうか? フィールド1   フィールド2 B00231      B002311 B00289      B002891 H04572      H045721 フィールド2のデータはフィールド1のデータの末尾に1が追加されています。 よろしくお願いいたします。

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

    お世話になります。 Access2010 普段はクエリにて、いくつかのテーブルやクエリを紐づけているのですが リレーションシップの設定は今までやったことがありません。 ネットで調べて、 ・「参照整合性」にチェックを入れることにより、1対多の多側で1側に存在  しないIDで登録しようとするとエラーになる。   →間違ったデータが入力されるのを防ぐ。 ・多側でリレーションシップが設定されているフィールドに値を入力しない  ことは可能。但し、当該フィールドの「値要求」プロパティを"はい"に  した場合は、入力しないとエラーになる。 ・「フィールドの連鎖更新」にチェックを入れると、1側で変更したものが  多側でも自動的に変更される。 ・「レコードの連鎖削除」にチェックを入れると、1側で削除した場合、  多側で該当するデータをもつレコードが自動的に削除される。 上記については実際に試してみて動きを確認しました。 ※上記の認識違いや、もっと大事なことがあればご指摘、ご教示頂けると  幸いです。 今までは、こっちのテーブルで削除したらこっちのテーブルでも削除 みたいなことをやってたので、便利だとは思うのですが。。 以下のテーブルでリレーションシップの設定を行ったとします。 売上テーブル  ID 商品 担当者コード  1 AAAAA  3  2 BBBBB  1  3 AAAAA  1  4 CCCCC  2  5 CCCCC  3 担当者テーブル 担当者コード 担当者名  1     担当者A  2     担当者B  3     担当者C 売上テーブルの担当者コードと、担当者テーブルの 担当者コードでリレーションの設定を行い、「参照整合性」及び 「レコードの連鎖削除」にチェックを入れたとします。 例えばフォーム上にリストボックスを設置し ID 商品 担当者名 を表示し、リストボックス上で選択されたレコードを、削除ボタンを 押したら、そのレコードが削除されるプログラムを作成します。 ※選択されたレコードのIDを取得し削除クエリで削除。 リストボックスでID:5のレコードを選択し、削除ボタンを押した場合 売上テーブルのID:5のレコードを削除しても、担当者テーブルから 担当者コード:3のレコードは削除されない・・という認識でよろしい でしょうか。 ※要するに、1対多の多側で削除されても1側には影響無し。 同様にリストボックスでID:5のレコードを選択し、削除ボタンを押したときに 担当者コード:3を取得し、まずは担当者テーブルで担当者コード:3の レコードを削除すると、併せて売上テーブルのID:1及びID:5が削除 される。 要するに、上記のケースで「レコードの連鎖削除」の設定を行うと 本来削除すべきID:5以外のレコード(ID:1)まで削除されてしまう ことになる?? ※そもそも例がちょっと悪かったかもしれません。。 何が言いたいかというと、「フィールドの連鎖更新」「レコードの 連鎖削除」は、よーく考えて設定しないと意図しないところまで 更新されたり削除されてしまうのかなと。。なので、設定することに よって、プログラムの作りも変わってきてしまうことになるので しょうか。 理解不足で質問自体もモヤモヤしたものになってしまいましたが、 ご教示のほど、宜しくお願い致します。

専門家に質問してみよう