データベース基本

セールスレター形式で全ページが続いています。

第1回 データベースとは何か?

●目的

 「データベース」という言葉を耳にしない日はないでしょう。
コンピュータの主な用途は,データを処理することです。つまり,データベースなくしてコンピュータは成り立たないといっても過言ではありません。
ところが,データベースの難解な実装技術ばかりが話題の中心となっているため,バリバリのエンジニアでもない限り,会話にさえ着いていけない人が多いのではないでしょうか。これでは,管理者や初級エンジニアの不安は募るばかりでしょう。

 そこで、この講座ではあらためて「データベースとは何か?」
を原点に立ち返って解説し,データベースにかかわる基礎的な知識をマスターした上で,データベースの実装技術を概観します。何事も基礎をマスターするほど心強いことはありません。それでは,はじめましょう!

●データベースとデータ・ファイルの違い

 データベース(DataBase:DBと略すことが多い)とは,
データの集合体という意味です。
データベースという用語は,コンピュータの分野だけで使われるものではありません。皆さんの手帳に得意先の電話番号が記載されているなら,それも立派なデータベースです。電話番号をフロッピ・ディスクやハード・ディスクにデータ・ファイルとして記録すれば,それだけでコンピュータで利用できるデータベースとなります。

 それでは,コンピュータにおけるデータベースとは,データ・ファイルのことなのでしょうか?答えは,YESともNOとも言えます。
例えば得意先の氏名と電話番号を,ワープロ・ソフトのWordで入力し、
これを「denwa.doc」

word 

というファイル名で保存したとしましょう。
このデータ・ファイルの内容を,Word以外のプログラムで読み書きすることができるでしょうか?Word独自のファイル形式で保存されているため,一部のソフトを除けば,他のソフトでは読み書きできませんね。
このように,特定のプログラム(ここではword)に依存したデータ・ファイルは,データベースとは言えません。

今度は,Windows標準のメモ帳などを使って,「氏名,電話番号(改行)」という形式でデータを入力し,これを「denwa.txt」

テキスト

というファイル名で保存したとしましょう。このデータ・ファイルなら,データの格納形式(‘,’カンマで区切られ,改行で1件の情報を表すテキスト・ファイルであること)が分かるので,メモ帳以外のプログラムからでも読み書きできます。これなら,データベースと呼ぶことができます(図1)。

TOPページへ

各プログラム
図1●さまざまなプログラムから同じデータ・ファイルが利用できる

このことから,データベースとデータ・ファイルの違いが見えてきたでしょう。データベースの実体がデータ・ファイルであることは事実ですが,データベースと呼ばれるためには,以下の条件を満たしていなければなりません。
 
(1)特定のプログラムに依存しないこと
  (プログラムと独立したデータ・ファイルであること)
(2)データの格納形式が公開されていること
  (任意のプログラムから読み書きできること)
(3)容易にデータを操作できること
  (登録,読み出し,更新,削除,など)

データベースの構造やデータの格納形式のことをスキーマ(schema)と呼ぶこともおぼえておいてください。

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

 データをカンマで区切って格納する形式のデータ・ファイルのことを,
CSV(Comma Separated Value)ファイルと呼びます。
CSVファイルは単純で取り扱いやすいので,異なるOSや異なるプログラムの間でデータを交換する際によく使われます。CSVファイルなら,皆さんがオリジナルのプログラムを作成して,データを読み書きすることも容易でしょう。

ところが,実際のデータ・ファイルには,マイクロソフトのデータベース・ソフトであるAccessで使われているMDBファイルのように,データ・ファイルの構造が公開されていないものも多くあります。この理由は

TOPページへ

(1)データ・ファイルの構造が企業秘密であるから,
(2)たとえ構造を公開したとしても,複雑すぎるために取り扱いが困難だからです。

 そこで,市販のデータベース管理システム(Access,Microsoft SQL Server,及びオラクルのOracleなど)では,データ・ファイルを読み書きするための専用のプログラムを提供しているのが一般的です。
 このようなプログラムのことをデータベース・エンジンと呼びます。エンジンとは,特定の機能に特化されたプログラムのことです。特定のデータ・ファイルを読み書きする機能だけを持っているので,データベース・エンジンと呼ばれます。データ・ファイルの構造は非公開であっても,データベースエンジンを操作する方法は公開されています。
 したがって,データベース・エンジンを仲介させれば,さまざまなプログラムから目的のデータ・ファイルを読み書きすることができます(図2)。

