#author("2020-10-07T08:28:10+09:00","","")
//
&ref(./1024px-Python_logo_and_wordmark.svg.png,25%);
#author("2026-04-20T07:13:15+09:00","","")
*結合表の概要 [#jc152e37]
データベースを使用した業務では、いつも決まった条件でデータを取り出したり、他の表の関連項目を一緒に表示したりすることがよくあります。たとえば販売管理では、今日の売り上げだけを表示したり、所属する支店の売り上げだけを表示したりします。また、レポートを作成するときは、商品台帳の在庫数や仕入れ価格を一緒に印刷したり、日付別や担当者別に集計して印刷したりします。
このような作業を頻繁に行なう場合は、表の代わりに結合表を使用した方が効率的です。結合表を使用すると、表から必要なデータだけを取り出して、ほかの表の項目を一緒に表示できます。また、結合表を開くだけで、グループ別の集計結果を求めることもできます。

ここでは、pythonで書かれたプログラムを公開しております。記述に関する技術的な部分は省略します。
*** 結合表 [#e118249f]
結合表は、表に保存されているデータの中から、必要なデータを取り出すときに使用します。複数の表をひとつの表にまとめることもできます。
結合表の定義では、つぎの項目を設定します。

**概要 [#l9f8476f]
Python(パイソン)はインタープリタ型の高水準汎用プログラミング言語である。
グイド・ヴァン・ロッサムにより創り出され、1991年に最初にリリースされたPythonの設計哲学は、
その顕著なホワイトスペースの使用によってコードの可読性が重視されている。
その言語構成とオブジェクト指向のアプローチは、プログラマが小規模なプロジェクトから大規模なプロジェクトまで、
明確で論理的なコードを書くのを支援することを目的としている。
データを取り出す表とその項目
絞り込み条件
並べ替え条件
グループ別の集計条件
これらの項目を設定して結合表を開くと、複数の表に保存されているデータを、ひとつの表で見ることができます。 結合表は、普通の表と同じように操作できます。結合表に入力したデータは、定義時に設定した内容に応じて、結合元の表に書き戻すか、新しい表として保存するかのどちらかになります。

Pythonは動的に型付けされていて、ガベージコレクションされている。
構造化(特に手続き型)、オブジェクト指向、
関数型プログラミングを含む複数のプログラミングパラダイムをサポートしている。
Pythonは、その包括的な標準ライブラリのため、しばしば「バッテリーを含む」言語と表現される。
*** 結合対象表と実表 [#y603b744]
結合する表のことを結合対象表または対象表といいます。結合表の定義では、少なくともひとつの対象表を指定します。
対象表にできるのは、結合表と同じ場所に保存されている表または結合表です。別の場所に保存されている表または結合表を結合することはできません。対象表には、同じ表同士、または同じ結合表同士を複数、指定することもできます。
結合表は、対象表と同じ場所に保存します。
桐では、対象表を結合表から更新できるかどうかを区別するために、結合元の表を実表といいます。

Pythonは1980年代後半にABC言語の後継として考案された。
2000年にリリースされたPython 2.0では、
リスト内包表記や参照カウントによるガベージコレクションシステムなどの機能が導入された。

2008年にリリースされたPython 3.0は、完全な下位互換性を持たない言語の大規模な改訂であり、
Python 2のコードの多くはPython 3では変更なしには動作しない。
*** 結合条件と結合項目 [#d7ee441f]
対象表にいくつかの表を指定すると、それらの表が横につながります。通常、表を横につなげる場合は、同じ値を持つレコード同士を結んで1件のレコードにします。
ふたつの表をつなげるための条件のことを結合条件といいます。結合条件には、同じ値を持つ項目を指定します。表の結合条件として使用する項目のことを結合項目といいます。

Python 2言語は2020年に正式に廃止され(当初は2015年予定)、
"Python 2.7.18はPython 2.7の最後のリリースであり、したがってPython 2の最後のリリースである とされている。
これ以上のセキュリティパッチやその他の改善はリリースされない。
Python 2が終了したことで、サポートされるのはPython 3.5.x以降のみとなる。

Pythonのインタプリタは多くのOSに対応している。
プログラマーのグローバルコミュニティは、
無料のオープンソースリファレンス実装であるCPythonを開発および保守している。
非営利団体であるPythonソフトウェア財団は、PythonとCPythonの開発のためのリソースを管理・指導している。
 主キー
いくつかの表を結合するとき、一方の表のレコードと、もう一方の表の1件のレコードが対応するように関係づけておくと、処理に費やす時間が短くて済みます。
表の中のレコードを一意に特定する項目のことを主キー(PRIMARY KEY)といいます。たとえば一人の社員を特定するために「Syain.tbx」で[No]という項目を設けているとき、その項目値のことを「Syain.tbx」の主キーといいます。
ある項目の値が主キーであることを桐に伝えるには、その項目に主キーを設定します。

* [#gbc5d57f]
**豊富な標準ライブラリと外部ライブラリ [#n8c2727c]
 「1行で多くの処理を記述可能」「記述性が高い」というPythonの特徴を支えるのは、今見たようなPythonが標準で持つ機能だけではない。Pythonの言語仕様には含まれていないが、Pythonに標準で付属している「標準ライブラリ」というものがある。これはPythonをインストールするだけで使えるようになるもので、Python公式サイトの「Python 標準ライブラリ」ページを見るとどれほど多くのものが「標準ライブラリ」としてPythonに添付されているかが分かる。そのうちの幾つかのカテゴリーを挙げるだけでも以下のようなものがある(これらのカテゴリーの下に、幾つものライブラリが含まれている)。

数学関連
ファイル操作およびさまざまなフォーマットのファイルの操作
データの永続化
データ圧縮/アーカイブ
並列処理
ネットワーク処理
インターネット関連
GUI(グラフィカルユーザーインタフェース)
 つまり、Pythonをインストールするだけでも、標準ライブラリの機能を使って「自分では複雑なコードを書く必要なし」に「高度な処理を短いコード」で書けるというわけだ。
 外部キー
主キーと同じ値を持つ項目のことを、外部キー(FOREIGN KEY)といいます。たとえば[No]の値を「Nipou.tbx」の[担当者No]でも使用するとき、[担当者No]の値のことを[No]の外部キーといいます。また、[担当者No]の主キーは、[No]であるともいいます。
ある項目の値が外部キーであることを桐に伝えるには、外部キーを登録する項目で参照整合性を定義します。参照整合性の定義では、外部キーがどの表の主キーを参照するかを指定します。

+
++
+++
***公開フォルダ [#h2c87d1d]
公開フォルダにあるプログラム
[[https://drive.google.com/drive/folders/1ighSgdK74MYmwO7IEBfJ3iHeoUIh9btJ?usp=sharing]]
-
--
---
//***その他 [#ae842926]

//
*** 参照整合性 [#f03b93b2]
参照整合性は、主キーと外部キーの関係を定義します。関係づけたふたつの項目は、おたがいの整合性を保つために、つぎのルールに従うことになります。

外部キーの追加と訂正は、主キー項目に登録されている値を登録します。
外部キーの削除は、無条件に行なわれます。
主キーの訂正と削除を行なうときの処理として、つぎの中からいずれかひとつを選択します。
処理	説明
RESTRICT	外部キーがある限り、主キーを訂正禁止または削除禁止にします。
CASCADE	主キーを訂正または削除したとき、関連する外部キーも波及的に更新または削除されるようにします。
SET NULL	主キーを削除したとき、関連する外部キーをすべて未定義にします。

通常、外部キーは、別の表の主キーと関係づけるのが一般的です。外部キーを別の表にある主キーと関係づけると、ふたつの表の関係も定義されます。 参照整合性で関係づけが定義された表は、互いの整合性を保つために、どちらかの表を開くと、もう一方の表も内部的に開かれるようになります。

結合表を使用して実表を更新する場合も、参照整合性のルールに従って、操作できる内容が制限されます。
参照整合性の定義で[主キーを更新するとき]の処理として、[参照項目も削除する]または[参照項目を未定義にする]を選択した場合、実表を更新する結合表のレコードを削除すると、削除した主キーと同じ値を持つ、すべての外部キーが削除されます。
 1対多結合と1対1結合
主キー項目と外部キー項目を結合条件に指定した場合、桐は主キー側の1件のレコードが外部キー側の複数のレコードと関係づけられていると判断します。これを1対多結合といいます。
結合条件に指定した外部キー項目が、その表の主キー項目でもあるとき、桐は主キー側の1件のレコードが外部キー側の1件のレコードと関係づけられていると判断します。これを1対1結合といいます。

 実表の更新
結合表を使用して実表を更新できるかどうかは、対象表に指定する表と、結合表の定義内容によって決まります。

ひとつの実表だけの結合表は、もとの表を更新できます。
ふたつ以上の表を指定している結合表は、主キーと外部キーを結合条件にした場合に限り、実表を更新できます。
これらの条件を満たしている場合でも、グループ化を行なう結合表と、ファイル属性でつぎのいずれかの項目が指定されている結合表では、実表を更新できません。

[単一化]=ON
[実表の更新]=OFF
[編集許可]=OFF
 内部結合と外部結合
結合条件を指定すると、両方の表に同じ値を持つレコードだけが取り出されます。これを内部結合(INNER JOIN)といいます。これに対して、一方の表にしかないレコードも取り出すことを、外部結合(OUTER JOIN)といいます。

外部結合を行なう場合は、一方の表の全レコードを取り出すか、両方の表の全レコードを取り出すかを指定します(LEFT JOIN、RIGHT JOIN、FULL JOIN)。
外部結合を行なうと、対応レコードがない項目の値が未定義になります。

 属性の継承
対象表として指定した表の属性は、基本的に結合表を編集するときにも継承されます。つぎに、結合表に継承される属性とされない属性、結合表を定義するときに注意すべき点についてまとめます。

項目の表示条件は、対象表で最後に使用した表示条件を初期値にします。

表に定義されている項目属性のうち、編集と入力、制約、値集合は、そのまま継承されます。

ふりがな機能を使用するには、被ふりがな項目とふりがな項目の両方を表示項目に加えます。
たとえば[よみ]が[氏名]のふりがな項目であるとき、[よみ]と[氏名]の両方を結合表の表示項目に加えます。[氏名]を加えても、[よみ]がなければ、ふりがな機能は使用できません。

表引きを使用するには、その表引き条件で指定した比較項目と、表引き条件を設定した項目の両方を、表示項目に加えます。
たとえば、表引き条件を設定した[商品名]では、[品番]の値から表引きするとします。この表引き条件を使用するには、[商品名]と[品番]の両方を表示項目に加えます。[商品名]を加えても、[品番]がなければ表引き機能は使用できません。

計算項目の未定義項目値処理は、結合表のファイル属性で指定した[未定義項目値処理]が使用されます。ただし、対象表側の計算項目は、その表のファイル属性で指定した値がそのまま使用されます。
たとえば、ふたつの表の一方が[ゼロ]でもう一方の表が[未定義]の場合、ゼロとして扱われる項目と未定義として扱われる項目の両方があることになります。
異なる[未定義項目値処理]が設定されている対象表を使用すると、表と結合表の計算結果が異なることがあります。対象表の[未定義項目値処理]は、できるだけ同じにするよう心がけてください。

強制改行文字は、結合表のファイル属性で指定した文字が使用されます。表と結合表の強制改行文字は、同じ文字にしてください。

対象表のファイル属性で指定した[編集許可]は、結合表の編集時にも継承されます。

結合表の項目属性で指定した[更新禁止]は継承されません。項目の[更新禁止]は、結合表ごとに指定してください。

利用者コードが設定されている対象表を結合する場合、結合表を開く前に、現在の利用者コードが対象表の更新権限または参照権限を持っているかどうかがチェックされます。現在の利用者コードが、対象表の更新権限または参照権限をもっていない場合は、開くことができません。


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS