<HOME  <お願い事項  <Access2000 TOP   <Access97 TOP   <サイト内検索
 MS-Access2002チョ〜入門部屋>ということで百人一首
  1 2 3 4 5 6 7 8 9



ということで百人一首 3

■「検索する」ということについてちょっと考えておく

さてさて・・・ここから、いろいろ考えていかないといけないわけなんですけどね。
日本語って難しいですよね。
例えば、1つめの句で、

     秋の田の かりほの庵の とまをあらみ      我が衣手は 露にぬれつつ

こういうふうにテーブルにはデータを用意したんですけど、コンピュータはですね、漢字とかひらがなとか、わかってませんから、

   「我が衣手は 露にぬれつつ」  と
   「わが衣手は 露にぬれつつ」  は違う、

とみなすんです。これ意味が分からない人、危ないですよ。よく見比べてください。
コンピュータはそんな賢くありません。
「我が」とテーブルに入力されているのに、「わが」で検索しようとしてもできません。
え?VBAでやればできるんじゃないかって?誰ですかっ、そんな根拠のないことを考えているのはっ。

なので、なるべく、数字とか、アルファベットとか、識別しやすい値で検索できるよう工夫するのが、こういうデータベース作るときのコツです。
バカバカしいって思ってる人もおられるかもしれませんけど、これ、とっても大切なことです。
百人一首にはいちおう、歌の順番があります。
番号が振られてるんですね。今回は、その歌の番号を[番号]というフィールドに入れるようにしてます。

つまり、この[番号]が、このテーブルの「主キー」としてふさわしいフィールドであるわけです。
まさか「主キーってなんで必要なの?」なんて思ってる人は・・・いないと思いますけども・・・。
他のコーナーと話がどんどんかぶっちゃいますけども、別に「主キー」なんて、なくたっていいんですよ。皆さんにとっては、ね。


■ちょっと寄り道・・・・・主キーとは■

主キーなんてもんは、わたしたちのために作るものではないので、どういうことになってもいいのなら、作らなくたっていいです。
つまりですね。このテーブルの中から、ちゃんと下の句を探す仕組みを作ることができるのでしたら。

でも、コンピュータってそんなに賢くないですからね。
皆さんが作ったテーブルの中に入ってるデータのことをちゃんと理解してくれてるわけじゃないんですよ。
皆さんは「売上テーブル」のつもりで作ってても、MS-Accessにとっては単なる数字や文字の羅列に過ぎません。
皆さんが「2002年5月15日の三橋商事様宛ての売上を検索」しているつもりでも、MS-Accessには三橋商事様なんて分かりません。
だからこそ「売上伝票番号」といった番号を伝票ひとつひとつに振ったりしているんじゃないですかね。

テーブル開いて1行目から目を皿のようにして探してお目当てのデータを見つけ出すのでよければ、主キーなんていらないです。
っていうか、それならMS-Accessじゃなくて、表計算ソフト使った方が数倍便利。
こういう考え方でMS-Access使ってて、「Accessなんてバグばっかり」なんて言ってまわってるヤツ、結構いますからね。
同類と思われないようにシッカリ理解しておきましょう。

テーブルには主キーをつけなくてはいけない・・・のではありません。
テーブルの中に入れたデータを、1レコード1レコードきちんと識別できる(皆さんが、じゃなくて、MS-Accessが)フィールドのことを、主キーにしているのです。

皆さんの身の回りにある「情報」の中に、1件1件識別ができないものって、あります?
例えば見積書・・・お客様から電話がかかってきて、

   「昨日もらった見積のことでちょっと聞きたいんだけどね」
   「はい?(うっ、見積書は昨日だけでも7枚も作ってるしな・・・最終的にいくらで見積もったっけな)」
   「昨日出してもらった見積だよ」
   「はあ、ええと、いくらでお見積させていただいたんでしたっけ?」

こんなとき、どうすればいいと思います?
見積番号みたいなのをあらかじめ振っておけば、いいと思いません?

   「先日もらった見積のことでちょっと聞きたいんだけどね」
   「はい、用紙の右上に、番号をお付けしてあるかと思いますが、その番号をお知らせいただけますか?」
   「うん?番号?ええとね、01251100と書いてあるが、この番号のことかな」
   「はい。お手数をおかけしました。黄土色のインクカートリッジを7000本ということでご依頼いただいた件ですね」
   「そうそう、それ。ええとね、それね・・・」

そうそう。わかってらっしゃるじゃありませんか。
今、皆さんは、MS-Accessがテーブルの中から必要なレコードを探し出すときと同じことをやったんですよ。
これなら、担当者じゃなくても、お客様がどういう見積の件で問い合わせをしてこられたのか、わかりますよね。
「この間の」とか「昨日」とか「三橋商事」とか、そういう「キーワード」で情報を探そうとすると、どうしても「人の記憶」に頼らざるを得ないところがあります。それはそれで大切なことなんですけれども、間違いも起こりやすい。
そういうことをなくしたいから、データベース化するんじゃ、ないんですかね。
だったら、必然的に「なぜ主キーが必要なのか」とか「主キーって何のために作るのか」とか、そういう発想は、出てこないと思うんです。

「主キー」ってのは、まあ、たまたま、MS-Access独自の用語かもしれませんけれど、データベースの中のデータって、何らかの形で、「コンピュータでも識別ができるような、なんかしら」が必要なんじゃないです?それのことを、たまたま、「主キー」と言ってるだけのことです。皆さんが、「いや、わたしは非常に優秀で、立派なので、コンピュータにデータ検索などさせない。何万件データがあろうが、この目で必要なデータは探し当てる。だから、主キーなど必要はない」と言われるなら、無用だと思います。
でも、それじゃ、何のためにデータベース化しているのか・・・ってことですよね。

でも、世の中には、MS-Accessを使うために見積書を発行しているという人もいるかもしれませんので、その辺は微妙かも・・・。