エンジン
図2●データベース・エンジンを仲介させて,データ・ファイルを読み書きする

例えば,先ほど出てきたMDBファイルを読み書きするために,マイクロソフトはMicrosoft Jet Database Engine(単にJetとも呼ぶ)というデータベース・エンジンを提供しています。
皆さんがプログラミング・ツールのVisual Basicなどを使って作成したプログラムからMDBファイルを読み書きするためには,Jetを仲介させることになります。そのほかのデータベース管理システムでも,ベンダーがそれぞれ専用のデータベース・エンジンを提供しています。

●データベース・エンジンとは

主にデータベースを

作成(Create)
読み出し(Read)
更新(Update)
削除(Delete)

する機能を提供します。
これらの4機能は,データベースの基本的な操作であり,この頭文字を組み合わせてCRUD(クラッド)と呼びます。

TOPページへ

●何故ファイルメーカーを利用するのか?

Oracle等はデータの記録を高性能に行う事に主眼が置かれているのでデータ処理スピードは勝りますが、管理やチューニングに高度な知識を必要とします。

これに対してFileMaker® Proソフトウェアはデータ管理からユーザインタフェース作成まで同一のアプリケーション内で統一的かつ使いやすいユーザインタフェースで利用でき、加えて業務システム構築に必要な機能もサポートします。データベースソフトということでOracle等と比較されることもよくありますが、一般にはFileMaker® ProソフトウェアとOracle等は横並びで比較はできないものです。

1つのアプリケーションでシステム構築ができることがまず挙げられます。基本となるデータベースから帳票作成まで、業務システムのほとんどの機能をまかなえるでしょう。そして、開発に使うアプリケーションではあるのですが、一般ユーザにとっても使いやすいことが挙げられます。

FileMaker® Proソフトウェアは、専門の開発業者でないと使えないというソフトではありません。事務作業を行うのが業務の人でもシステム開発をしていることもあります。その結果、専門業者によって作られた業務システムを、ユーザサイドでさらに改良を進めるといったことも可能になります。

皆様もこれを目指します。

具体的に進めます。     用語:テーブル・フィールド・レコード

●データベースの論理的な構造を表わすテーブル

データベースの実体は,ハード・ディスクやフロッピ・ディスクに記録されたデータ・ファイルですが,データベースの構造を示すときには,テーブル(表)を使うことが一般的です。

物理的なデータ・ファイルの構造など気にしないで,論理的にはテーブルすなわち表形式でデータが格納されていると考えるのです。

どのような種類のデータベースであっても,その構造は,テーブルを使って統一的に表すことができます。

データベースを読み書きするプログラムでも,表形式のユーザー・インタフェースを提供するものが多くあります。図3は,Microsoft Accessの画面の一部です。表形式でデータが入力できるようになっているのが分かるでしょう。

アクセス  
図3●テーブル(表)は,フィールド(列)とレコード(行)で構成される

TOPページへ

●テーブルの構成

ここで,重要な用語を2つ覚えてください。
テーブルを構成する列をフィールドと呼び,
行をレコードと呼ぶ,ということです。
フィールドとは,レコードを構成する個々のデータを切り分ける単位です。
図3のテーブルには「氏名」「電話番号」という2つのフィールドがあることになります。

レコードとは,データの集まりです件数です。ここでは「氏名」と「電話番号」の2つのフィールドが集まって1件のレコードとなっています。
レコードは,1つ,2つ,…ではなく,1件,2件,…と数えます。図3のテーブルには3件のレコードがあることになります。

1つのデータ・ファイルの中には,テーブルが1つだけある場合も,テーブルが複数ある場合もあります。

さらに,複数のテーブルを含んだ複数のデータ・ファイルが集まって,1つのデータベースとなる場合もあります。いずれにしても,データベースを物理的なデータ・ファイルの集合ではなく,論理的なテーブルの集合として考えることが重要です。
例えば,データベースの設計では,テーブルの内容と構成を設計することになります。複数のテーブルを組み合わせたER図(Entity Relationship Diagram)と呼ばれます。

  1. 最初に大まかなデータの構造を書きます。
  2. それをブレークダウンしながら作成していきます。
  3. そして、この時に正規化という概念が重要になります。

