リレーションシップの設定は必要か? [テーブル設計]
ACCESSにはリレーションシップというテーブル間の結合を定義する画面があります。
この機能自体は、リレーショナルデータベースの定義をよく表しているというか、テーブル間の関係性、どれがマスタで、どれがデータで、どの項目がキーになっていて関連づけられているかを明確にできるので、とても大事そうに思えます。
が、私は設定してません。
使ってる人に遭遇したこともありません。(私の狭い世間で)
リレーションを定義することで、何か良いことがあった事がないので、いつの間にか存在を忘れてしまいました。しなかったことで、問題が起きたこともありません。
逆に、参照整合性チェックとかを設定すると、テーブルのデータを直接扱う際に、チェックがかかって思うように作業ができなくなったりします。
あの画面を見ると、ACCESSはコレを必ずしなければならないと思いがちですが、しなくってもぜんぜん問題ないと思います。よく、「リレーションシップの設定は必要ですか?」っていう質問を見かけますが、しなかったからと言って、重要な問題が発生することはありません。
そもそも、リレーションの定義は、ACCESSのそれで作成する物ではなく、データベースの設計で定義される物です。設計した内容に従って、作業を進めていけばいいだけのことです。
リレーションシップについてよくわからない人は、とりあえずこれはパスして、他の作業にかかった方がいいと思います。DBって言う物について、知識が付いてきたら、いろいろ試してみたら良いと思います。
2011-05-08 23:22
nice!(0)
コメント(2)
トラックバック(0)
いろいろと楽しい情報を拝見いたしました。
私は必ずリレーション設定するタイプなのでメリットについて語らせてください(ご存じの上で「不要だ」と思われているのであればすみません)。
メリット1.データ構造の把握ができる。・・・通常は設計段階でオブジェクト図やER図などを書きますが、Accessを使われるような方は多分そこまでしませんし、ドキュメントも残さないでしょうから、後々全体を見渡せる、テーブル間の繋がりがわかる、どこに何のデータが格納されているか分かるというのはとても有効かと思われます。この画面をプリントアウトして資料として利用しますし。
メリット2.クエリーやフォームデザイン時に自動でリンク設定される(・・・というか、リレーションがそのまま付いてくるので毎回設定不要)
メリット3.テーブルでリンク先のデータ参照ができる(フィルター設定したような状態・・・というのでしょうか・・・「+」ボタンで折りたたんだデータを広げてみるイメージ・・・言葉で説明難しいですが)
メリット4.参照整合性を指定することでデータの矛盾が起こりづらくなる(伝票で使用していた商品データを削除しちゃった・・・とか、存在しない顧客番号を指定しちゃった・・・というような・・・また、削除時に関連するモノをまとめて消しちゃうような事も設定によって選べる利点が)
そんなところでしょうか・・・とりあえず思いついた部分をツラツラと並べてみましたが、いかがでしょう。
by ACCESSファン (2017-05-16 02:02)
ACCESSファンさん、コメントをいただきありがとうございます。返答が遅くなってしまい申し訳ありません。
リレーションシップですが、私もこの機能がまったくもって不要で役に立たないものだとは思っていません。ご指摘のとおり、リレーションシップを設定することで利用できる機能には便利なものもあると思います。
この記事は、まだDBについてあまりよく理解していない初心者の人が、リレーションシップでつまづいているのならば、とりあえず後回しにして良いよ、と言う意味で書いたのが当時の気持です。DB(リレーショナルデータベース)やACCESSについてよく理解できてからでいいのではと。
あと、これは私個人の事情ですが、私が開発しているものは、画面や帳票はACCESSで開発して、データベースはORACLEやSQL Serverを利用する、というパターンが多いためです。
(リンクテーブルに対してもリレーションシップは設定できるのですが、外部DBに対してはパフォーマンスが悪くなるんじゃないかと思います。やったことはないですが。また検証してみたいと思います。)
なので、リレーションシップを使う機会がなくなってしまいました。その辺の事情もありまして、ちょっと意識が薄くなっている感があります。
メリット3の機能などは、他のツールにはない機能ですね。複数のテーブルを別々に開く必要がないので、とても便利だと思います。
メリット4の機能も便利なのですが、逆に制約ができて、トラブル時にデータを扱う必要がある場合に、思ったように作業ができなかったことがありました。(その時は一旦リレーションシップを解除して、その後また戻しました)
今後、リレーションシップの機能についてもまとめてみたいと思います。
ご意見ありがとうございました。
また何かありましたら、気軽に書き込んで下さい。
by NZ (2017-06-21 23:58)