今から父になるから俺の悩みを聞いてくれ。

子ども産まれるんで育児とか生き方について書きます。映画とか心理学とかITとかの趣味についても書きます。

FileMakerの勉強 vol.1.1(概論)

どうもです。maximonelson49です。こないだ索引について調べたときに読んだ記事のまとめをする。(いい記事だった)

 

日経IT pro 『1週間で学ぶIT基礎の基礎』記事内容まとめ

この記事。

1週間で学ぶIT基礎の基礎 - すぐわかるデータベースの基礎(1):ITpro

1週間で学ぶIT基礎の基礎 - すぐわかるデータベースの基礎(2):ITpro

1週間で学ぶIT基礎の基礎 - すぐわかるデータベースの基礎(3):ITpro

1週間で学ぶIT基礎の基礎 - すぐわかるデータベースの基礎(4):ITpro

(全部リンク貼ろうと思ったけど面倒くせえからやめる。全9回です。)

 

●第1回「データベースとは何か」

・データファイルとデータベース

データの入ったファイルってのは色々ある。例えばExcelファイル、Wordファイル、PowerPointファイル、txtファイルなど。これらをデータファイルと呼ぶんだが、しかしデータベースと呼べるのは(ざっくり)Excelとtxtだけだ。

というのは、WordとかPowerPointは特定のプログラムでしか読み書きできない。

txtファイルなら氏名,電話番号(改行)…みたいなデータの格納形式で作成でき、色んなプログラムから読み書き可能だ。(これCSV形式って言うんだが、CommaSeparatedValuesが元らしい。へー。)

これがだいたいのデータベースの定義。もちっと詳しくすると、以下3条件とのこと。

  1. 特定のプログラムに依存しない(プログラムと独立したデータ・ファイルであること)
  2. データの格納形式が公開されていること(任意のプログラムから読み書きできること)
  3. 容易にデータを操作できること(登録,読み出し,更新,削除,など)

・データベースエンジンの役割

データベースの中には、データファイルの構造が公開されていないものもある(データベースの条件②に反してないか?と読んでて思ったが)。例えばAccessで使われるMDBとかがそうなんだが、なぜ公開されないのかと言うと、それは企業秘密だからってのと、公開しても難しくって取り扱い困難だから。

じゃあもう取り扱えないじゃん、となってしまうんだが、そうならないためにMicrosoft様はデータベースを取り扱うためにJetという専用のプログラムを提供している(データベースの条件①に反してない…?)。これをデータベースエンジンと言い、データベースの構造が公開されてなくてもデータのやりとりが可能になる。(まあやりたいことはできるからデータベースの条件に反しててもいいのかな?)

こういうデータベースエンジンは4つの機能を提供しており、それぞれCreate(作成),Read(読み出し),Update(更新),Delete(削除)という。これらの頭文字を組み合わせてCRUD(クラッド)と呼ぶ。

・データの論理的な構造とテーブル

 以下元記事コピペ。

データベースの実体は,フロッピ・ディスクやハード・ディスクに記録されたデータ・ファイルですが,データベースの構造を示すときには,テーブル(表)を使うことが一般的です。物理的なデータ・ファイルの構造など気にしないで,論理的にはテーブルすなわち表形式でデータが格納されていると考えるのです。

フロッピーってクソ懐かしかった。小学校の情報の授業で1枚貰ったわ。

まあとりあえず、データは実体がなんであれテーブル(表)形式という論理的構造で取り扱われること多し。

また、ひとつのデータファイルにはいくつものテーブルが存在することもある。データベースエンジニアの仕事は、どんな情報(内容)をどんな風に(構造で)格納するか、を設計することなんだとか。へー。

●第2,3回「リレーショナル・データベースとは⑴,⑵」

・データベースの種類

データベースの種類はおおまかふたつ。「リレーショナル・データベース」と「カード型データベース」だ。前者は現在広く普及しており、データベースといえばこちらを指す。カード型は昔FileMakerがやってた形式だけど、現在FileMakerもリレーショナルでやってる。

 カード型ってのは名刺ケースみたいなもんで、ひとつのカードに情報をわんさと詰め込むタイプ(FileMakerが名刺管理ソフトと揶揄されるのはここから)。リレーショナルは、たくさんのテーブルを用意し、それらを関連(リレーション)付けたもの。リレーショナルの方が保守性とかが高くて便利。

・リレーショナルデータベース作成の流れ

リレーショナルデータベース(面倒なのでRDBとここからは書く)作成の順序は下記の通り。

①データ種類の洗い出し

これはまあ分かると思う。データベースに登録したいデータの種類を出す。例えば献立データベースを作るなら、料理の名前とか、作るのにかかる時間とか、食材の種類とかを登録したくなると思う。そういう登録したいデータの種類の洗い出し作業が必要だ。

②データの属性決定

データの種類が洗い出せたら、次はそのデータの種類に入力できるデータの制限をする。例えば文字数とか、数値の範囲とか。

③テーブルの正規化

ここが若干難しいかも。まあなんだ、例えば顧客名簿があって、そこに担当営業名が載ってるとする。んで、顧客Aと顧客Bは担当営業①が担当している。こういうふうに、あるフィールド(担当営業フィールド)において別レコード(顧客Aと顧客B)に同じ値(担当営業①)がセットされる状況はあんまり好ましくない。なぜかっつーと、担当営業①が結婚して苗字が変わったとき、全レコードの担当営業者名を変更しなきゃならんくて、保守性に欠けるから。

じゃあどうすんのか。答えは担当営業テーブルを作ってやって、営業の名前はそっちで重複なく管理する。んで、営業者コードとかで顧客名簿と紐付ける。まあよく分かんなかったら元記事読んでくれや。