この設計が最適でないと後からのチューニングは成功しません。
初めの準備に正規化をして置かなければ使えない物になってしまいます。

●正規化の目的

一言でいうと正規化とは、

1事実1カ所(1 fact in 1 place)を目指して、
テーブルの整合性を保ったまま、
テーブルの冗長性を排除して、
データを効率的に管理できるようにすることです。

データベースはデータを保管するシステムですので、データを効率的に管理できることは非常に重要です。

正規化では、冗長性を排除するためにテーブルの分解という方法を取ります。その方法には以下の3つがあり、
第n正規化して得られるテーブルを第n正規形といいます。
•非正規形(※正規形ではないが、第1正規化の対象を非正規形という)
•第1正規形
•第2正規形
•第3正規形

では、なぜ正規化しなくてはならないのでしょうか。
正規化をしないで、テーブルに冗長性があると下記の3つの問題が発生します。

•事前登録不能(登録)
•重複更新(更新)
•関係喪失(削除)

これらのことを考えながら設計図(ER図)を書いていきます。

TOPページへ

ER図(次々とブレイクダウンして行きます。)

  参考図

ER記号


ER図の作成

▼まず、2つのテーブル「顧客」「受注情報」を作成します。

brake1




▼テーブルにフィールドの作成します。

brake2

(キー)になっているフィールドに注目

データを入力すると下図のようなテーブルになり、繰り返しと冗長さがあります。

顧客  --------  非正規化



TOPページへ

正規化の手順

▼テーブルにもう少し、フィールドの追加してデータを入力したテーブル
【非正規形】
全て


▼テーブルを正規化するために分解しましょう。(第一正規化をする。)
【第一正規形】受注情報
受注情報
【第一正規形】受注明細
受注明細

分解により、どんどんと正規化

▼テーブル内のデータの繰り返しを分解しましょう。(第二正規化をする。)

「受注情報」テーブルは繰り返しと冗長さはありません。
「受注明細」テーブルを分解します。
金額フィールドは導出される物なので排除

第一正規形「受注明細」

受注明細


第二正規形(であり、第三正規形)

受注明細と商品


TOPページへ

▼テーブル内のデータの従属性を分解しましょう。(第三正規化をする。)

「受注明細」テーブルはそのままでOK.
「受注情報」テーブルは従属した部分を分解。

第二正規形「受注情報」

受注情報


第三正規形
顧客・受注情報

「注文明細」と「商品」、「受注情報」と「顧客」4つのテーブルで完成です。

FileMaker Proを使っての実践です。

FileMaker® Proソフトウェアの大きな特徴は、「レイアウト」というシート上に、データベースに蓄積したデータを高い自由度で配置することで、柔軟に画面設計や帳票作成ができることです。

全体イメージ

紙で行っていたような事務作業は、
FileMaker(ファイルメーカー)で置き換える事が可能です。これまで使っていた帳票に限りなく近いレイアウトを作りその上で入力作業を行いうことができます。さらに過去のデータが蓄積されることで集計作業の自動化ができるなど、大きなメリットも生まれます。反復的な作業や、状況に応じた作業などは「スクリプト」という仕組みを使う事で、かなりのところまで自由化ができます。FileMaker® Proソフトウェアは単に表示がきれいにできるだけのソフトではなく、スクリプトによるさまざまな自動処理を組み込む事で、機能をしっかりと組み込んだ業務ソリューションに発展させることができます。

●エクセルファイルを利用してファイルメーカーに変換

エクセルのデータを整理しておきます。

元

CSV

TOPページへ

