●全ページ一覧の表示(ページ下へ移動)>>

▲PAGE TOP

外部キーについて


NO 内容 分類 発行日
vol331 外部キーについて テーブル 2019年3月 6日

お客様から質問がありました。

「外部キーでNULLを許容することは出来るのでしょうか? 」

という質問です。

外部キーとは、関連したテーブルを結ぶために設定する列のことで、参照されている側(子テーブル)の列です。
主キーのあるテーブル(親テーブル)の列と結合しています。

データの整合性をデータベースに保証させるために使用します。

例えば、
「製品テーブル」と「売り上げテーブル」があったとします。

「製品テーブル」の「製品コード」と「売り上げテーブル」の「製品コード」が、リレーションシップで結合されています。

「製品テーブル」の「製品コード」は「主キー」で親テーブルです。
「売り上げテーブル」の「製品コード」が「外部キー」で、子テーブルになります。

「製品テーブル」の「製品コード」は「主キー」ですから、必ず入力する必要があります。
nullの入力は出来ません。

「売り上げテーブル」の「製品コード」は、「製品テーブル」の「製品コード」以外のコードは入力することが出来ません。
リレーションシップされていますので、間違って入力することを防ぐことが出来ます。

でも、実際にAccessで入力してみると、null(データを入れない)で、データが保存されてしまいました。

結果としては、nullの入力は出来ました。

でも、「売り上げテーブル」のデータとしては、「製品コード」がありませんので、意味がなくなってしまいます。
「売り上げテーブル」のデータが消えた状態になります。

これは、困りますね。


「売り上げテーブル」でnullの必要なケースがある場合があります。

例えば、
製品ではなくて、作業などで売り上げが上がったなどがあった場合です。

そういう場合は、「製品コード」に、「No_data」とか「Sagyo」(作業)とか「9999」などの特別な「製品コード」を作ってデータを入力した方がよいと思います。

そうすれば、「売り上げテーブル」のデータが取れるようになります。


もし、「製品テーブル」以外の「製品コード」が頻繁に発生する場合は、リレーションシップをしなくて、「売り上げテーブル」のフォームで、「製品コード」を入力するときに、参考として「製品テーブル」を、使う方法もあると思います。

ケースバイケースです。


参考にしてください。



おすすめ教材


[↑一番上へ]
[マイクロソフトアクセス(Access)活用法(メールマガジン)(ホームへ)]
11:320409

<<全ページのメニューリストです>>

アクセス(Access)の概要

アクセス(Access)全体

テーブル

クエリ

フォーム

レポート

マクロ

VBA

SQL Server

システム開発

SQL Azure

その他