<HOME  <お願い事項  <Access2000 TOP   <Access97 TOP   <サイト内検索
 MS-Access2002チョ〜入門部屋>基本をマスターしよう
  (←別ウィンドウでサブメニュー)



5.主キーについて

「主キー」って言葉、耳にしたことありますか?
今ご覧になっているテーブルデザインビューのツールバーの中に、「主キー」というツールボタンがあります。

これをクリックすると、今カーソルがある行の一番左端にカギのマークがつきます。
これで、「主キーを設定する」という操作になります。
わたしのは、↓こうなりました。「ペンだこを主キーにする」ということですね。

もう一度「主キー」のツールボタンをクリックすると、主キーの設定は、消えます。



★参考までに、この左端のグレーのところを「レコードセレクタ」と呼びます。



主キーを二つ以上つけたい、という場合は、Ctrlキーを押しながらレコードセレクタをどんどんクリックしていくとよいでしょう。
Ctrlキーを押しながらクリックって、複数行を同時に選択できるっていう操作なんですよね。これは確か、いろんなソフトで共通の動作だと思うんで、覚えとくといろんなところで応用が利くと思いますよ。
で、その後、「主キー」のツールボタンをクリックすれば、たくさんカギのマークがつきます。

カギのマークを取りたい場合、つまり主キーの設定を取り消したい場合は、「主キー」のツールボタンをもう一回クリックすれば、クリアされます。



まあ、操作としてはこんなところなんですが、じゃあ主キーって、なんなんでしょう
これが何なのか、どうして必要なのか、ということについて、お話をしようと思います。

すごく説明の難しいところなんですけど・・・。
というのは、「データベース」ってものを理解している人からすると、
  「なんでそんなこと疑問に思うの?」
っていう次元の話だからです。
でも、MS-Excelなどの表計算ソフトはよく使うけどデータベースって使ったことない、っていう人からすると、
  「なんで主キーなんて必要なんだろう」
って思うことが多いと思う。

基本的に、データベースと呼ばれるもの(特に、リレーショナルデータベースという考え方を持っているもの)の中では、「テーブルに主キーを持たせる」ということは当たり前のことなので、それは、頭に置いておいたほうがよいでしょう。
でも、ただ単に「当たり前だから」というだけで意味もわからず主キーの設定をやらかすと大変なことになりかねないので、できるだけ意味を理解していくようにしたほうがよさそうですね。

データベースというものの主な仕事は、「データの出し入れ」です。
新しくデータを入力したり、変更したり、削除したり、ほしいデータだけ絞り込んで表示させたり。。。
こういうのをがんばるのが、データベースです。
でもって、件数がかなり多くなっても、できる限りぱっとすばやく出し入れできるような能力を持っていないといけません。
多分、「主キーって、なんなのかイマイチよく分からない」という方は、表計算ソフトとデータベースの違いがわからないのだと思います。え?違いますよ。ぜんぜん。どっちが難しいとかそういう次元の話でもありません。
私たちが画面の中に見る内容としては、表計算ソフトもデータベースも、ただデータがばーっと並んでるだけで大して違わないように見えますが、双方データの「持ち方」が違います。
データベースというものはどっちかというと、「データを入れる」「データを取り出す」「絞り込む」というようなことに重きをおいています。一方表計算ソフトは「データを見やすいように並べる」ためのものです。
結果、画面に広げてみると、どっちも表の形をしてて似たようなもんじゃんって思っちゃいますが、それは単に見てくれの問題であって、構造は違うのです。



皆さん、普段は天津甘栗の販売をなさってますよね。
なさってます。
天津甘栗には甘口と辛口の2種類あるんですよね。
ございます。

電話で注文が入ったら、注文先と種類と注文数をとりあえずメモ用紙に書いておいて、後でまとめます。
今日はやたらと忙しかった・・・。
こうなると、きちんと丁寧に書いている時間はありません。
メモを走り書き、箱に入れて、書き終わったら別のメモを・・・の繰り返しです。いやー大変なお仕事ですねぇ。
で、一段落して、箱の中を見ます。メモが山積みです。

・・・これは・・・だれからの↑注文なんでしょうか。
どうやら、ひとつ前に受けた電話と同じ人からの追加注文みたいですけれど・・・。
箱の中には、他の人が受けたメモ伝票もいっぱい投げ入れてあって、すでに受け付けた順番なんてわからなくなっています。
日付も入ってないし・・・まさか、昨日受けた伝票が紛れ込んでるとか、そういうことは、ないよなぁ・・・。

