過去の桐井戸端BBS (桐ver.8)
9209 主キーの設定について Yada 2001/01/05-22:14
参照整合性の設定するために、各テーブルに主キーを作成する場合、通常のデータベースであれば、
複数項目使って主キーを構成できると思うのですが、桐V8sp6では、一つの項目しか選択することができません。
みなさんは複数項目を主キーとするテーブルを使用したい場合、どの様にされていますか?

ちなみに、今回使用しているマスタテーブルの一つは、全銀協が発行している
金融機関コードCDを基にしたもので、主キーを構成する項目は、
「銀行番号:4桁、支店番号:3桁、枝番:1桁」で約42000レコードとなっています。
すべて結合して8桁の主キーとすれば問題なく参照整合性の設定が可能となりますが、
運用上、別々の項目として定義したいためこのような質問となりました。

また、桐でネットワーク上の複数テーブルを共有する場合、「表引き」を使用せず、
参照整合性を設定した上で「結合表」を利用しなければ、十分機能しないと考えていますが、
この考え方が間違っているのであれば、どうかお教えください。
9214 Re:主キーの設定について 宮城 2001/01/06-00:10
記事番号9209へのコメント
Yadaさん、こんばんは。

>「銀行番号:4桁、支店番号:3桁、枝番:1桁」で約42000レコード
>となっています。すべて結合して8桁の主キーとすれば問題なく参照整合性の
>設定が可能となりますが、運用上、別々の項目として定義したいためこのよう
>な質問となりました。

私なら、別々の項目として定義した後、もう1項目追加し、この項目計算式に3項目の連結を定義し
これを主キーとするとすると思いますが、計算項目は主キーにできない制約がありましたっけ?

主キーとは当該レコードをユニークに特定するためのキーですよね。
その意味ではどんな DBソフトでも1項目のはずです。

それから、枝番1桁で足るものか不安です。
アルファベットまで動員するんでしょうけど。

最後の部分は Win桐で共有させた経験がないのでなんとも。
ただ、レコード単位排他の制約の厳しさは予想しております。
9235 Re:主キーの設定について Yada 2001/01/07-21:56
記事番号9214へのコメント
宮城さん、はじめまして
レスどうもありがとうございます。

>3項目の連結を定義しこれを主キーとするとすると思いますが、計算項目は主
>キーにできない制約がありましたっけ?

残念ながら、[計算項目]は、主キーにできません。
また、複数項目を使った主キーは他のDBでは実際使用していますが、桐ではできないようです。

>それから、枝番1桁で足るものか不安です。・・・・

この、データは全国銀行協会が作成しているもので、[枝番]と書いたものは、
いわゆる母店と出張所を区別するための[並びコード]と称されるもので、
最大でも4〜5まで位しかありません。(ひょっとして変更されるかもしれませんが?)

以前は、DOS上で桐V5を使用していましたが、WIN版の対応の遅れなどから
最近は、桐を使用することが少なくなっていました。
桐V7の内容から、おそらくV10位まで、あまり使えないかなと思っていましたが、
いつの間にかV8SP6となり、最近あれこれいじっています。
桐には、小規模なシステム構築の簡便さや、豊富な印刷機能など、捨てがたい魅力を感じています。
もう少し、自分なりに検討してみます。

9239 Re:主キーの設定について HERB 2001/01/08-16:04
記事番号9235へのコメント
Yadaさんへ、HERBです。

>残念ながら、[計算項目]は、主キーにできません。また、複数項目を使った主キー
>は他のDBでは実際使用していますが、桐ではできないようです。

以前私も計算項目を主キーに設定してできないことを知りました、
以下の過去記事は今回投稿には的はずれかもしれませんが、主キーについてのコメントがあります、
参考にしてみて下さい。

http://www.fuku3.com/~habata/kbbs/kakov8/04286.htm

http://www.fuku3.com/~habata/kbbs/kakov8/07330b.htm

http://www.fuku3.com/~habata/kbbs/kakov8/07663.htm

>この、データは全国銀行協会が作成しているもので、[枝番]と書いたものは、
>いわゆる母店と出張所を区別するための[並びコード]と称されるもので、最大でも
>4〜5まで位しかありません。(ひょっとして変更されるかもしれませんが?)

以下、的はずれなコメントでしたらお許し下さい。

4万2千件のデータと書いてありましたが、項目を追加してカウンタ型項目として追加することはできませんか?
元表から表の枠組みで書出、再定義で適当な項目名でカウンタ型項目を追加し、元表から読み込むます。
カウンタ型項目は件数分連番を降ってくれます、その項目を主キーとして使うことはできませんか、
どのような運用で使うのかが解らないんですが、表引き等はカウンタ型の連番でも可能かと、問題はメンテナンスです、
差分、訂正等にどう対処するかです、最新版のデータを単純に連番を降った場合過去データの整合性がとれなくなります、
差分、訂正を併合処理で行えるかどうかですね。

このあたりは私にはコメントできません、どなたかフォロー願います。

>以前は、DOS上で桐V5を使用していましたが、WIN版の対応の遅れなどから
>最近は、桐を使用することが少なくなっていました。桐V7の内容から、おそらく
>V10位まで、あまり使えないかなと思っていましたが、いつの間にかV8SP6
>となり、最近あれこれいじっています。

