コンテンツへ移動
2014年9月9日 / filemakerschool

「リレーション」って何ですか?(3)−「データベースの設計」って何ですか?

「リレーション」って何ですか?の続き。

今回は、「データベースの設計って何ですか?」ってお話です。

前回は、「テーブルって何ですか?」というお話をしました。

「テーブル」=「データベース」。FileMakerのデータファイルアイコンは、複数の「テーブル」が機能的に結びつけられてある「リレーショナルデータベース”管理システム”(RDBMS)」だと考えるとよい、ということをお話ししました。

さて、じゃ、この「テーブル」はどういう基準で分ければいいのでしょう?

そもそも、絶対にいくつかに分けないといけないのでしょうか?

FileMakerやAccessといったデータベースの初心者のための解説本を読んでも、「テーブルを作り(読み込み)ましょう!」「リレーションを結びましょう!」と、すでにいくつかのテーブルに分けられた状態で話が始まっていますよね。

私ごとで恐縮ですが、私がFileMakerを使い始めたのは、今から20年以上も前のこと。「FileMaker II」という、まだ、「Pro」がついていない頃のFileMakerです。

その頃はFileMakerにはリレーション機能はありませんでした。ですから、FileMakerを使い始めた後、Accessを勉強してみたときに、「リレーション」の目的すら、いま1つよくわかりませんでした。

なのに、Accessの解説本には、「顧客マスタ」だの、「商品マスタ」だの「売上管理」だの、すでにいくつかのテーブルに分けられている状態で話が始まっていて、「ちょ、ちょっと待ってよ!!そもそも、なんで3つに、しかもこんなふうに分けるのよ?」と思ったものです。

「そんなの勘じゃん!」

「センスだよ、センス!」

確かにそういうところもあるかと思います。

ただ、データベースの設計に「勘」とか「センス」が要求されるのは、複雑なシステムを構築する場合で、「経験」に基づく判断が必要な場合です。

それ以前に、コンピュータなんだから、論理的に、それなりの「基本的な考え方」があるはずなんですよね。

だから、「適当に分けてつないだら、なんとかなる。」という話ではないんです。

「だってぇ、FileMakerってかなり柔軟なデータベースでしょ。適当にやっても、後でなんとかする方法っていうのがあるんじゃないの?」

そういう楽観的な考え方でFileMakerに取り組むと、FileMakerでも、リレーショナルデータベースソフトですから、痛~い目に遭います。ヽ。(ー_ーメ)

じゃ、テーブルを分ける理屈って、どういうものなのよ?

それを、データベースの用語で「正規化」といいます。

私は、「テーブルをどういう基準で分けるか」を理解するために、FileMakerの本というよりは、「データベース」自体の概念が書かれた本をいくつかかじり読みしました。(書店の「データベース」という書棚に行くと、何冊か並べられています。FileMakerやAccessの棚には、ほとんど置いてありませんよ。)

もっとも、その手の本の後半のほとんどがSQL構文の話になっていくので、前半の「データベースの考え方(概念)」の部分を読むという感じでした。

この「正規化」という考え方は、FileMakerであろうが、Accessであろうが、SQLであろうが、共通の「概念」です。だから、これがしっかり分かっていると、「データベースの設計」ができます。

これは、何をどう処理していきたいのか(これを「要求定義」などといいます)を明確にしたら、それをコンピュータ(データベース管理システム)で実現するために、データを整理していくつかに分ける。これが「正規化」。まずこれをやって、後は、テーブル同士の関係を考えて図にします。これを、「エンティティモデル」といいます。

「正規化」してテーブルを分け、「エンティティモデル」を考える。

これが、データベースの「設計」という作業です。

まぁ、建物を建てるのに設計図が要るのと同じですね。

このように、データベースを作るうえでとても大切な「正規化」の方法、実は一口で言えるほど、そんなに簡単に説明できるものではないんですよね。(-_-)

正規化の説明って、まぁ、こんな感じ。

1) 正規化とそのメリット

関係データベースにおける正規化とは、データの整合性を保ったまま、データの冗長性を減らす作業のことである。冗長性を減らすことで、関係代数による演算に適した形となり、データの操作やデータベースの保守が容易になり、データベースやアプリケーションの品質を確保することが期待される。正規化の具体的な手順としては、第1正規化→第2正規化→第3正規化の順に行うのが一般的であり、以下、図を例に説明する。

