1
OpenOffice.org Base とは?... 3 Base データベースファイル sampledb070.odb をダウンロードする... 3 Base データベースを登録する... 10 Base クエリーと SQL 文は表裏一体... 14 Base から Access のデータベースに接続する方法... 21 Base フィールドとレコードについて... 30 Base デザイン画面でクエリーを作成する方法... 31 Base クエリーで性別を表示する方法... 51 2
http://base.officehp.com/ OpenOffice.org Base とは? Base は統合オフィスソフトである OpenOffice.org や StarSuite に含まれている データベースソフトです この二つに含まれている Base は同じです Base は Microsoft Office の Access のようなデータベースソフトです テーブル クエリー フォーム レポート マクロなど データベースソフトとして必要な機能は 一通りそろっています Access はとても操作性が優れたデータベースソフトで 解説書が多く情報が豊富です しかし Access は新製品が出ると 買い換えるか 有料でアップグレードしなければなりません またインストールできるユーザー数に制限があったりもします Base を使う最大のメリットは 何といってもオープンソースソフトウェアであることです Base は誰でもインターネットから無償で入手できます また日々開発が続けられているので 無償で更新することが可能です Access を使い慣れた人が 初めて Base を使うと 操作性や機能に満足できないかもしれませんが これからどんどん改良されていくと思います Access と Base の機能的な大きな違いは Access がデータベース機能自体を持っているのに対し Base にはデータベース機能自体は無いことです Base は標準で HSQLDB というデータベースを利用します そのため Base にデータベース機能が付いているように感じますが あくまでデータベースのフロントエンド ( クライアントまたは窓口 ) なのです HSQLDB は利用できるデータベースの 1 つであり 同じように Access MySQL PostgreSQL など 他のデータベースに接続することもできます Base データベースファイル sampledb070.odb をダウンロードする この講座は OpenOffice.org 初心者入門講座の続編という位置付けです まだの方は先にそちらをご覧ください OpenOffice.org や StarSuite のインストールから Base の基本的な使い方を掲載しています 今回は Base の学習用に データベースファイルを用意したので ダウンロードしてください 全国の郵便番号や住所が入っています 動作確認は OpenOffice.org か StarSuite のどちらの Base でもかまいません 1 sampledb070.zip をダウンロードします 3
* ファイルは圧縮されているので 解凍してください 2 ファイルを解凍すると sampledb070.odb があります 3 Base を起動して sampledb070.odb を開き テーブルを表示します すでに 8 つのテーブルが作成済みで データが入っています 4 クエリー フォーム レポートには以下のファイルが作成済みです 4
Q01Prefecture F01PrefectureASC R01PrefectureASC これらは OpenOffice.org 初心者入門講座で作成したものと同じです 詳しくはそちらをご覧ください 5 各テーブルのデザインとレコードを確認してください テーブルデザインを確認する方法 レコードを確認する方法 5
*T03Town はレコード数が 12 万件以上あるので 表示にかなり時間がかかります 気長にお待ちください Base と Access でフィールドのデータ型を比較する 6 データを確認したら データベースを閉じてください ワンポイント テーブル T03Town のようにレコード数が多くなると データベースが HSQLDB の場合 処理に時間がかかるようです まったく同じものを データベースを Access にして Base からリンクした場合は それほど時間がかかりません したがって Base が遅いというわけではなく HSQLDB 側で時間がかかっているようです 大量のレコードを扱うシステムの場合は データベースを MySQL などにして Base はデータベースのフロントエンドとして使うほうが効率がよさそうです 前回ダウンロードした Base のデータベースファイル sampledb070.odb は 元々 Access の 6
データだったものを Base にインポートしたものです テーブルのデザイン ( 構造 ) は インポートの時に自動的に設定されるため Base ではフィールドの並び順がバラバラです Access の並び順の方がわかりやすいですね でも今の段階では気にしないでください 表示順はあとからクエリーでいくらでも加工できます Access はテーブルにレコードを入力した後でも 簡単にフィールドの順番を入れ替えることができますが Base はできないようなので そのままにしました (1)Access では データ型 と言いますが Base では フィールドの種類 と言います (2)Access のデータ型に対応する HSQLDB のフィールドの種類 今回のデータベースで使っているのは 以下の型だけです 整数型 = 整数 [INTEGER] テキスト型 = テキスト [VARCHAR] 通貨型 = 数値 [NUMRIC] 日付 / 時刻型 = 日付 / 時刻 [TIMESTAMP] 7
フィールドの種類は他にもいろいろありますが 必要なときに説明します (3)Access のオートナンバー型に相当する機能は Access Base ではフィールドの種類を整数 [INTEGER] にした後 自動入力値 を はい に設定することで可能です Base ワンポイント HSQLDB のフィールドの種類 と書いたのは Base では使うデータベースによって種類が変わるからです Base から標準の HSQLDB を使った場合 8
Base からリンクで Access を使った場合 フィールドの種類をよく見ると違うことがわかります 9
Base データベースを登録する Base でデータベースウィザードを使って 新しいデータベースを作成した時には OpenOffice.org( または StarSuite) への データベースの登録 は自動的に行われます しかし既存の odb ファイルをダウンロードして入手した場合などは データベースを手動で登録する必要があります データベースの登録は Base 起動後にメニューの ツール オプション から設定することができます OpenOffice.org にデータベースを登録すると OpenOffice.org の Calc や Writer からデータベースを参照することができます この機能を データソース と言います データソースを使うと データベースのデータを Calc や Writer へ挿入したり 差し込み印刷することができるので便利です データベースを登録しなくても odb ファイルは使うことができますが 他のアプリケーションと連携できると用途が広がるので 手順を説明しておきます 1 Base を起動して sampledb070.odb を開きます * Calc や Writer からも登録できます 10
2 メニューから ツール オプション を選択します 3 ダイアログボックスが表示されたら OpenOffice.org Base ( または StarSuite) から データベース を選択すると 登録されたデータベースの管理が行なえます 11
4 新しくデータベースを登録する時は 新規作成 ボタンをクリックします 5 検索 ボタンでデータベースファイルを指定します 登録名 が自動的に表示されるので OK ボタンをクリックします 6 sampledb070 が登録されました 12
ファイルの場所や登録名を変更したい時には このダイアログボックスの 編集 で行なえます また登録を 削除 しても odb ファイル自体は削除されませんので安心してください 7 データベースを登録すると データソース から利用できるようになります Calc の例 13
テーブルのデータを挿入した様子 テーブルだけでなく クエリーのデータも利用できます またデータソース画面で データベース上のデータを追加したり 更新することもできます Base クエリーと SQL 文は表裏一体 Base にはクエリーという機能があります クエリー (query) はデータベース管理システムに対して 問い合わせ ( 検索 追加 更新 削除など ) を行ないます Base や Access などのデータベースアプリケーションでは GUI で視覚的に作成したクエリーを保存しておいて 何度でも実行することができます クエリーをデザインすると SQL(Structured Query Language) 文が自動的に作成されます 逆に SQL 文でクエリーをデザインすることもできます この二つの関係は密接で切り離せないものです 1 Base を起動して sampledb070.odb を開きます 14
2 クエリーを開くと Q01Prefecture が作成済みです 15
この Q01Prefecture は OpenOffice.org 初心者入門講座で作成したものです 作り方はそちらをご覧ください これからクエリーを編集しますが 保存はしないでください 3 Q01Prefecture を選択し 編集 ボタンをクリックします 4 クエリーのデザインビュー ( 画面 ) が表示されました 並べ替え が 昇順 になっていることを覚えておいてください 16
* 昇順なので 1 北海道 47 沖縄 の順になります 5 デザインビューのオン / オフ切り換え ボタンをクリックします 17
6 SQL 文が表示されました デザインビューでクエリーを視覚的に作成すると 裏方で SQL 文が自動的に作成されます 7 SQL 文の最後を ASC から DESC に変更します *DESC は降順という意味 8 もう一度 デザインビューのオン / オフ切り換え ボタンをクリックします 18
9 クエリーのデザイン画面に戻りました 並べ替え が 降順 に変わっています SQL 文を直接書くと それがデザインビューに反映されます つまりクエリーと SQL 文は表裏一体なのです 10 クエリーの実行 ボタンをクリックします 19
11 降順に設定したので 47 沖縄 1 北海道 の順になりました 12 確認したら クエリーを閉じてください 20
13 変更は保存しないので いいえ ボタンをクリックします Base や Access などで完結するシステムを作る場合は クエリーをデザインするだけで済みます SQL 文の知識は必ずしも必要ではありません しかし Java や PHP など 他のプログラミング言語からデータベースを操作する場合は プログラムの中で SQL 文を組み立てて発行します そのため SQL 文の知識が必要になってきます 今の段階では SQL 文の詳しい意味はわからなくてもよいのですが クエリーをデザインする時に どんな SQL 文が作成されているか見る習慣を付けてください あとできっと役立ちます Base から Access のデータベースに接続する方法 Base はデータベースのフロントエンド ( クライアントまたは窓口 ) なので 標準の HSQLDB 以外のデータベースにも接続することができます 今回は Access のデータベースに接続しますが MySQL や Oracle などに接続する手順もほとんど同じなので 参考にしてください 21
Base には Access 用のドライバが最初から用意されているので 簡単な手順で接続できます 1 SampleDB071.zip をダウンロードします * ファイルは圧縮されているので 解凍してください 2 ファイルを解凍すると SampleDB071.mdb があります これは Access のファイルです 3 Base を起動します 4 データベースウィザード が表示されました 22
5 既存のデータベースに接続 をチェックし Microsoft Access を選択したら 次へ ボタンをクリックします 23
6 ブラウズ ボタンをクリックして 解凍した Access のファイル SampleDB071.mdb を指定し 次へ ボタンをクリックします * 解凍した場所により表示が異なります 7 そのまま 完了 ボタンをクリックします 24
8 保存する場所を選択して ファイル名に AccessLink.odb と入力し 保存 ボタンをクリックします 25
9 AccessLink.odb が表示されました 10 テーブルを見ると Access のテーブルとクエリーが表示されています 26
これはリンクした状態なので Base 側でデータを変更すると Access 側 (SampleDB071.mdb) のデータも変わります クエリーは表示だけで 編集したりすることはできません またリンクしたテーブルから クエリー フォーム レポートを新規作成することができます 11 テーブル T03Town を開いてください 27
12 最後のレコードを表示するまでの時間を HSQLDB の場合 (sampledb070.odb) と比べてみてください 28
接続しているデータベースによって スピードが違うことが実感できると思います 13 テーブル T03Town を編集で開くと フィールドの種類が HSQLDB の時と違うことがわかります 29
あとは AccessLink.odb からいつでも開くことができます Base がデータベースのフロントエンドだということが 実感できたのではないでしょうか 今回は Access に接続したので あまりメリットを感じないかもしれません Access 自体にもクエリー フォーム レポートを作成する機能があるからです しかし Base を MySQL のフロントエンドとして使うと 一般ユーザーが利用するシステムを簡単に作ったり プログラマーが開発の時に MySQL のデータを簡単に扱えるので とてもメリットがあります MySQL については MySQL 初心者入門講座をご覧ください ワンポイント Access へは ODBC でも接続できます また接続するデータベースによっては インストールはもちろん 専用の ODBC ドライバを用意しておく必要があります Base フィールドとレコードについて Base Access Oracle SQL Server MySQL PostgreSQL などはリレーショナルデータベース管理システム (RDBMS) です 現在もっともよく利用されているリレーショナルデータベースでは データは表のような構造で管理されています 表計算ソフトの行や列と似ているので 何となく分かるのではないでしょうか 30
データベースで使う用語は 解説書によって呼び方に違いがあります Base で初めてデータベースを学ぶ初心者のために 最も基本的なことをまとめておきます データベースでは 上記のような表を テーブル といいます フィールドは 列 とか column といい レコードは 行 とか row と言うことがあります フィールド列 column レコード行 row フィールド ( 列 ) には 同じ種類のデータが入ります また 1 つのレコードで 1 件のデータを表します 例えば顧客マスターのテーブルでは 顧客名のフィールドには必ず文字列が入り 数字や日付が入ることはありません そして 1 件のレコードは顧客 1 人分のデータになるということです Base デザイン画面でクエリーを作成する方法 Base には視覚的にクエリーを作成する機能があります SQL 文がわからなくても マウスでドラッグ & ドロップするだけで 自由自在にクエリーが作成できます OpenOffice.org 初心者入門講座で最も基本的なクエリーの作り方 (Q01Prefecture) は解説しましたので 今回はその続きになります まだの方は先にそちらをご覧ください 今回は 2 つのテーブルを共通のフィールドで関連付けて まるで 1 つのテーブルのように表示する方法を解説します これがリレーショナルデータベースでクエリーを活用する基本となります クエリーがわかれば Base はわかります 1 Base を起動して sampledb070.odb を開きます 31
2 クエリーを表示します 32
3 デザイン表示でクエリーを作成 をクリックします 4 テーブルまたはクエリーの追加 ダイアログボックスで 表 を選択すると テーブルの一覧が表示されます 5 クエリー を選択すると クエリーの一覧が表示されます 33
6 表 を選択し T02City を選択したら 追加 ボタンをクリックします 7 閉じる ボタンをクリックします 34
8 クエリーデザイン画面に T02City が追加されました 9 CITY_CD をダブルクリックします 35
10 CITY_CD が画面下に選択されました 11 同様に CITY_NAME PREF_CD を選択します 36
12 クエリーの実行 ボタンをクリックします 13 クエリーの実行結果が表示されました 37
しかし都道府県名は表示されていません 有名な都市ならわかりますが 日本全国には市町村が 1900 以上あります 都道府県も一緒に表示されていたほうがわかりやすいです そこで次は都道府県も表示してみましょう 14 メニューから 表示 プレビュー を選択します 38
15 クエリーデザイン画面に戻りました 39
* この戻る操作を覚えてください 16 テーブルまたはクエリーの追加 ボタンをクリックします 40
17 ダイアログボックスで T01Prefecture を追加します 18 クエリーデザイン画面に T01Prefecture が追加されました 41
19 マウスで T02City の PREF_CD を T01Prefecture の PREF_CD にドラッグ & ドロップします 42
* 逆でも同じです 20 テーブル同士が PREF_CD で関連付けられました 43
21 T01Prefecture の PREF_NAME をダブルクリックして選択します 44
22 クエリーの実行 ボタンをクリックします 23 今度は都道府県名が表示されました 45
24 他の都道府県も表示されているか確認してください 46
ここまでの作業を保存しましょう 25 保存 ボタンをクリックします 26 クエリー名に Q02City と入力し OK ボタンをクリックします 27 クエリーのタイトルが変わりました 47
28 保存したらクエリーは閉じてください 29 データベースファイルウィンドウに Q02City が表示されています 48
30 作成したクエリーは クエリーを実行したり 編集 削除することができます 49
31 復習を兼ねて Q02City を編集で開き CITY_CD の並べ替えを 昇順 に設定してください 設定したら保存します 解説 (1) PREF_CD は両方のテーブルにありますが 必ず T02City 側の PREF_CD を選択します これはとても重要なポイントです クエリー Q02City の主役となるテーブルは T02City です しかし T02City だけでは都道府県名が表示できないので T01Prefecture を追加しました つまり T01Prefecture は脇役です もし T01Prefecture 側の PREF_CD を選択した場合 このクエリーから作成したフォームでは データが入力できないなどの不具合の原因となります (2) クエリーを使うと フィールドの並び順は自由に入れ替えることができます また目的のフィールドだけを選んで表示することができます (3) クエリーを使うと 複数のテーブルを関連付けて まるで一つのテーブルのように データを 50
表示することができます (4) レコードは必ずしも番号順に表示されるとは限りませんので 並べ替えを設定するようにしてください ワンポイント 余裕のある方は 今回のようなクエリーをデザインした場合 どのような SQL 文ができるのか見てください 今は SQL 文の意味がわからなくても結構です SQL 文を見慣れることが大事です Base クエリーで性別を表示する方法 T04Customer ( 顧客マスター ) には 性別に関する番号が保存されています T05Sex ( 性別マスター ) には 番号と 男 女 という文字が保存されています 51
この顧客マスターと性別マスターを関連付けることで 顧客マスターに文字で性別を表示することができます 要領はクエリ Q02City で都道府県名を表示した時と同じです 1 Base を起動して sampledb070.odb を開きます 52
2 クエリーを表示します 53
3 デザイン表示でクエリーを作成 をクリックします 4 テーブル T04Customer ( 顧客マスター ) を追加してください 54
5 以下の図の順番でフィールドを選択します 55
6 クエリーの実行 ボタンをクリックします 56
7 クエリーの実行結果が表示されました しかしこれでは性別が分かり難いです 性別を文字で表示するように クエリーのデザインを変更します クエリーのデザイン画面に戻します 8 メニューから 表示 プレビュー をクリックします 57
* プレビューのチェックを外す 9 テーブルまたはクエリーの追加 ボタンをクリックします 58
10 テーブル T05Sex ( 性別マスター ) を追加してください 59
11 マウスでドラッグ & ドロップして SEX_CD 同士をつなげます 60
12 以下の図のようにフィールドを選択してください 61
フィールドの順番は 簡単に入れ替えることができます 13 フィールド上部をマウスでドラッグ & ドロップすると移動できます 14 フィールドが移動しました 62
クエリーのデザイン画面でフィールドを移動する方法は よく使いますので覚えてください 15 ついでに CST_CD の並べ替えを 昇順 にします 63
* レコードは番号順に表示されるとは限らないため 16 クエリーを実行すると 性別が文字で表示できました 64
このほうがわかりやすいですね ここまでの作業を保存しましょう 17 保存 ボタンをクリックします 65
18 クエリー名に Q04Customer と入力し OK ボタンをクリックします 19 保存したらクエリーは閉じてください 20 データベースファイルウィンドウに Q04Customer が表示されています 66
ワンポイント 今回のクエリーは 以下のような SQL 文になります 67