Cazperのつれづれ日記: MSアクセス 1対1リレーションシップのやり方

« Motel168のサービスが改悪されていた・・・ | メイン | 無有効身分証件境外人員住宿核査単を申請(パスポートが無い!) Checking Notice For The Passenger Without Valid Document »

2012年1月 8日

panda01.gif MSアクセス 1対1リレーションシップのやり方

MSアクセス2010等においてリレーションシップは強力なツールなのですが、物の本には殆ど「1体多」のリレーションシップの事しかかかれていないので、ここでは1対1のリレーションシップのやり方について書きます。

そもそも1対1のリレーションシップってどういう時に使うのでしょうか?

例えば、八百屋さんで野菜のデータベースを作成していたとします。野菜について、他の店の価格と自社の価格を比べるための価格に関するデータベースを保有したいとします。その場合は、野菜の商品リストとは別に(数社分を含む)価格リストを持つ必要があります。野菜一つにつき、自社、A社、B社は一つづつ価格を持つため、各野菜に付き各社の価格を並べた価格リストデータベースが欲しくなるわけです。


1対1のリレーションシップを作成する方法は簡単です。主キー同士を結びつけると1対1の関係になります。
1対1リレーションシップ MS Access
1対1ですので親子関係はありません。

ただし、もちろん1対1の関係ですから、例のように商品リストのID番号(主キー番号)と価格リストのID番号(主キー番号)は一致していないといけません。
1対1リレーションシップ例 MS Access


さて、Microsoft Access上では商品リストから展開して価格リストをいじることが出来ます。しかし、1対1の状態で1商品につき価格リストを2行にしようとすると・・・以下のように
1対1リレーションシップ例失敗 MS Access
テーブル'商品リスト'にリレーションシップが設定されたレコードが必要なので、レコードの追加や変更を行うことはできません。」というエラーメッセージが表示され、にっちもさっちも行かなくなります。その際には、このデータテーブルをまず閉じるしか抜けだす道が有りません。

更に、この状態で商品リストを追加していくことは出来ますが、新規の商品リストに価格を付けようとすると...
1対1リレーションシップ例失敗続 MS Access
同様に「テーブル'商品リスト'にリレーションシップが設定されたレコードが必要なので、レコードの追加や変更を行うことはできません。」というエラーメッセージが表示されてしまいます。

これを解消するには、主キーを振り直すしかなくなります。

投稿者 cazper : 2012年1月 8日 21:16 | b_entry.gif
     

トラックバック

このエントリーのトラックバックURL:
http://www.cazoo.jp/cgi/mt/mt-tb.cgi/3120

コメント