* 第1正規化

表の各列の値から分割可能な値を排除する作業を第1正規化といい、正規化されていない表(非正規形という)に第1正規化を適用した結果を第1正規形という。ここで、分割可能かどうかは、分割した結果のデータが必要かどうかで判断される。第1正規形を満たさない表では、関係代数の演算の対象にできない値が存在しうるという問題がある。図の表A0は非正規形であり、[名称]列の値は銀行名と支店名に分割され、[銀行名][支店名]列と重複しており、また、[電話番号]列には複数の値が入っているものがある。表A0を第1正規化することで、表A1と表Bとに分離される。

* 関数従属

表において、列(または列の組み合わせ)P、Qがあり、Pの値が定まるとQの値も一意に定まる場合、(Pに対して)Qは関数従属であるという。(ここで主キーは、実際に主キーに設定しなくとも、主キーとなりうるものを指す。)

– 部分関数従属 主キーの一部の列に対して関数従属であること。

– 完全関数従属 主キー全体に対して関数従属であり、部分関数従属でないこと。

– 推移関数従属

Aに対しBが関数従属、かつ、Bに対しCが関数従属の場合、Aに対しCは推移関数従属であるという。

* 第2正規化

表の部分関数従属である列を他の表に分離する作業を第2正規化といい、第1正規形に第2正規化を適用した結果を第2正規形という。図の表A1は第1正規形であり、[銀行コード]列に対し[銀行名]列は関数従属である。[銀行コード]列と[支店コード]列との組み合わせは主キーとなりうるので、[銀行名]列は部分関数従属である。表A1を第2正規化することで、表A2と表Cとに分離される。

* 第3正規化

表の推移関数従属である列を他の表に分離する作業を第3正規化といい、第2正規形に第3正規化を適用した結果を第3正規形という。図の表A2は第2正規形であり、[都道府県コード]列に対し[都道府県名]列は関数従属である。主キーに対し[都道府県コード]列は関数従属であるので、[都道府県名]は推移関数従属である。表A2を第3正規化することで、表A3と表Dとに分離される。

2) 正規化のデメリットと非正規化

正規化には前述のメリットがある反面、多くの表に分解されるため、RDBMSの実装上の問題で、検索速度の低下等を招く可能性もある。そこで、正規形を敢えて冗長化する場合がある。この作業を非正規化という。

出典元:http://ossforum.jp/en/node/717

