• ベストアンサー

リレーションシップを組むメリットはなんでしょう?

リレーションシップを組む必要が感じられません。 ・重複データの確認、 ・テーブルにデータがあるかの確認 をVBAで行なってデータを追加しているのですが この場合リレーションシップを組む必要はありますか?

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

  • ベストアンサー
  • pipi-goo
  • ベストアンサー率33% (217/651)
回答No.1

質問の意図が分かりません。 リレーションシップは主に親テーブルと子テーブルを結ぶ時に使用する事が多いですが、どの様なテーブル構造を想定しているのでしょうか? それが分からないと必要があるのかないのか判断しようがありません。 質問の内容だとそもそもテーブルが一つなのか複数なのかすら分かりません。一つのテーブルでリレーションを張ることはあり得ません。

1wer56
質問者

お礼

ありがとうございます。 テーブルは複数ありますが 重複データのチェックなどはvbaで行なっているためわざわざリレーションシップを組む必要はあるのかな?と思い質問してみました。

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

その他の回答 (3)

  • Gletscher
  • ベストアンサー率23% (1525/6504)
回答No.4

他の回答者のコメントにあるように、リレーションシップの意味を取り違えていませんか? 大きなテーブルの場合、1つのテーブルに全てのフィールドを作るとメンテナンス性が悪いし、テーブルが重くなります。 また、内容によっては他のテーブルから参照されるものもありますね? ですから、テーブルを分けた方が、何かと都合が良い場合に、分けたテーブルの関連性を持たせるのがリレーションシップです。 たとえば、販売データのようなものがあったとして、管理したい項目には、販売日、商品名、単価、販売数量、ユーザ名・・・などがありますね? しかし、その同じテーブルに、顧客名、顧客住所、顧客電話番号なども一緒に入れますか? そうだとすれば、同じ顧客に売っても、毎回それらを入力するのは大変ですよね? さらに、販売した商品の、仕入先、仕入れ単価、仕入れ日、仕入れロット数、なども同じテーブルで管理しますか? 1品販売のたびにそれらを全て入力するのは大変なことだし、やってられません。 そこで、販売台帳には、販売日、商品名、単価、販売数量、ユーザ名などだけにし、さらに、商品名やユーザ名は実名ではなくコードにして、別に商品マスタや顧客マスタを持って管理しますよね? その時、販売台帳と商品マスタや顧客マスタはりレーションをとらないとデータの関連性が取れませんね。 つり、絶対にリレーションシップが必要になります。 全てのデーターをひとつの大きなテーブルに押し込んでしまい、毎回それをメンテナンスするのであればリレーションは必要ないですが、マスタ・トランザクション処理などでも必須になります。

1wer56
質問者

お礼

「マスタ・トランザクション処理」について調べてみます。ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
  • kurodai2
  • ベストアンサー率38% (77/202)
回答No.3

>この場合リレーションシップを組む必要はありますか? この場合と言うのが、曖昧ですが >リレーションシップを組む必要が感じられません。 こう感じられるのは解ります。 自分でデータの整合性が取れるように作り込めば 必要ないですよね。 逆に処理によっては、邪魔な場合もあります。 自分が作成する場合は、手抜きの場合以外は リレーションは 設定していません。 連鎖更新とか連鎖削除とか、ACCESSまかせで削除や 更新をする事もそうないですし、解りにくいメッセージが出て 問い合わせがあるより、事前にVBAでチェックして 必要な処理 必要なメッセージを出すようにした方が確実と考えています。 ご自身でデータに矛盾が起きないように作りこめるのであれば リレーションは必須ではないと思います

1wer56
質問者

お礼

なるほど!私の求めていた答えです!ありがとうございます。

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

>リレーションシップを組むメリットはなんでしょう? 連鎖更新とか連鎖削除とか、便利な場合がありますよ。 >リレーションシップを組む必要が感じられません。 別に、使わなければならない、ということではないと思います。 必要なければ別に使わなくてよいのでは? >この場合リレーションシップを組む必要はありますか? さぁ。No1の方と同じ話になりますが、少なくともデータベースの構造を見てみないことにはなんともいえませんねぇ。 それに、重複レコードがないとか、テーブルが空でないというのは、リレーションシップとはあまり関係ないような気がするのですが。

1wer56
質問者

お礼

連鎖更新とか連鎖削除は便利ですね! ありがとうございます。

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

