<基本設計方法(テーブル構造について)>

ファイルメーカーProは誰でも簡単に顧客管理や販売管理などのデータベースを作成できますが、最初に行うテーブルの設計やフィールド定義に問題があった場合、所望の動作をしなかったり、データの集計を取ることが困難になってしまう場合もあります。また同じ内容のシステムであっても会社ごとに仕様や使い方が違う場合に設計も変わってきますので、思うようなシステムを開発するための設計はある程度経験が必要となってきます。

ではどのように設計を考えていくかを2つのケースで簡単にご説明したいと思います。

 

 ■CASE 1. データ構造はできるだけシンプルに

テーブルの設計やフィールド定義はできるだけシンプルになるように設計する必要があります。販売管理のシステムで例えますと、必要な帳票が見積書、納品書、請求書、領収書で、1つの受注に対して1つの見積書を発行し、納品書を1枚発行、請求書も都度請求で1枚発行し、入金時に領収書を1枚発行という、「受注入力:見積書:納品書:請求書:領収書」 = 「1:1:1:1:1」の関係であるならば極端な例ではありますが、以下のように受注データテーブルが1つで設計することが可能です。見積書請求書納品書に表示する商品の受注明細は1つの受注に対して商品を複数入力する「1:多」の関係ですので、別のテーブルで作成してポータルで表示、印刷します。その他に顧客と商品マスタのテーブルを作成します。



テーブルは上記の4つとなります。








上記のように4つテーブルにそれぞれフィールドを定義します。
受注番号は1からの連番となりますので、数字タイプで、
商品番号、顧客番号は「0023」などの0付の数字ですのでテキストタイプ、
郵便番号、電話番号はハイフンや先頭が0の数字なのでテキストタイプとなります。

 


リレーションは上記のようになります。


レイアウトは上記の9つとなります。受注入力、見積書/納品書/請求書/領収書印刷の
レイアウトは受注データのテーブルから必要なフィールドのみを配置して作成します。

上記設計はわかりやすいように単純な構成となっています。本来のシステムの場合は担当者や消費税などの計算式が必要となるでしょう。

リレーションがわからないまま、テーブルを受注、見積、納品、請求、入金、領収と作成して、その都度印刷したい帳票を開いて顧客名や顧客住所、電話番号を入力する設計をされている方も結構いらっしゃいます。受注で顧客名などを入力し、見積書、納品書などで再度同じ情報を入力するので手間がかかるばかりでなく、同じ顧客でも入力者によって1文字でも入力したデータ(文字列)が違う場合、データの関連性がなくなり、管理が困難になってしまいます。テーブルを別にする場合でもリレーションやルックアップ、値一覧などを使って、誰が入力しても同じデータとなるような設計にする必要があります。

また上記内容では全ての帳票が「1:1」の関係でご説明致しましたが、見積書が1つの受注に対して複数必要な場合など「1:多」の関係では見積のテーブルを別に作成する必要があります。また請求が月締め請求の場合は同じく「1:多」の関係になりますので請求のテーブルを別途作成することになります。

テーブルを分割するか否かの判断は以下の条件などで考慮が必要です。
 ○データが「1:1」の関係でないのでテーブルを分割
 ○テーブルのフィールド数が多いのでグループごとに分割
 ○画像データなどをリンクではなく直接データを取込む場合にバックアップなどを考慮して分割
   (この場合は別テーブルというよりは別ファイルにしたほうがよいでしょう)
などその他使う方がどのような機能や帳票が必要なのか各種条件を考慮して設計が必要です。

 

 


 ■CASE 2. 集計などを考慮してテーブルを分割

テーブルの設計やフィールド定義はできるだけシンプルになるように設計する必要がありますと記載しましたが、以下の設計もよく見かけます。「1:多」の関係にある設計を1つテーブル内(生徒マスタテーブル内)に全て作成してしまったため、データの集計や検索が困難になるケースです。テスト実施がある度にフィールドを追加定義して、データの入力を行っていました。入力画面のみを見た場合、一見問題ないように見えるのですがデータ管理上はかなり問題のある設計となってしまいます。



テスト実施の都度、フィールド定義を行って、データを入力。
この場合、入力の度にフィールド定義を行う必要があり、さらに
テストの検索が難しくなり、テスト結果の集計を取ることが困難となります。


上記のようにテーブルを分割して生徒番号でリレーションを設定することで
成績データの検索が容易になり、テスト結果の集計を取ることが容易になります。



さらに上記のようにテーブルを分割してリレーションを設定することで、
テストの実施の履歴も取ることが可能となります。

 

CASE.1はテーブルの設計をシンプルにまとめた例、CASE.2はテーブルの分割が必要となる例でご説明いたしました。複雑なケースの場合、経験が必要となりますが、身近なものをファイルメーカーProでいろいろなデータベースに置き換えてみて練習するとよいでしょう。

また設計に不安がある場合は正規運用前に経験のある方に見ていただくことをお勧め致します。設計によっては再設計したデータベースにすでに入力されたデータの移行が難しくなってしまう場合もあります。 弊社でも既にお客様にて開発されているシステムの開発修正をご依頼いただいたもので、正規運用前にご依頼いただいていれば・・・ というケースもよくあります。

Copyright FINETECH All rights reserved.