文面をみただけでは、なーんか、難しそうですよね。(^^;;

後、エンティティモデル(ER図)ってこんな感じ。

これは、FileMakerの「リレーションシップグラフ(リレーションを設定する画面)」をイメージした図です。

ER図をみれば、FileMakerの操作に近くなってくるかと思いますが、やはり、「そもそも、これらのテーブルは何を基準にして、どう分けているんだ?!」という疑問が先立ちます。

しかし、「正規化」(テーブルの分け方)については、文章と図だけで表現するのには、なかなか難しいものです。

やっぱり、ホワイトボードに書き殴りながら口頭でお話しし、場合によってはExcelの画面と比べながら、実際にFileMakerを操作していただく。

後は、「FileMakerでこんなふうにデータベースを作っていると、こんなことをしたくなった時に困るでしょう。そんなときには、こういうふうにテーブルを分けて、こうやってリレーションをつないで、後はこうやるんです!」と口頭で説明する。

やっぱり、これが一番伝わるんです。(^-^)b

「データベースの設計」って、どうやってするのか、まずは基本的なことをわかりたい!

そう思われた方は、私の「リレーション・トレーニング」に是非ともご参加ください。( ´ ▽ ` )ノ

えっ~~~?!何よ、それ〜〜!?

正規化だの、設計だの、やっぱりAccessと同じじゃん。(○`ε´○)

Accessで、「リレーション」って話で、さっぱりわからなくって挫折したから、FileMakerでやろうと思ったのに…..。(>_<、)

そう、悲観的になるのは早急ですよん!(^-^)b

FileMakerは、その目的によっては(一般的にいうと、”簡単な”データベースならば)、「リレーション」だの、「正規化」だの、「エンティティモデル」だのわからなくてもできちゃうものも、たくさんあります。

「すべこべ言ってないでさぁ、まず、データをためるってところからやってみなよ~。」

そういうお手軽さ、敷居の低さ、それがFileMakerにはあります。

その代表的なのが、FileMaker Pro 13の新規作成画面。

「フィールドピッカー」を使って、フィールドを作って、画面に並べるだけ!

ほぉら、データベースができちゃった!

FileMaker(ファイルメーカー)の新規作成画面

FileMaker(ファイルメーカー)の新規作成画面

とにかく、データを入力してから、先のことは考えよう!

そんな感じのFileMakerの初期画面。(笑)

あれこれ考えるよりも、まず行動を起こすこと。

それが大切なのかもしれません。

 
 

【超初心者大歓迎!独自カリキュラムでわかりやすい!!
          FileMaker®基本トレーニング・インフォメーション】

★★★★★「FileMaker® Pro トレーニング」を東京・大阪で開催中!★★★★★

「FileMaker® Pro」の基本を習得していただくための「FileMaker® Proベーシックトレーニング」を、株式会社ジュッポーワークスの大阪本社および東京支店で開催しております。

いずれも定員は5名様

  • ネットの情報や本を読んだだけではわからない…..。
  • 他社のトレーニングに参加したけれど、人数が多すぎてついていけなかった….。
  • トレーニングの早い段階で「リレーション」について説明され、パニックになってしまった…..。
  • FileMakerの用語がさっぱり理解できない…..。
  • パソコンの講習に初めて参加するので、不安だ….。

そんな方も、大丈夫!!定員5名様の少人数で、パソコンの講習会への参加が初めての方も、データベース自体がまったく初めての方でも、安心して受講いただけます。

当トレーニングは、20年以上FileMaker®の初心者と向き合ってきたことで、初心者には何がわからないか、何からどう順番に説明すればわかるのかを熟知した、独自のカリキュラム

「これまで、他のFileMaker®講習会に参加したが、ついていけなかった…..。(>o<)」という方も、当トレーニングを受講されて、「そういうことだったのかと、ようやく理解できた。」、「頭の中で散らばっていたことが、すんなりとつながった!」と、笑顔で帰っていかれます。

あなたの頭の中に散らばっている「点」が、「線」になってつながるとしたら?

この講習会で、あなたのFileMaker Proへの苦手意識をすっかり手放せるとしたら?

最初の一歩を踏み出すあなたを、心よりお待ちしております!!

お待たせしました!2017年5月、東京でグループレッスン開催!!!

「6時間があっという間!」とみなさん笑顔で帰られる、2017年度5月度のグループレッスンの開催スケジュールは下記のとおりです。

  • 入門講座(11:00〜18:00※初日のみ時間が異なります。ご注意ください。
    • 2017年5月17日(水)【東京・ver15・14合同】
    • 受講料お1人様 33,000円(税込:35,640円)+テキスト代 3,280円(税込:3,542円)
  • 応用講座(10:30〜17:30)
    • 2017年5月18日(木)【東京・ver15・14合同
    • 受講料お1人様 38,000円(税込:41,040円)+テキスト代 3,580円(税込:3,866円)
  • リレーション講座(10:30〜17:30)
    • 2017年5月19日(金)【東京・ver15・14合同】
    • 受講料お1人様 47,000円(税込:50,760円)+テキスト代 3,980円(税込:4,298円)

開催場所:弊社東京支店(地図)※東京都営地下鉄浅草線・泉岳寺駅下車徒歩5分

ver15またはver14をお使いの方限定の講座です。FileMaker Proは、ver13以前と、ver14以降とでは画面や操作内容が大きく違うところがございます。ver13以前のverをお使いの方が受講されますと、十分にご習得いただけない場合がございますので、十分ご留意のうえ、ご参加をご検討ください。

※講習時間には、途中昼休憩1時間含みます。

詳しくは、下記をクリック↓↓↓↓↓

FileMaker Proグループレッスン2016年1月〜3月のご案内
わかりやすいと大評判!
「FileMakerトレーニングテキスト」は下記をクリック↓↓↓↓↓

FileMaker Pro15トレーニングテキスト

%d人のブロガーが「いいね」をつけました。