関連するQ&A

  • リレーションシップ

    テーブルAとテーブルBでリレーションシップを組んでいて 紐づいてる値をどちらとも同じ変更したいのですが、 テーブルAの値を変更しようとすると、 テーブル’テーブルB’にリレーションシップが設定されたレコードが必要なので、 レコードの追加や変更を行うことはできません。 と表示され、 だったら先に、テーブルBの値を変更しようとすると、 テーブル’テーブルA’にリレーションシップが設定されたレコードが必要なので、 レコードの追加や変更を行うことはできません。 となってしまいます。 どちらも同じ値に変更したいのですが、どうすればよろしいでしょうか? テーブルAとテーブルBは一対多で参照整合性にチェックがついて紐づいています。

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

    出来上がっているデータベースの更新をしないとけなく、テーブルに追加しようとしたらリレーションシップが設定されているため追加できませんというメッセージがでます。 これは、一度リレーションシップを外して、テーブルに追加して、再度設定すればよろしいのでしょうか? 基本的なことがちょっとわかっていません。 ご存知の方よろしくお願いいたします。

  • リレーションシップの書き方について

    今更ながら、リレーションシップの 記述について、悩んでいます。 例を上げると、まず「受注」というテーブルが あるとします。 この受注というデータは、あるタイミングで 「売上」というデータを作成するための元ネタになります。 以降、受注と売上を同時に見に行くようなことはないと 仮定した場合、「受注」と「売上」にはリレーションを 記述する必要はないのでしょうか? 自分としては、「売上」の元データであるだけの「受注」と 売上は関連がないと思うのでリレーションは必要ないと思うのですが・・・

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

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

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

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

  • リレーションシップと外部キー制約について

    ■最終的にやりたいこと ・なるべくコード(SELECT文など)を見ずに、「DB」「テーブル定義者」「ER図」等からテーブル間の関係性を把握したい ■具体例 ・投稿一覧。「userテーブル」「postテーブル」 ・「postテーブル」の「user_id」カラムは、「userテーブル」の「id」カラムに対応 ※簡易な場合はある程度想像は付くのですが、ちょっと複雑な構成になると途端に苦労するので、何か良い方法はないかと思い、質問しました ■質問 ◆「リレーションシップを組む」際、「外部キー制約」はかけるのでしょうか? 例えば、上記「投稿一覧」DBを構築する際では、どうするのでしょうか? 1.普通、「外部キー制約」をかける 2.普通、「外部キー制約」をかけない 3.どちらでも良い ◆「外部キー制約」は何の為にかけるのでしょうか? ・「SELECT&JOIN」でデータ取得出来るのであれば、「外部キー制約」と「リレーションシップ構築」に関係性はないと思うのですが、そういう認識で合っているでしょうか? ・参照先データが削除されたら整合性がとれなくなる場合のみかけるものでしょうか? ◆「リレーションシップを確認」する目的で、「外部キー制約」をかけても良いのでしょうか? ・「データ削除の整合性」ではなく、「リレーションシップを確認」する目的で外部キー制約」をかけても良いのでしょうか? ◆「外部キー制約」以外に、「リレーションシップを確認」する方法はあるのでしょうか? ・コード(SELECT文など)を見ずに、テーブル間の「リレーションシップを確認」する方法としては、「外部キー制約」以外に何かあるのでしょうか? ・そもそも、「外部キー制約確認」=「リレーションシップ確認」という考えは正しいのでしょうか?

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

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

    2つのテーブルをリレーションシップ設定することによって、レコードの更新は出来るのですがレコードの追加が出来ません。ODBC経由でACCESS2000へ2つのテーブルをアタッチして操作しています。 レコードの追加は出来ないのでしょうか?よろしくお願いします。 サーバ:W2000SEREVER_SP4 SQL Server 2005 Enterprise Edition クライアント:W2000PRO_SP4 ACCESS2000_SP3

  • アクセス2000のルックアップ設定後のリレーションシップ

    アクセス2000のルックアップを設定後のリレーションシップが自動で作成されることは理解しています。テーブル4つの内1つ(データの流れ的に最後に相当)に設定しました。リレーションシップ線が4つできてしまい、テーブル名がテーブル名に1、2、3と増えてしまいました。邪魔なのでリレーションシップから「テーブルを表示しない」を押し消しても作業してからリレーションシップを確認すると再度表示されてしまいます。また解除(テーブルをデザインモードにして、標準横のルックアップタブを押し、表示コントロールをテキストにする)をしてもリレーションシップの線が消えません。なにか操作方法がおかしいのでしょうか?機会の誤動作でしょうか?

  • リレーションシップ

    VB2005の DataSet.xsdファイルで、 (親テーブル)tokuisaki.tokuisakicodeフィールドと、 (子テーブル)uriage.uriagesakicodeフィールドとで、 リレーションシップを設定しましたが、 (1)制約の選択で「外部キー制約のみ」にすると、 tokuisaki.tokuisakicodeにデータがあるにもかかわらず ForeignKeyConstraintの例外が発生します。 (2)制約の選択で「リレーションシップのみ」にすると、 例外が発生しません。 (1)では、マスタにデータがあるのにどうしてエラーが発生 するかわかりません。  どなたか、わかるかたがいましたら教えてください。

専門家に質問してみよう