最近DOS桐、WIN桐との比較、移行に関する記事が多いです、
私自身もDOS桐の使いやすさは知っております、
ただ、昨今ハードの進化でやむなくWIN桐に移行せざる得ない状況が多数発生しているように思います、
WIN桐が出始めの頃桐を使っていなかった時期があり、新たに桐での業務が発生し、
わりとWIN版への移行は抵抗なくできました。

>桐には、小規模なシステム構築の簡便さや、豊富な印刷機能など、捨てがたい魅力
>を感じています。もう少し、自分なりに検討してみます。

レポートとフォームが別々に作成するようになりましたが、桐のレポート機能は魅力の一つですね。

とりとめないコメント、お許し下さい。

9242 Re:主キーの設定について 佐田 守弘 2001/01/08-17:58
記事番号9209へのコメント
Yadaさん
主キーに関して私の考え方を述べさせて頂きます。
主キーとは、その表のレコードを唯一に指定できる項目で、基本的には1つの表あたり、1主キーで構わないと思うのですが。

>ちなみに、今回使用しているマスタテーブルの一つは、全銀協が発行している
>金融機関コードCDを基にしたもので、主キーを構成する項目は、
>「銀行番号:4桁、支店番号:3桁、枝番:1桁」で約42000レコード

の例であれば、銀行番号、支店番号、枝番のいずれも単独では主キーになれない項目ばかりです。
これをつなげて1レコードとしたものが主キーになるはずです。

確かに他のDBでは、Accessに見る様に、複数キーの組み合わせでのインデックス設定が可能になっています。
桐にはこの機能はありません。ありませんが、不都合は起きないはずです。

●桐で扱う場合
桐で対処するとしたら、銀行番号-支店番号-枝番の8桁をつなげた値を1項目に持って下さい。
そしてこの項目を主キーとします。
間にハイフォンを入れるかどうかは自由ですが、入れずに数値型ではなく文字列型として持つ方が良いと思います。
そして、この項目を仮に[銀行ID]と呼ぶ事にします。

次に、銀行番号、支店番号、枝番ですが、これらは外部キーとして使う事になるのかと思います。
そしてこれらの項目は計算式で、求めればよいでしょう。
つまり、
[銀行番号] #部分列([銀行ID],1,4)
などです。

佐田守弘(KS-00119)
9243 Re:主キーの設定について yasuyukis 2001/01/08-18:28
記事番号9209へのコメント
確かに私も不便を感じています。
オラクルなどでも複数項目を主キーに設定できるのは常識ですからね。

桐においては、主キーはあまり重きを置いていないようです。

ということは、結合表自体に、一般的なRDBにおけるビューのような機能を完全に期待するのは無理がありますから、
結合表ではない方法で、目的を出来るだけ実現する方が良いと考えております。

ネットワーク上の負荷を考えるのであれば、編集初期値式に表引きを設定するとかのほうほうでは切り抜けられないでしょうか。

9255 Re:主キーの設定について Yada 2001/01/10-00:44
記事番号9239へのコメント
HERBさん、はじめまして。コメントどうもありがとうございます。
私も、過去ログについては、検索してみましたが、あまりこのような話が見つかりませんでした。

>4万2千件のデータと書いてありましたが、項目を追加してカウンタ型項目として追加す
>ることはできませんか?・・・・・・・
>データを単純に連番を降った場合過去データの整合性がとれなくなります、差分、訂正を
>併合処理で行えるかどうかですね。

最近は、金融業界の再編が進んでいるせいか、全国のあちこちで銀行・支店の統廃合が、行われており、
データは毎月のように変わっています。
我が社でも、月契約で、銀行協会からデータCDを購入して、これをマスタに使用しています。
そのため、このマスタを参照するファイルが増えてくると、カウンタ型の連番を使用することは事実上不可能になると思います。
9256 Re:主キーの設定について Yada 2001/01/10-01:24
記事番号9242へのコメント
佐田守弘さん、コメントどうもありがとうございます。

>桐で対処するとしたら、銀行番号-支店番号-枝番の8桁をつなげた値を1項目に
>持って下さい。そしてこの項目を主キーとします。

項目をすべて結合した場合、参照整合性の設定は可能ですね。

>次に、銀行番号、支店番号、枝番ですが、これらは外部キーとして使う事になる
>のかと思います。そしてこれらの項目は計算式で、求めればよいでしょう。

今回は、テーブルのサイズを小さくするために、なるべく計算項目を設定しない方向で検討していましたが、どうも難しいようですね。
(もっとも、この場合は、テーブル内に計算項目を持つ必要は特にありませんが。)

主キーが複数列で構成できないということは、当然、子表側でも複数列の外部キーを持つ事はできず
(外部キーに計算項目を指定できれば別ですが)このあたりは、是非、次回のバージョンアップに期待をしたいところです。

9257 Re:主キーの設定について Yada 2001/01/10-01:27
記事番号9243へのコメント
yasuyukis さん、はじめまして。コメントどうもありがとうございます。

>桐においては、主キーはあまり重きを置いていないようです。

どうもそのようですね。昨年出席した、桐のセミナーにおいても、管理工学研究所の方が、「デスクトップツールを目指します」
の様なことを言われていたのを、つい思い出してしまいました。

>編集初期値式に表引きを設定するとかのほうほうでは・・・

ネットワーク上の共有において、「表引き」と「結合表」を比較したところ「結合表」のほうが、
パフォーマンスがよかった様なので、こちらで検討しておりました。

戻る