リレーションシップの設定 LibreOffice Base
1.リレーションシップ
テーブル間の共通フィールドを 関連付けることを
「リレーションシップを設定する」という
「プライマリキー」と「外部キー」
2つのテーブル間に リレーションシップを設定するには2つのテーブルに 共通のフィールド が 必要です
共通のフィールドのうち 「プライマリキー」側のフィールドに対してもう一方のフィールドは 「外部キー」 と言うそうです
主キー を含む テーブルを 「主テーブル」
外部キーを含むテーブルを 「関連テーブル」 または 「リレーションテーブル」という
参照整合性
リレーションシップが設定されたテーブル間で矛盾のないデータ管理をするための規則を 「参照整合性」 という
例えば
担当者マスター側に存在しない 「担当者CD」 を得意先マスター側に 入力してしまうような データの矛盾 を 制御する
2.リレーションシップの設定
商品マスターテーブル
担当者マスターテーブル
得意先マスターテーブル
売上マスターテーブル
この4つのテーブル間に リレーションシップ を 設定する
参考 : 売上管理f.odb
を クリック 一度 ダウンロード保存
1.保存した[売上管理f.odb]を 開く
開いた時 [データベース]ペインでは 「フォーム」が選択されている状態
2.[データベース]ペインで 「クエリー」を選択

3.[タスク]ペインで 「デザイン表示でクエリーを作成」をクリック

4.[ Query Design ] (クエリーデザイン)が表示される

[テーブルまたはクエリーの追加]画面で 「商品マスターテーブル」を選択
[追加]をクリック

5.[ Query Design ] (クエリーデザイン)に 「商品マスターテーブル」が 追加される

6.「担当者マスターテーブル」・「得意先マスターテーブル」・「売上データテーブル」をそれぞれ選択 それぞれ[追加]クリック [Query Design] に すべて追加・表示する [テーブルまたはクエリーの追加]画面は 閉じる

7.リレーションシップしやすいように 配置を変更したり
中の項目がすべて見えるように サイズを大きくしたりする

8.「担当者マスターテーブル」の「担当者CD」フィールドを ドラッグし「得意先マスターテーブル」の「担当者CD」フィールドの上に ドロップする

9.「担当者マスターテーブル」の「担当者CD」フィールドから「得意先マスターテーブル」の「担当者CD」フィールドへ 関連付けされたことを示す 接続線 が表示される

10.もう1つのリレーションの作成方法
[挿入]→[新しいリレーション]クリック

11.[結合属性]画面が表示される

12.たとえば
[含まれるテーブル]欄
「商品マスターテーブル」と「売上マスターテーブル」を選択
[オプション]欄
[内部結合]
[含まれるフィールド]欄
「商品マスターテーブル」下の欄で「▼」をクリック
「商品CD」を選択
「売上マスターテーブル」下の欄で「▼」をクリック
「商品CD」を選択
[OK] クリック

13.関連付けされたことを示す 接続線 が表示される

14.最後に 「得意先マスターテーブル」と「売上マスターテーブル」の間にも リレーションを設定する
好みの方法で 行ってください

15.これで 4つのテーブル間に リレーションシップが設定できた
これで Access のように リレーションシップだけ保存しようとしたが
分らなかった il||li _| ̄|○il||li
そこで クエリー として 保存する
そのため 画面の下半分へ フィールドを追加する
作成するのは 「売上データクエリ」(売上Dクエリーとする)
項目は
NO
売上日
得意先CD
得意先名
担当者CD
担当者名
商品CD
商品名
単価
数量
金額 (単価×数量)
追加の方法は 上のテーブルにあるフィールドを ダブルクリックする
最後の「金額」は 上のテーブルには無いので 直接入力する
1.フィールド欄に 単価*数量 ( * は 半角 )と入力

2.[Enter] を押す
"単価"*"数量" となる

3.エイリアス欄に 金額 と入力する

これで 「売上Dクエリー」が 出来たので 保存する
クリック

[名前を付けて保存]画面 「売上Dクエリー」と入力

確認してみる
「売上Dクエリー」を ダブルクリック

Table Data View(テーブルデータビュー)が表示される

並び順が 担当者CDになっている&単価と金額を 通貨表示にしたい
通貨表示は 以前行ったので簡単に
[単価]を右クリック [列の書式]選択
[フィールドの書式設定]で 分類「通貨」[OK] クリック
[金額]も同様
並び替えは [NO]をクリック(選択)
ツールバーの 「昇順に並び替え」
を クリック

結果

参考 : 売上管理g.odb
LibreOffice Base についての記事 一覧
※ Base を 使う場合は LibreOffice 3.3.3 の方が良い 3.4.1・3.4.2 は 不具合がある
B1・B2・B3・B4・B5・B6・B7・B8・B9・B10
B11・B12・B13・B14・B15・B16・B17・B18・B19・B20
B21・B22・B23・B24・B25・B26・B27・B28・B29・B30
B31・B32・B33・B34・B35・B36・B37・B38・B39・B40・B41
テーブル間の共通フィールドを 関連付けることを
「プライマリキー」と「外部キー」
2つのテーブル間に リレーションシップを設定するには
共通のフィールドのうち 「プライマリキー」側のフィールドに対して
主キー を含む テーブルを 「主テーブル」
外部キーを含むテーブルを 「関連テーブル」 または 「リレーションテーブル」という
参照整合性
リレーションシップが設定されたテーブル間で
例えば
担当者マスター側に存在しない 「担当者CD」 を
2.リレーションシップの設定
この4つのテーブル間に リレーションシップ を 設定する
1.保存した[売上管理f.odb]を 開く
開いた時 [データベース]ペインでは 「フォーム」が選択されている状態
2.[データベース]ペインで 「クエリー」を選択
3.[タスク]ペインで 「デザイン表示でクエリーを作成」をクリック
4.[ Query Design ] (クエリーデザイン)が表示される
[テーブルまたはクエリーの追加]画面で 「商品マスターテーブル」を選択
[追加]をクリック
5.[ Query Design ] (クエリーデザイン)に 「商品マスターテーブル」が 追加される
6.「担当者マスターテーブル」・「得意先マスターテーブル」・「売上データテーブル」を
7.リレーションシップしやすいように 配置を変更したり
中の項目がすべて見えるように サイズを大きくしたりする
8.「担当者マスターテーブル」の「担当者CD」フィールドを ドラッグし
9.「担当者マスターテーブル」の「担当者CD」フィールドから
10.もう1つのリレーションの作成方法
[挿入]→[新しいリレーション]クリック
11.[結合属性]画面が表示される
12.たとえば
[含まれるテーブル]欄
「商品マスターテーブル」と「売上マスターテーブル」を選択
[オプション]欄
[内部結合]
[含まれるフィールド]欄
「商品マスターテーブル」下の欄で「▼」をクリック
「商品CD」を選択
「売上マスターテーブル」下の欄で「▼」をクリック
「商品CD」を選択
[OK] クリック
13.関連付けされたことを示す 接続線 が表示される
14.最後に 「得意先マスターテーブル」と「売上マスターテーブル」の間にも リレーションを設定する
好みの方法で 行ってください
15.これで 4つのテーブル間に リレーションシップが設定できた
分らなかった il||li _| ̄|○il||li
そこで クエリー として 保存する
そのため 画面の下半分へ フィールドを追加する
作成するのは 「売上データクエリ」(売上Dクエリーとする)
項目は
追加の方法は 上のテーブルにあるフィールドを ダブルクリックする
最後の「金額」は 上のテーブルには無いので 直接入力する
1.フィールド欄に 単価*数量 ( * は 半角 )と入力
2.[Enter] を押す
"単価"*"数量" となる
3.エイリアス欄に 金額 と入力する
これで 「売上Dクエリー」が 出来たので 保存する
[名前を付けて保存]画面 「売上Dクエリー」と入力
確認してみる
「売上Dクエリー」を ダブルクリック
Table Data View(テーブルデータビュー)が表示される
並び順が 担当者CDになっている&単価と金額を 通貨表示にしたい
通貨表示は 以前行ったので簡単に
[単価]を右クリック [列の書式]選択
[フィールドの書式設定]で 分類「通貨」[OK] クリック
[金額]も同様
並び替えは [NO]をクリック(選択)
ツールバーの 「昇順に並び替え」
結果
参考 : 売上管理g.odb
LibreOffice Base についての記事 一覧
※ Base を 使う場合は LibreOffice 3.3.3 の方が良い 3.4.1・3.4.2 は 不具合がある
B1・B2・B3・B4・B5・B6・B7・B8・B9・B10
B11・B12・B13・B14・B15・B16・B17・B18・B19・B20
B21・B22・B23・B24・B25・B26・B27・B28・B29・B30
B31・B32・B33・B34・B35・B36・B37・B38・B39・B40・B41