これは甘口か辛口かわからなくなってます。そうとうあわててたみたいですね。



そこで今度は、メモを順番に一列に並べることにしました。
電話を受け付けて、メモを書いて、書いたメモを列の一番最後に置きます。
注文が600を超えたところで、最後尾が廊下に出てしまいました。
まあこれなら確かに受け付けた順番に並んでますから、続けて同じ人から注文が合った場合など省略して書くことができそうです。
でも、ある程度件数の制限とかしておかないと、収集がつかなくなりそうですね。

前者の、メモを箱の中に入れておく考え方が「データベース」、一列に並べて常に見渡せるようにしているのが「表計算ソフト」の考え方だと思ってください。

表計算ソフトは、あらかじめ「データを置くためのマスメ」が用意されていて、わたしたちはそのマスメを自由に使って好きなようにデータの入力をすることができます。後で見てわかりやすいように、見渡しやすいようにデータ入力者が入力する場所を考えて入力する、というタイプのデータ管理をします。っていうか、管理自体は私たちが考えてやることなのです。表計算ソフトは言われたとおりにデータを持つだけ。

なので、たとえば、同じ日の注文だったら、次の行の「注文日」の入力は省略しちゃおうかなとか、そういうこともできるわけですね。考え方としては、「きのした工務店の甘口22個の注文」というよりは、「このシートの4行目に入力されてる文字とか数字」という考え方をします。でもって、このシート全体をひとつの情報の塊として扱います。

データベースは、入力する作業と、必要なデータを抽出したり集計したりする作業を別個に考えます。とにかくデータを貯め、貯めたデータを活用する・・・これが主たる仕事なので、データを常に見渡せるようにはなってません。必要なときに見渡せるようにする、という考え方で、データの管理はデータベースに任せます。
そして、入力されたデータは、1行ずつ独立しているものと考えます。ちょうど、箱の中にどんどんメモを投げ入れているように、箱に入れられた順番とかは別にどうでもよくて、メモ1枚1枚が独立して存在しているという感じです。

したがって、「この表の2行目のデータ」と考えるのではなく、「きのした工務店の甘口の注文、22個」と考えます。このとき当然、「いつ受けた注文なのか」ということが、この1行だけを見ても分かるようにしておかなければなりません。今この状態で、「きのした工務店」の注文のデータを見ても、いつ注文受けたものかわからないですよね。
見た目表の形になっていたとしても、基本的には1行ずつばらばらに存在しています。だからこそ、「甘口の注文は全部で何個あったか?」「一番たくさん注文してくるお客さんはどこ?」なんていう感じの並べ替えや絞込みや集計にもすばやく対応できるわけだな。
「表全体を見渡しても1行だけ見ても、必要な情報がきちんと入力されていてきちんとわかる」のが、データベースの基本なのです。

このふたつのソフト、どっちが便利か、ということが不毛な疑問であることは、再三お話してるとこですが、要は「使い方次第」だと思うんですよ。構造が違いますから、それぞれメリットデメリットあると思うんですよね。メリットデメリットっていうのは、一般的に、ってことじゃなくて、今の皆さんにとって、ってことですが・・・。

こうして考えた上で、データの件数が多いときはMS-Access、少な目のときはMS-Excelって分け方される方もいらっしゃるんですけれど、あながちそうとも言えないです。だって「多い」「少ない」の基準なんて、人によってそれぞれだし・・・。10万件20万件あってもシートを分けたりして頑なに表計算ソフトでデータ管理している人もいますからね。そういう人にとってみたら、スクロールを600回しなくちゃならなかったとしてもMS-Excelのほうが「便利」なんだと思います。人それぞれですよ。使いにくいだの難しいだのブーブー文句いいながらMS-Access使うくらいだったら、使い慣れてるソフト使ったほうがいいですよね。

でももし、MS-Accessでいろいろとデータベース作りをやっていかなくちゃならないのであれば、主キーという概念は理解しておかないと厳しいです。
あまり砕けた解釈の仕方ではなく、きちんと学問的に理解をしたほうがよさそうかな、という方は、SQLという言語について書かれている入門書などを1冊買ってお読みになるとよいと思います。後でまたちょっとお話しする機会が出てくると思うんですが、SQLっていうものを理解できるようになると、多分、どういうテーブルを作ってったらいいのか、って、見えてくると思うんです。