1週間で学ぶIT基礎の基礎 - すぐわかるデータベースの基礎(2):ITpro

④テーブル間の関連性の設定

③の最後に少し書いてしまったが、複数のテーブルを、特定の値を共有させることで関連させる。その関連させるフィールドをどれにすんですか、って話。んでその関連付けられているフィールドのことをキーと呼ぶ。

⑤その他

キーの関係性は1対多だとか、参照整合性とか索引とか。まあ元記事読んでくれや。

●第4,5回「データベース管理システム⑴,⑵」

(なんかしらんが、この回からスマホ用サイトがなくなったのかPC用サイトがヒットするようになった。)

ここではデータベース管理システム(以下DBMSと呼ぶ)について解説してあった。DBMSっつーのはまあAccessみたいなもんで、データベースを使いやすくしてくれるやつ。以下3つのものから構成される。

  1. データファイル
  2. データベース・エンジン
  3. データベース管理ツール

1はデータの本体、2は1の構造が複雑でも外部アプリと繋がるようにしてくれるやつ。んじゃ3はなんなんすか? というのがこの記事。

で、3は何かっていうと、まあデータベースをなんやかんやするアプリ。3つの機能を持っている。

  1. データベースを定義する機能
  2. データベースを操作する機能
  3. データベースを保護する機能

それぞれ軽く解説。

①データベースの定義

このデータベースはどんななんすか? ってのを決める。決める要素にはこれまた3つあり、物理的な部分、論理的な部分、利用者から見える部分の3つ。この3つを合わせて「三層スキーマ」なんて呼んだりもする。

②データベースの操作

元記事コピペする。

データベースの操作とは,データを登録(Create),読み出し(Read),更新(Update),削除(Delete)することです。これらの頭文字を組み合わせてCRAD(クラッド)と呼び[…]

あれこれデータベース・エンジンの機能としてやんなかったっけ??? CRUDの綴りが違うから別物かな???

③データベースの保護

データが失われない・失われても問題ないようにする機能。参照整合性とか、排他制御、障害復旧、セキュリティ管理など。

参照整合性っつーのは、関連付けられてるデータを削除させないようブロックしたりする機能。あるテーブルで関連付けられてるデータを削除すると、意図しない形で別のテーブルの情報まで削除することになる。それを防ぐ。

排他制御は、エクセルの読み取り専用みたいなやつ。みんなでひとつのファイルを制御すると大変だから、誰かが開いてたら他の人からは編集できないよう読み取り専用にしたりする。

障害復旧はまあその通りで、障害発生した時に正しい情報にどう戻すかという話。退避しといたバックアップデータと、操作内容を示すジャーナルデータで復旧する。さいごのセキュリティも、セキュリティの話。パスとかアクセス権限とかデータファイルの暗号化とかログの管理とか。

●第6,7回「SQL入門⑴,⑵」

 SQL。ってなんですかーっつーと、Structured Query Language(構造化照会言語)だそうです。構造化されたクエリの言語。さらには、

SQLは,データベースのスキーマの定義と,データベースを操作する命令を記述するために特化した言語です。

んで、このSQL文ってやつをデータベース・エンジンが解釈して実行するそうな。SQLの書き方自体は今回あんま重要じゃないから省略するけど、わりと英語っぽくて覚えやすそうではあった。(例えばこんなん。

CREATE TABLE 営業先一覧
(名前 NCHAR(10)
担当者 NCHAR(10)
電話番号 CHAR(11))

これで、名前、担当者、電話番号の列を持つ表が作られる。NCHARとかはデータのタイプを表し、10とかはケタを表している。簡単そうだな〜〜。)

ちな、主だった命令は下記。

  1. テーブルの定義
  2. データの登録
  3. データの読み出し
  4. データの更新
  5. データの削除

SQLの実行とストアドプロシージャ

 データベースいじるとき、いちいちSQL文書くんですかーというとそういうわけではない。定型の処理はまるでプログラミングのように、というかエクセルにおけるマクロみたいな感覚でプログラミングして登録することができる。それがストアドプロシージャ。これはほんと、条件分岐とかも使える、とのこと。

 

●第8回「DBMS運用の種類」

DBMS(データベース管理システム)の運用の仕方にはみっつある。

  1.  スタンドアロン
  2. ファイル共有型
  3. クライアント・サーバ型

 これらはデータファイルとDBMSをクライアントとサーバでどのように受け持つか、の違いで分かれる(その前にクライアントとサーバについて書いとくと、クライアントはふつーのコンピュータ。サーバはみんながガツガツアクセスする機能の高いコンピュータ。たぶん間違ってない)。

まずスタンドアロン型は、データファイルもDBMSも両方ともクライアント側にある。というか、クライアントがサーバの役割もなす。一台だけで全て成り立っており、ユーザはみんなでそのコンピュータを使う。

ふたつめのファイル共有型。これはデータファイルだけサーバで管理して、DBMSは各クライアントに導入される。誰かがデータファイルを占有しているとき、他のメンバーはデータファイルの編集ができなくなる。

最後のクライアント・サーバ型。これはデータファイルもDBMSもサーバー側にある。クライアントはサーバーのDBMSを介してデータファイルにアクセスする。このとき、排他制御とかはレコード単位で行われるので、ファイル共有型よりかは縛りがきつくない。

ふーん、って感じ。

 

●第9回「データベースの種類」

データベースの種類について。まあ、アクセスとかオラクルとかが紹介されてました。ここはそんなもんでいいっしょ。

 

はい、今回は以上。引き続きFileMakerの勉強をする。