●ファイルメーカーで開く

  1. 「3.csv」をファイルメーカーで開く。方法は2つ、
    1つ目はアイコンのDrag&Drop、2つ目は右クリックでアプリを選んで開く。
  2. 次のようなダイアログが開きます。

    ダイアログ

  3. この選択は1行目がデータなのか?フィールド名なのか?聞いています。
  4. 今回はフィールド名なので上のラジオボタンをクリック。
  5. 次のようなファイルが開きます。(画像クリックで大きく
    表形式
  6. 右上のフィールド名(f1)に注目下さい。
  7. エクセルデータの時にA列、1行目は空白だったので、f1と名付けられた。
  8. このフィールド名の修正にあわせて、その他のフィールド名の修正とタイプも変更しましょう。(金額などは数字タイプ、日付などは日付タイプ等々。)

●ファイル→管理→データベース→フィールドタブを選択

画像クリックで大きく
フィールド
画像のようにフィールド名の細かな修正をし、タイプも変更しましょう。

TOPページへ

●フィールドをテーブルに分解

  1. 登録番号……f1を変更

    登録番号

  1. 依頼書……名前を簡単にします。

    依頼NO・依頼日・依頼先

  2. 見積書……これも簡単に

    見積書NO・見積日・見積金額・見積項目・見積残項目

  3. 受注書……同じく

    受注NO・受注日・納期

  4. 発注書……同じく

    発注NO・発注日・発注先・支払日・支払金額

  5. 請求書……「請求書NO」を追加します。

    請求書NO・請求日・請求金額・入金日・粗利・備考

●準備できた1つのテーブル

クリックで拡大します。
1つのテーブル

TOPページへ

●ファイルメーカーでテーブルの分割

  1. 現状のテーブル…1つのテーブル、23個のフィールド、各タイプの設定

    1テーブル

    ××書テーブルには登録番号フィールドを追加する。
    「登録」「依頼書」「見積書」「受注書」「発注書」「請求書」テーブルを作成する。
    このフィールドをリレーションする時に使います。画像をクリックで拡大

    テーブル

  2. テーブル分割後のリレーション前の状況 画像をクリックで拡大

    リレーション

●リレーションの方法

  1. 各テーブルにある登録番号をドラッグして、リレーションシップにする。

    リレーション

  2. 左下2番目にあるツールを選択して、行う。

    シップ

  3. 左右のテーブルをそれぞれ選択し、登録番号を選択し、追加ボタンをクリック
    下の枠内にリレーション内容が表示されます。
    追加の機能 □チェックボタンでデータの作成・削除・ソートが可能になります。
  4. それぞれのテーブルにリレーションシップを追加しましょう。

    TOPページへ

●リレーションの利用時、キーフィールド(登録番号)は?

1.新しいレイアウトにリレーション先のフィールドを表示させる。

  1. 全テーブルから「登録番号」
  2. 依頼書テーブルから「依頼NO」「依頼日」「依頼先」
  3. 見積書テーブルからも「登録番号」以外のすべてのフィールドを
  4. 同じように全てのテーブルからも「登録番号」以外の全てのフィールドを選びます。
  5. 次へボタンをクリック

    スタイルの選択
    レイアウトのスタイルを選びます。

  6. これで完了です。
  7. レイアウト画面にしてフィールドの横についているピンの色(黄色)に注目
  8. フィールドの名前の前に「::*****」と付いているのにも注目

    レイアウト

TOPページへ

2.フィールドにルックアップでデータを読み込む方法

ルックアップ
フィールドにオプションでルックアップを設定する。

ルックアップ指定

  1. ルックアップ値の指定をする。

    画像の説明

  2. 開始するテーブルと関連するテーブルを選択し、どのフィールドを読み込むか!

ここまでの概要説明

この講座は元資料のエクセルデータを使うことから始めました。これにより実際のDB作成時とは流れが違うことを認識しておいてください。

テーブルのリレーションにより、登録番号フィールドをキーにし、同じ登録番号のレコードを別のテーブルに利用できることを主眼としています。

TOPページへ

ルックアップの指定方法の詳細

  1. メニューバーのファイル→
  2. 管理→
  3. データベースを選択する。

    データベース

依頼書テーブルのフィールドタブを選択。

フィールド

TOPページへ

依頼NOフィールドを選択、オプションボタンをクリック。

オプション

入力値の自動化タブのルックアップ値をチェックすると

ルックアップ値

  1. 開始するテーブル:→依頼書
  2. 関連するテーブルからルックアップする:→全テーブル
  3. 値のコピー元のフィールド:→::依頼NO
    と選択をし、OKボタンをクリック、オプションダイアログもOK。

    ルックアップ

  4. 依頼NOフィールドにオプション欄にルックアップが指定されていることを確認。
  5. 同様に「依頼日」と「依頼先」フィールドにルックアップを指定する。
  6. 開始するテーブル:→依頼書
  7. 関連するテーブルからルックアップする:→全テーブル
  8. 値のコピー元のフィールド:→「::依頼日」と「::依頼先」

    TOPページへ

ルックアップの指定を各テーブルにも

これまでに「依頼書」テーブルのルックアップは完了しましたので、

  1. 「見積書」テーブル
  2. 「受注書」テーブル
  3. 「発注書」テーブル
  4. 「請求書」テーブル
    これらテーブルにもルックアップの指定をする。

テキスト7で分解した各テーブルのレイアウトの整理

レイアウト

整理の完了図です。このようにしましょう。

講座テキスト7で分解作成をしたテーブルのレイアウトはフォーム形式で一つだけできている筈です。それぞれにリスト形式を追加しましょう。
 これらは4/22の講習の時に行いました。
次にフォルダを作成をし、フォーム形式とリスト形式の2つずつ中に入れて整理しておきます。

TOPページへ

テキストにすることを省きました。講習を思い出してください。

  1. 各テーブルにレコードを10件作成し、登録番号を1から10迄入力して下さい。
  2. 登録番号フィールドにカーソルを置き、
  3. メニューバー→レコード→フィールド内容の全置換を選択。

    全置換

  4. シリアル番号で置き換える:を選択、初期値:1、増分:1
  5. これで1から10が入力できます。

ここまでの確認

1. エクセル作成の元ファイル利用。

2. 長いフィールド名を短く、分かりやすくレイアウト上で分離し配置する。

3. 分離した分に対応したテーブルを作成。各テーブルに登録番号フィールドを追加。

4. リレーションシップの設定。登録番号を照合キーにした。

5. 新規レイアウトを作成(各テーブルのフィールドを表示させる為)

6. このレイアウトに各テーブルのフィールドを配置した。

7. 各テーブルのフィールドにオプションでルックアップの指定をした。

8. 各テーブルのレイアウトをフォーム・リスト形式の2つにし、フォルダ内に整理した。

9. 各テーブルに10件のダミーデータのインポートをする。

TOPページへ

ポータルの設定方法

  1. リレーション1のレイアウト利用します。
  2. レイアウトを次のような感じにしましょう。

    レイアウト

  3. ポータルツールを選択し、表示させたい大きさに左上から右下へドラッグ。

    ポータル

  4. ポータル設定のダイアログが開きます。
  5. 関連レコードを表示:依頼書を選択。
  6. 行数:1に指定してOKボタンをクリック。

    フィールド

  7. ポータルにフィールドを追加のダイアログが開きます。
  8. 依頼書テーブルを選択し、「依頼NO」「依頼日」「依頼先」を右BOXへ移動し、OK。

    TOPページへ

    レイアウト

  9. ポータルBOX内に3つのフィールドができたのを確認。
  10. 依頼書ポータルの枠とフィールド名を図のように追加しましょう。
  11. 「見積書」「受注書」「発注書」「請求書」も同様にポータルを設定します。

ポータルの説明

  1. ブラウズモードにすると下図のようになります。

ブラウズ

「ルックアップでの表示」と「ポータルでの表示」

  1. 通常はこのように同じレイアウトを使うことはありませんが、設定方法の学習の為に使った事を認識しておいてください。。
  2. そしてポータルは今回のように1行で表示することもありません。(複数行の使用)
  3. 次回の講習で行います。
  4. ポータルと同じように別テーブルのフィールドを表示させる方法もあります。
  5. これも次回に廻します。

ここまでは(講座テキスト5〜12)正規化されたものではありませんでした。

  1. 講座テキスト4までの正規化のことは無視をして、今、業務でエクセル利用で集計をしているものをそのまま利用してみようと始めたものです。
  2. お気づきのとおりにフィールド名に冗長なところがかなりあります。
  3. 次回の講習では正規化することを始めたいと思います。
  4. 使用ファイル名:kozatxt.fp7 
  5. 上記ボタンをクリックをし、ファイルをダウンロード(DL)をして下さい。

    TOPページへ

始めからファイルメーカーProで作成。

住所録を作成します。

  1. 正規化に注意しながら作成。
  2. 作成したいフィールドの書き出して見る。
    フィールド名タイプオプション
    登録NO数字番号自動入力
    ふりがなテキストふりがな使用"氏名"  
    氏名テキスト
    旧姓テキスト
    郵便番号テキスト
    自宅住所テキスト
    自宅電話テキスト
    emailテキスト
    勤務先テキスト
    卒業年テキスト
    支部テキスト値一覧
    役員テキスト値一覧
    Net登録テキスト値一覧
    名簿希望テキスト値一覧
    名簿代金数字
    名簿入金日日付
    寄付金額数字
    寄付入金日日付
    総会出欠テキスト
  3. 「Net登録」迄はフィールド内に一意の内容であるので、同じテーブルで作成する。
  4. 名簿希望」は名簿発行ごとに違ったものになる。
  5. 名簿代金」「名簿入金日」も同様である。
  6. 寄付金額」「寄付入金日」は寄付金を募った時期により違ったものになる。
  7. 総会出欠」は毎年行われそのつど違ってくる。

TOPページへ

「登録NO」〜「Net登録」フィールド迄の分解テーブル1作成

  1. テーブル名:住所録
  2. フィールド数:25フィールド

    フィールド

  3. フィールドのタイプの指定とオプションの設定をする。
  4. 色々なオプションを設定をしてみましょう。  【住所録.fp7】

    指定されたファイルは存在しません。

    レイアウト

  5. 「氏名」「ふりがな」「〒」「住所」「年月日」等の計算式での設定法
  6. 「都道府県」「支部」「役員」「Net登録」の値一覧の設定法
  7. ダウンロードしたファイルで確認をしましょう。

TOPページへ

テーブルを分解するとともに必要になるフィールドを追加する。

名簿テーブルに分解

フィールド名タイプオプション
名簿希望テキスト値一覧
名簿代金数字
名簿入金日数字
  1. 名簿発行する時にその名簿を特定する為のフィールドに例えば”号数”の指定

    名簿テーブルにフィールドを追加

    フィールド名タイプオプション
    登録NO数字    
    号数数字    

ファイルメーカーで作成しましょう。

  1. テーブル名:名簿
  2. フィールド数:5フィールド

    名簿

  3. レイアウトを整理しましょう。

    名簿レイアウト

  4. リスト形式のレイアウトも作成しましょう。

    TOPページへ

ボタンとスクリプトの設定方法

ボタンにはあるイベントを割り当てられる。スクリプトとは台本です。

  1. 名簿テーブルの「フォーム形式」「リスト形式」レイアウトにボタン(スクリプトの実行)を配置して見ましょう。
  2. 「フォーム形式」レイアウトで「メニューバー」→「スクリプト」→「スクリプトの管理」を選択する。左下の「新規」をクリック。
    新規スクリプト
  3. スクリプト名:リスト形式へ
  4. 左のフレームには選べるイベントが並んでいます。ここから「レイアウト切り替え」を選択をし、「移動」ボタンをクリックをし、「指定」→レイアウト→「名簿リスト」を選択。
  5. ついでにもう一つスクリプトを書いておきましょう。
  6. イベントをスクロールさせて、「ウインドウの調整」→「移動」→「指定」を収まるようにサイズ変更を選ぶ。
    スクリプト

スクリプトの確認

  1. スクリプトの編集ウインドウを閉じると保存するか聞いてくるので保存する。
  2. スクリプトの管理画面で「リスト形式へ」のスクリプトを選び、右下の「実行」ボタンをクリック。
  3. どうですか、フォーム形式からリスト形式のレイアウトの移動をし、大きさも調整されましたか。

ボタンにスクリプトの割り当て。

  1. 名簿の「フォーム形式」をレイアウトモードにする。

    ボタン配置

  2. レイアウトツールのボタンツールを選び、適当なところにボタンを配置する。

    ボタン

  3. スクリプト実行を選択。「指定」ボタンクリック。

    スクリプト指定

  4. 先に作成をしたスクリプト「リスト形式へ」を選択、OK。
  5. スタイル→角丸長方形を選択。
  6. □ボタン上でカーソルを手の形にする。にチェック。OK。
  7. ボタンにカーソルが点滅していますので、名前をつけます。→「リストへ」
  8. ブラウズモードにしてから、ボタンをクリックをし、動作の確認をします。

次に、逆方向の「リスト形式」→「フォーム形式」を作成しましょう。

作成後に動作の確認をしておきましょう。

TOPページへ

運用方法をDBに表すためにリレーションを設定する。

流れを検討する。→リレーションに

  1. 住所録テーブルには個人に特有の一意のデータが入力されています。
  2. 名簿を例えば、学校の同窓会名簿と仮定します。
  3. 学校の同窓会名簿ですから、遅くとも1年に一度は発行したい。
  4. 新しい名簿には卒業した人を追加し、住所の移転だとか、苗字が替わった方とかの変更があります。
  5. 名簿の発行とか、購入者とか、入金状況とか、寄付金の履歴とか、同窓会の出欠等を管理したいということが考えられます。
  6. この講座では、名簿のテーブルを作成しましたので、名簿を発行したときのことを考えてみましょう。

    【FileMaker Training Series】の第三章にはこのように書いてあります。

このモジュールが終了すると、
• 実世界のシナリオを一連のエンティティとそのアトリビュートに分解できるようになります。

データベースシステムを作成する際には、実世界の中のいくつかの事象に関する情報を選択して保存します。 植物園の例で言うなら、追跡すべきエンティティとして「メンバー」と「寄付」を選択するといった具合です。 さらに、個別の情報(アトリビュート)を保存するという選択を行います。メンバーの場合であれば、名前と 住所を保存するといったことになります。個々のメンバーがエンティティとなるわけではないという点に注意 してください。エンティティというのは、個人ではなく、メンバーという一般概念を表すものです。設計する システムは、そのエンティティの個々のインスタンス(事例)を追跡します。コーデル・レーイン、アン・ジー マ、クリフ・ヒクソンといった個々のメンバーの名前は、すべて「メンバー」というエンティティの個別のイ ンスタンスとなります。寄付の場合には、金額、寄付者の名前、寄付が行われた日付を保存することになるで しょう。

哲学書を開いたときと同じ感覚になりますね。

簡単に行きましょう。

  1. 名簿を発行すると「名簿購入者」「号数」「名簿代金」「入金日」などを記録しておきたい。とします。
  2. 「名簿購入者」を「登録NO」とする…住所録の個人一人に割り当てられた固有のNOです。
  3. 「登録NO」このフィールドをキーにして、リレーションします。

    キー

  4. リレーションシップ編集の設定画面で「名簿」「住所録」テーブルの登録NOフィールドが=の物を追加します。

    編集

  5. それぞれのテーブルのチェックボックスの”作成””削除””ソート”を可能にします。
  6. 住所録に1レコードにデータを入力、名簿に2レコードのデータを入力しましょう。

    TOPページへ

住所録レイアウトに名簿テーブルの表示をさせる。

今回はポータルでの表示を利用します。

ポータル

  1. ポータルツールでレイアウト上に配置します。(左上から右下にドラッグ)

    ポータル

  2. 関連レコードを表示:名簿
  3. 各チェックボックスは確認しながら入れる。
  4. 書式の行数:6行
  5. 表として見やすく整形しましょう。

名簿のデータが表示されていることを確認して下さい。

これから考えることは、実体ではどのように始めるかです。

  1. 住所録データの入力(例えば300人分を入力したとします。)
  2. 名簿データにも300件欲しいですね。
  3. ポータルのフィールドに300件を1件ずつ、入力していく事はできますが、合理的ではありません。
  4. スクリプトを利用しましょう。
  5. 寄り道になりますが、住所録→名簿へ移動するボタンを作りましょう。
  6. また反対方向(名簿→住所録)も作りましょう。

TOPページへ

300件データ作成

スクリプトの作成

  1. スクリプトの管理→新規→スクリプト名:10件作成
  2. スクリプトにレイアウト切り替え[「名簿リスト」(名簿)]
  3. 新規レコード/検索条件を10回作成
  4. 10件作成スクリプトを利用する。
  5. スクリプトの管理→新規→スクリプト名:100件作成
  6. スクリプトにスクリプト実行→指定→10件作成を10回作成
  7. 次に100件作成を3回作成するスクリプトを作成する。
    300件作成できるか試しましょう。

300件 カラのレコードに登録NOを1〜300を自動で入力

スクリプトの作成

  1. 実体を考えるとこれまでの名簿にデータがある場合があります。
  2. よって、登録NOフィールド内にデータがあるものを排除する必要があります。
  3. これもスクリプトに書きます。
  4. スクリプトの管理→新規→スクリプト名:カラ検索
  5. 検索実行→移動→指定→新規→

    検索

  6. 名簿テーブルを選び、登録NOを選び、演算子の挿入をクリック、条件に=を入力
  7. 追加ボタンをクリック、上の処理欄に入力されます。

    検索

  8. OKをクリック、スクリプトが1行作成できました。
  9. 次に
  10. 登録NOに1〜300までの自動入力を作成します。
  11. イベントから「フィールド内容の全置換」→移動→ダイアログなしで実行をクリック。
  12. ターゲットフィールドの指定→名簿→登録NO→OK→指定

    全置換

  13. シリアル番号で置き換える:入力オプション
  14. 初期値:1
  15. 増分:1
  16. 今回は1〜300なので初期値は"1"ですが、もし次回の時は初期値"301"と応用ができます。

号数"50"を300件のレコードに入力するスクリプト

スクリプトの作成

  1. スクリプトの管理→新規→スクリプト名に”号数の入力”→
  2. レイアウトの切り替え[「名簿リスト」(名簿)]
  3. レコード/検索条件/ページへ移動[最初の]
  4. フィールドへ移動[名簿::号数]
  5. カスタムダイアログを表示[名簿::号数]
  6. フィールド内容の全置換[ダイアログなし;名簿::号数;現在の内容]

    スクリプト

  7. カスタムダイアログを表示で"号数"の入力を求められるようになります。
  8. 住所録のレコードにポータル表示で名簿データが表示されていることを確認しましょう。

TOPページへ

住所録データを入力してみる。

  1. ダミーデータを何件か作成をし、確認をします。
  2. スクリプトを書いてみるのも面白いですが。

「寄付金額」「寄付入金日」寄付金のテーブル作成

テーブルの作成

  1. データベースの管理→テーブル名:寄付金→フィールド作成
    フィールド名タイプオプション
    登録NO数字 
    寄付金額数字 
    寄付入金日日付 
  2. このフィールドを作成します。

    寄付テーブル

  3. リレーションシップを設定します。

    リレーション

住所録レイアウトにポータル表示

  1. その前に寄付金テーブルのレイアウトを整形しておきましょう。
  2. リスト表示レイアウトも作成してみましょう。
  3. ボタンでのレイアウト移動も作成しておきましょう。
  1. 住所録レイアウトのレイアウトモードにします。
  2. 下図のようにポータルを配置します。

    寄付ポータル

  3. フィールドの書式と配置などを設定します。
  4. 寄付金テーブルにデータを入力してポータルに表示されるのを確認。

此処までのファイル「AD.fp7」のダウンロード → 

残ったテーブルの作成

  1. 総会の出欠に関するテーブルの作成です。
  2. ここで総会について考えてみます。
  3. 毎年総会がある。→第何回というフィールドが必要になります。
  4. 個人の出欠を記録する。→登録NOも必要、これを照合キーにする。
  5. 出欠の記録欄→値の一覧フィールドの作成、出席・欠席。
  6. リレーションシップの設定をします。
  7. フォーム形式のレイアウトは自動でできます。画面の整頓を!
  8. リスト形式のレイアウトを作成、レイアウト変更のスクリプトを書いて、ボタンに設定。
  9. 住所録レイアウトにも総会フォームへ移動するボタンを
  10. 住所録レイアウトには総会フォームへ移動するボタンを
  11. 最後に住所録レイアウトにポータル表示させましょう。

    総会

  12. ポータル内のフィールドにデータを入力してみましょう。

スクリプトの練習を1つ、

スクリプト

  1. 上図のようにスクリプトをかきます。
  2. 名簿のポータルに登録NOを自動入力させるものです。
  3. 住所録のレイアウトにボタンを置き、スクリプトを指定します。

    ボタン

  4. どうですか思い通りになりましたか。

    TOPページへ

powered by Quick Homepage Maker 4.91
based on PukiWiki 1.4.7 License is GPL. QHM