Webパソコン教室

Webサイトは「yosatonet」で検索。注)本ブログには古い情報が記載されています。

全体表示

[ リスト ]

テーブルの作り方

テーブルはデータベースの肝というべき部分です。
間違った考えでテーブルを作ると、はじめは使えていても使ってるうちに使えなくなったり、記録する量が莫大になったり、操作ミスの元だったりします。
なのでテーブルはしっかり作りましょう。
ポイントは
・無駄なく
・ミスなく
・シンプルに
です。

まず基本
データベースを語る上で、データの入れ物となるテーブル(一覧表)の設計にはすごく気を使わなければなりません。
たとえば、毎日の果物の売上を管理するのに
https://blogs.yahoo.co.jp/IMG/ybi/1/73/4e/singleturbine/folder/1069/img_1069_1890612_0?2007-03-27
という表で管理すると日にちが足されるごとに横に大きくなってまとめづらい。Excelでデータベースを作るならなおさらでExcel2003までは横256列まで作れないので1年待たずしてデータベースがパンクします。
それなら
https://blogs.yahoo.co.jp/IMG/ybi/1/73/4e/singleturbine/folder/1069/img_1069_1890612_1?2007-03-27
といったように商品の種類を横にすれば解決するかというとそうでもなく、商品の種類もいつ256種類を超えるかはわからないです。果物屋さんに行けばわかりますが、実際はもっともっと商品の種類はありますよね。
では、どういう形にまとめてあるのがデータベースとして理想かというと
https://blogs.yahoo.co.jp/IMG/ybi/1/73/4e/singleturbine/folder/1069/img_1069_1890612_2?2007-03-27
こんな形。
これなら縦にはたくさん増えるものの横には全く増えないので扱い易いと。

ん?見辛い?
そうですね、このままではりんごが全部でいくら売れたかわかりにくいですよね。
じゃあ前の2つの形に戻す?いや将来データが入れられなくなることを考えるとそこに戻るのはナンセンス。
データベースには集計(グループ化)という機能があるので、うまくやってくれます。
日本語的には、データベースの中に入る1データには少なくとも「いつ」「なにが」「いくつ」というデータが1つずつ入っていることが必要といえるでしょう。
こうなっていればどんどん下にデータを足すことでデータベース自体を大きくすることができます。



第1次正規化

さて、次の段階、ここからが正規化ということになります。

もし、レジが世の中になくて、ノートに売上を一回一回つけていく形だとしましょう。
すると次のような形になるでしょうか。

日付/商品名/単価/個数/合計金額という風に記録しています。
https://blogs.yahoo.co.jp/IMG/ybi/1/73/4e/singleturbine/folder/1069/img_1069_1890612_3?2007-03-27
実際はもっともっと行数が増えると思います。
ここで、1月4日になって、日ごとの売上金額をチェックしていたら、1月2日の2番目のみかんは実は1月1日に売上げていたことが判明しました。
実際のノートに記入している方法であれば、赤書きで直せばそれで解決するということになりますが、パソコン的には次のようになるかと思います。
https://blogs.yahoo.co.jp/IMG/ybi/1/73/4e/singleturbine/folder/1069/img_1069_1890612_4?2007-03-27
すると、修正したみかんの行以降が何かわかりづらくなると思いませんか?
今回は行数はたいしたことがないので良いですが、これが実際に大きな表だとしたら…。
そしてその修正が多かったら…。整理し切れません。
こんなことにならないように1行1行のデータに責任を持ってもらうために全データを入れ込む必要があります。

そこで、1行1行に全てのデータを入れておきましょう。
https://blogs.yahoo.co.jp/IMG/ybi/1/73/4e/singleturbine/folder/1069/img_1069_1890612_5?2007-03-27

こうしておけば、1月2日のみかんのデータが1月1日だとしても、単純に直してパソコン的に日付で並べ替えれば問題ないわけです。

ここまでで「第1次正規化」という作業です。





第2,3次正規化

もし、商品ごとの単価が永久に変わらないとします。
その観点で第1次正規化された表を見てみましょう。
https://blogs.yahoo.co.jp/IMG/ybi/1/73/4e/singleturbine/folder/1069/img_1069_1890612_6?2007-03-27
するとこの表はムダがあります。
商品ごとの単価は決まりきっていることだから記録する必要はありません。
また、合計金額も単価と個数を計算すれば自動的に出る項目ですので記録の必要はありません。
逆に記録する箇所があると記録ミスにもなります。
とは言うものの、単価情報がどこにもなくなったら、それはそれで困りますね。
そこで、この表を思い切って2つに分けます。
<売上一覧表>
https://blogs.yahoo.co.jp/IMG/ybi/1/73/4e/singleturbine/folder/1069/img_1069_1890612_7?2007-03-27

<商品一覧表>
https://blogs.yahoo.co.jp/IMG/ybi/1/73/4e/singleturbine/folder/1069/img_1069_1890612_8?2007-03-27


売上一覧の商品名を商品一覧表から見つけ、単価を求めるわけです。
ん?めんどくさそう…。わかりますその感覚。
でも、たとえばExcelにはVLOOKUPという関数があります。Accessならリレーションという技があります。
パソコン的には簡単にやってくれるわけです。
その上、テーブルもシンプルになりましたね。これが第2次正規化です。

今回のデータならこの時点で第3次正規化までいってるのかな?よくその辺がわかっていませんが。

いずれにせよデータベースに使うテーブルは
・無駄なく
・ミスなく
・シンプルに
作ってないといけません。


閉じる コメント(0)

コメント投稿

顔アイコン

顔アイコン・表示画像の選択

名前パスワードブログ
絵文字
×
  • オリジナル
  • SoftBank1
  • SoftBank2
  • SoftBank3
  • SoftBank4
  • docomo1
  • docomo2
  • au1
  • au2
  • au3
  • au4
投稿

.


プライバシー -  利用規約 -  メディアステートメント -  ガイドライン -  順守事項 -  ご意見・ご要望 -  ヘルプ・お問い合わせ

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事