• ベストアンサー

MS ACCESSにおいてのリレーションシップ設定

msystemの回答

  • ベストアンサー
  • msystem
  • ベストアンサー率42% (79/186)
回答No.1

リレーションを設定することにより、INDEXが作成される場合があるため、検索時間が短縮されることもあります。 通常の結合クエリとリレーションの違いは、参照整合性に尽きると思います。データベースの設計をしっかり行えば、「このテーブルには、このようなデータがあってはいけない」というような、決まりが必要になります。それを、すべて気にしながらプログラムのコーディングするのは大変です。そこで、データの整合性は、できるだけデータベースに任せてしまおうというのが参照整合性です。(または、制約です。空文字不可とかありますよね) ですから、データの整合性などは一切アプリケーションで行う場合は、リレーションは必要なくなります。メリットもないと私は思います。

masakin
質問者

お礼

回答ありがとうございます。 一対一のリレーションシップの場合にはINDEXが作成されることがあるようですね。 やはり参照整合性をACCESSに任せられると言うことがメリットということですか・・・ 今回のシステムは整合性をプログラムで行うことになりそうですので、リレーションシップは不必要ですね。 参考意見とさせていただきます。

関連するQ&A

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

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

  • ACCESSのリレーションシップであこる不具合について

    時たま、20人位の受講生を相手にAccessを教えているのですが、 20人に一人か二人くらいの割合で以下のことが起きます。 テーブルが片手で数えられるくらいの数しかないテーブルを リレーションシップで参照整合性のチェックボックスをつけておいて、 しばらく、クエリの話をしたあと改めてリレーションシップを 表示すると、 ・ものすごい数のリレーションシップが組まれている。 ・そのリレーションシップは何回デリートで削除して上書き保存し、 表示しなおしてもものすごい数のリレーションシップが 相変わらず表示される。 ・クエリで何らかの作業をしていても特に支障はない。 具体的なサンプルはあるので理由を教えていただける方 いらっしゃいましたらどうぞご連絡ください。 メールで送ります。  私がどんなにACCESSをいじくり倒しても、 絶対出てこないのですが、ときたまこういう現象を 出してくれる人がいるのでその度その度なやんでいます。 この現象が起きると、あきらめてMDBを削除してもらうか、 そのままあきらめて使用してもらっています。 どうしても原因が知りたいです。

  • Access ODBCからのリンクのリレーションシップ

    教えてください。 今 Access2000を使ってDBを作っています。 なんとかODBCにテーブルを置いてリンクさせるところまで たどり着いたのですが、 そのテーブルを使ってリレーションシップを組もうと思うと 参照整合性他2つあるチェック項目がチェックできない 状態になってしまっています。 (参照整合性にチェックを入れたいのですが) なぜなのでしょうか? もうさっぱりわからず・・・ どなたか教えてください。

  • アクセス:クエリの結合とリレーションシップの違いについて

    アクセス初心者です。 ◆ある請求システムをクエリ上の結合と関数だけでほぼ完成できました。誤作動もなく、正確な結果がでます。いわゆるリレーションシップをしないでの構築です。 ◆構成は、請求対象者の個人IDをキーにして、請求対象日付、基本料、食事料、立替金、その他請求という比較的シンプルななものを結合させて作成しています。クエリ上で関数で日付のところで何月分の請求かを抽出するようなしくみです。 ◆しかるに、完成させてしまってから「リレーションシップ」はしたほうがいいという内容のものをいくつかの資料でたまたま目にするようになりました。 ◆しかるにクエリーでできてしまったシステムで現時点で不具合は全く発生せず、リレーションの必要性が理解できません。 ◆というより、リレーションシップそのものを知らない段階でクエリの結合に取り組んだ者ですから、リレーションシップとは何ぞや?というレベルです。 ◆そこで、今回、クエリの結合とリレーションシップの違いについてアドバイスをいただけないでしょうか? よろしくお願いします。

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

    アクセス2007を使用しています。 顧客表 (顧客コード 顧客名) 注文表 (顧客コード 商品名 数) と言う表があります。 二つの表を 1.リレーションシップをはる 2.結合する(クエリ:売上表) 上記作業を行い売上表を作成しました。 売上表作成の流れは、 「当然顧客コードで2つの表が結合され、両方の表に存在する値の行が表示される」 と思っております。 今回の結合(等結合)表の作り方は以下の流れだと思っております。 1. 顧客表、注文表の直積を出す。 2. 顧客表・注文表の顧客コードで一致する行を抽出する。 ここで質問なのですが、 一度、リレーションシップを作成しないで、 顧客表と、注文表を結合しようとし、クエリの売上表を作成しようとしました。 すると、直積結果までしか出ませんでした。 (SQLウィザードを確認しましたが、FROM句までのSQLしかありませんでした。Where,Innnerなし) これはつまり、リレーションシップを張らなければ、等結合が行われないということで 間違いないでしょうか?(Where、Inner JOINでの条件が入らない)

  • Accessリレーションシップ

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

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

     Win XP Office 2003 Accessを勉強中です。  デザインビューでクエリを作成するときに、関連するテーブルを表示させると自動的に「結合プロパティ」の線が表示されますが、 この表示で自動的に「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'にリレーションシップが設定されたレコードが必要なので、レコードの追加や変更を行うことができません。」と出ます。 これを解決する方法はどうするのか、お教えお願いします。 分かりにくい説明ですいません。

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

    リレーションシップの設定をするときテーブル” ”は現在ほかのユーザーまたはプロセスで使用されているのでロックできませんでした。と表示します。言葉の意味が分からないのですが教えていただけないですか? 参照整合性の設定をするとき 表示します。今使える(技術評論社変種部)のかんたんアクセス2007を読んでいます。 ※OKWAVEより補足:「NEC 121ware :デジタルライフ全般」についての質問です

  • アクセスについて・・・

    アクセスでリレーションシップで、参照結合するとテーブル上では、プラスマークが横のついて連動しますが、クエリなどであとから変更したものはテーブルに反映されないのですが・・ (つまりクエリで変更したものは、テーブルに反映させるのはできないのでしょうか?)