過去の桐井戸端BBS (桐ver.8)
6667 結合できる表の数の限界とその機能 ちゃく 2000/06/30-01:04
結合表とは、複数の表から、必要な情報だけを集め、一つにまとめたものですよね。
では、いくつまでの表を結合できるものでしょうか?
6669 Re:結合表の限界 bonito 2000/06/30-03:58
記事番号6667へのコメント
ちゃくさん、こんにちは。(もうすぐ夜があける)

HELPの「桐の仕様」によれば
>結合可能な表ファイル数
>  最大 50 ファイル / 結合表
>  ※対象表が結合表のときは、その対象表の個数も含まれる。
>リレーションの設定個数
>  最大 100 個 / 結合表
>  ※表が複数あれば、結合条件を設定していなくとも、対象表 -1 個を消費。
>結合表のネスト
>  最大 20 レベル / 結合表
ということらしいですよ。(必要充分かと…)

ところで
>結合表とは、複数の表から、必要な情報だけを集め、一つにまとめたものですよ

う〜ん、A表を項目[イ]でグループ化した結合表"あ.viw"と同じくA表を項目[ロ]で
グループ化した結合表"か.viw"、"あ.viw" と "か.viw" を結合した"さ.viw"
ってのもなかなかいいんじゃないかと… (^^;
(集計値での絞り込みも出来る…)

ただ連結するだけなら今のところ「メイン&サブフォーム」の方が自由度は高いし
使いやすいかも… (^^;
(少なくともディレクトリィに束縛はされない…)
6673 Re:結合表の限界 ちゃく 2000/06/30-17:44
記事番号6669へのコメント
bonitoさんありがとうございます。
仕事で桐を勉強しなくてはいけないのですが、
まだ住所録程度しか自分で作れません。
頑張りますので、またなにかあったらよろしくお願いします。
それじゃ・・・・・

6678 結合表の元来の機能について 佐田 守弘 2000/07/01-23:31
記事番号6667へのコメント
■ 結合表の元来の機能について

>結合表とは、複数の表から、必要な情報だけを集め、一つにまとめたもので
>すよね。
について、多少補足させて頂きます。
少なくとも桐に関しては、上記の理解でもほとんど合っていると考えてよいと思います。
少なくとも、桐ver.5までの結合表の機能は、実質的にそうであったと言えるでしょう。
しかしながら、結合表の元来のものであるクエリーは、概念的にはちょっと目的が異なりますので、
参考までに述べさせて頂きます。

●クエリーとは
クエリーとは「問い合わせ」の意味です。
データベースに対してデータを問い合わせる操作を行うもの、それがクエリーです。
例えばある条件に合致するレコードを抽出する、抽出したレコードのデータを変更する、
新規にレコードを追加する、別のデータファイルからデータを取り込むといった操作は、
クエリーで行います。

おそらく、一般の桐のユーザーから見れば、何て面倒な事をするのだと思われるかも知れません(私もそう思います)。
桐であれば、上記の操作はそれぞれ、絞り込み(V5までは選択)、置換、表編集、併合の操作で行えます。

●データベースとクエリー
しかしながら、オーソドックスなデータベースでは、桐の表に相当するデータベースファイルを
ユーザーに直接触らせないのが原則です。
そして、データベースファイルに対して何らかの操作を行う時には、クエリーを通して、
それらの操作を行います。

●例えば銀行預金の場合
分かりやすい例で銀行預金を取り上げてみましょう。
預金管理も、メインフレーム上のデータベースソフトで作られてます。
そこには全預金者の預金のデータが書き込まれているはずですが、通常はそれは見えません。
我々がキャッシュディスペンサを操作して残高確認の操作をすると、
その預金者の最終残高だけが表示されます。
また通帳記帳をすると、その預金者についての未記帳データだけが選択されて、記帳されます。
この様に、特定ユーザに対して、必要データだけを見せたり、印刷するのが、クエリーの働きだと考えて下さい。
クエリーを通す事によって、必要範囲に限定してデータの表示や操作をさせているわけです。

●複数のデータベースを参照するのもクエリーの機能
クエリーには、複数のデータファイルに別れているデータを関連づけて組み合わせ、
1つのデータの様にして見せる機能もあります。
これが、結合(join)の機能です。
この機能によって、データベースファイルは、1まとまりのデータ単位毎に分けて持つ事ができます。
これが正規化です。
そして、正規化して複数のデータファイルに分けて持っているデータから必要なレコードと
そのデータ項目を取り出して組み合わせ、あたかもそれが1つのデータファイルであるかの様に扱います。
そしてそれを編集すれば、編集結果は元のデータに反映できます。

●桐の表の位置付け
オーソドックスなデータベースでは、クエリーを使わないとデータ操作ができないのですが、
桐の場合には、結合表を使わなくても、そこそこの処理ができてしまうのが特徴の1つでもあります。
少なくとも、V5までの実表更新ができない結合表の時代には、表を単に結合するだけの機能しかなかったので、
かなり用途が限られていました。
現在の結合表は、選択クエリーの機能と実表更新の機能はありますが、それ以外のクエリーの機能はありません。
それらは、置換、併合などの桐独自の機能で行いますし、それゆえに使いやすいのも特徴の1つです。

そう言った意味でいえば、桐の結合表は、他のデータベースと違って、不可欠の機能ではありません。
「複数の表から、必要な情報だけを集め、一つにまとめる機能」といった所なのかも知れません。

ですから、結合表の機能を使わなくても、それなりに桐を利用できます。
逆に、結合表をもっと便利に使うと、今までの桐とはちょっと違った使い方ができるかも知れません。
例えば、ある条件に合致するレコードを絞り込む時、通常は絞り込みを使いますが、
条件にパラメータを記述した結合表を使っても行えます。
例えば住所録であれば、[住所]の条件に「=&住所」と書いておけば、&住所に絞り込みたい住所を入力して
結合表を開けば、その条件に合致するレコードが絞り込まれた状態になります。
また[年賀状]の項目に「=1」の様な条件式を書いておけば、
年賀状差し出し先だけを絞り込むといった使い方もできます。

佐田守弘(KS-00119)

6680 Re:結合表の元来の機能について MIT 2000/07/02-18:30
記事番号6678へのコメント
本題から外れますが
Win桐になってから私は「結合表」で表を結合する事よりも
1つの表で本来「計算項目」として定義していたものを止めて
計算項目を結合表に定義して実現する事が多くなりました。
それは
*計算項目を持たない分,元の表サイズが小さくなる
*結合表を開く毎に計算を実行してくれる
*結合表で実行できるものはその方が高速な場合がある
などの理由からです。

例えば元表の項目に[生年月日]があり,結合表で所属対象表に計算項目[年齢]を追加して,
項目計算式として
#年齢([生年月日],#年月日)
と定義しその項目に
並べ替え=昇順
絞込み条件[年齢]>=20
と定義すると,その結合表を開くだけで20歳以上のデータ
を年齢順に表示してくれます。

やっている事はSQL系DB言うところの「選択クエリ」なのですが
結合表はアイデア次第で望む結果をシンプルに得ることが出来ると
思います。MIT

戻る