庶民にとってデータベースとはどのような存在なのか

普段コンピューターの話になると、主にハードウェアや事務系のアプリケーションをいかに操るかといった話題になることが多いように感じます。

そんななかでも、ワープロや表計算ソフトについて語られることはあってもデータベースとなると一般的には関心が薄いようです。

私なども、PCの知識は人並み以上にあるつもりですが他人から相談されるのはWindowsの基本操作やMS_Excelについてのことばかりでデータベースの話題はほとんどありません。
世の中PCと言えばExcelのことなのかと少々考えさせられるほどです。

そもそもデータベースとは何なのか?

単にデータベースと言えば、その詳細は知らなくても言葉では聞いたことがある。別に詳しく知ろうとも思わない。

多くの人がデータベースと聞いて感じる印象はそんなものでしょう。

ただし、一度でもデータベースの利便性に気づく場面に遭遇できれば意識は変わるはずです。

コンピュータ関連の用語であることは知っている

データベースという言葉自体を知らないという大人は割と少数派であることは間違いないでしょう。しかし、データベースとは何かと問われたとき正確に答えられる人は多くはありません。

情報関連の用語であることは知っているが、主に何のことを指すのかについては関心がないというのが世間的なデータベースの立ち位置なのは間違いないようです。

データベースの一般的な捉え方

データベースのイメージに似ているお菓子

情報関連のサイトでよく見かけるデータベースを表す図形やアイコンは写真のお菓子のような見た目です。

データを格納しているディスクを重ねたイメージですね。
辞書などによればデータベースとは「情報機器を用いて人が利用しやすい形で整理したデータの集まり」とかそういった表現をしています。

ものによっては「有機的に整理…」とか言われていますが、意味合いを考えれば甚だ無機質なものであるのは間違いないでしょう。

簡単に言うならば、電子的な情報を利用しやすいように整理して格納してるものがデータベースであると言えます。

ポイントは「人が利用しやすいように整えられている」ということです。

表計算ソフトでまとめられたデータは、整理はされていますが万能な用途に整えられているわけではありません。
ある特定の社員や顧客へ分かりやすく綴った特定の情報でしかなく、後々別な用途に使うには補足や修正をともなうもので、そこがデータベースとは異なります。

一方データベースが人へ吐き出すデータは、必要な数値の羅列であったり固有名詞であったりと単純なものが多いです。

これが役立つのはリアルタイムに答えだけが欲しい場合です。
ワープロや表計算に多いグラフなどの補足や解説は二の次な場面ではデータベースを活用した方が便利なわけです。

データベースを知ることで広がる世界

日々繰り返されてきた単純な仕事の記録から、その事象が発生したのは何時だったのか、あるいは収益や支払いがいくらだったのか時刻や数値だけを知りたい場合、あるいは取引の相手が誰だったのかという人の名前だけを瞬時に引き出したいときデータベースシステムが役に立ちます。

ここで私がいくら熱く語っても実際にデータの引き出し方の手法に触れて体験してみないことには理解はしにくいかもしれません。

事実、私もその手の話を同僚にしても関心は持っていただけないのが状況です。

データベースというのは、物を変え形を変えそれ自信が大きな付加価値を持っているとも言えます。
それが、データベースを独自に構築する習慣が世に広まらない原因かもしれません。

多くの会計ソフトや宛名を印刷するために特化した住所管理ソフトなどはデータベースアプリケーションの要素を多く含んでいます。
それらを開発・販売することは大手のソフトウェア会社にとっては利益につながるものです。

そう考えると、特定のノウハウを世に知らすより、そのノウハウを飯の種として利益を捻出した方が業界にとっては美味しい訳であって、それがデータベースが世に広がらない理由かなと勝手に想像してしまいます。

データベースの仕組みは、基本を身につけ順立てて学んでいけば難しいものではありません。
自前でデータベースを構築し利用することで得られる利益を体感できればPCはデータベースを活用するために使うものと考えることができるようになるでしょう。

大げさかもしれませんが、データベースシステムの多様性は表計算の比ではないとさえ思います。

欲しいデータは個人によって異なる

情報化社会といわれ久しい現代ではありますが、未だ情報は個人に特化しているとは言い難いです。

独自の経験や知識を情報として積み重ね自ら利用していくことはデータベースシステムの本来の狙いであると言えることでしょう。

ハードウェアが著しく進化する世界の中で、SQLデータベースというものが古くならないのは、それを活かすことで開ける未来が多く残っているからにほかなりません。

そして、データベースそのものに興味を持ち自ら必要なデータを活かしていくことができれば、その人自身にとって多くの希望を満たしてくれる可能性が広がることでしょう。

正規化された URL:

 

アクセスのエラー「#Deleted」の解決

Microsoft社のデータベースアプリケーションからODBC接続でMySQLのデータベースを読み込もうとした際に、目的のデータベースによっては「#Dleted」というエラー文字がフィールド全面または一部のレコードに表示されることがあります。

初めてこのエラーに出くわすと、どういう意味か分からず戸惑ってしまい、ますますAccessが難解なものになってしまいかねません。

ODBC接続で出るAccessのエラーは

Accessの「#Deleted」エラーを解決するに当たって知っておかなければならないのは、Microsoftは「SQLサーバー」という自社製の商品を扱っていて、AccessからのSQL接続は「MS_SQL_Server」を第一に想定していると考えたほうが良いと言うことです。

なので、MySQL(MariaDB)へのODBC接続が安定しないからといって完全な解決には至らないことがあるということを心得ておいた方が、あとあと精神衛生的に良いことでしょう。

以上のことを踏まえた上で今回のエラー「#Deleted」について考えてみます。

データ型の不適合を考える

#DEletedエラーについて調べてみると、このエラーはどうやらMySQLのデータの読み込みに失敗したときに出るものらしいということです。

そこで、ふと思いついたのがサーバー側でデータ型を修正してみるということでした。

flot型をdouble型に変更、あるいはその逆を試してみるなどです。

データベースを扱うに当たっては、初心者を気をくじけさせるほどの多種のデータ型が存在します。

データの保存や運用に問題がなければ、これらの型を類似する型に変更してみることで「#Deleted」エラーを消すことができました。

ほかには、サンプルで作成したテーブルに主キーを設定していなかったために、やはり#Deletedが表示されたというのがありました。

テーブルの連結がなければ主キーは必要ないかと思って作ったサンプルデータでしたが、おかしなところで引っかかった例です。

これはたまたまなのか、主キーがないと出るのかわかりません。

ほかに、ネットで調べてみると#Deletedエラーは「パススルークエリ」を書いて対処するというのがありましたが、まずパススルークエリという用語そのものが不明でしたので対処例そのものをスルーさせていただきました。

MSのSQLでも出るらしい

ところで、この#DeletedはAccessからMS_SQLサーバーへ接続した際にも表示される場合があるようで、この特定の条件をMicrosoft側が仕様上起こる問題として把握しているそうです。

アプリケーション側でODBC呼び出しの際に、SQLサーバーのデータ精度との間に不一致があるとか、そんな感じのエラーのようでした。

今後も、このエラーが発生したときは、こうした情報をヒントにエラーの原因を探ることになりそうです。

AccessからMySQL(MariaDB)へODBC接続

WindowsPCのデータベースアプリケーションMS-AccessからオラクルのODBCドライバを使ってMySQL(MariaDB)サーバーへ接続する手順です。

あれこれ試して自己解決で接続できた方法ですが、あとで調べてみたらODBC接続はWindows側で設定する手段が王道のようでした。

なお、今回まとめた手順は予めODBCドライバがインストールされている環境でAccess2013を使用しています。

新規ファイルの作成

Accessを起動し「空のデスクトップデータベース」をクリック。 新しいファイルの保存先を指定して「作成」をクリックし***.accdbファイルを作成する。

 

新規にファイルを作成

空のデータベースファイルを作成。

ファイルの保存場所を指定

※ここで作成される「テーブル1」は使用しないので「閉じる」を操作し、すぐ削除してしまってかまわない。

リンクテーブルの作成

ODBCデータベースを指定

続いて「外部データ」メニューから「ODBCデータベース」をクリック。

リンクテーブルを作成

外部データの取り込みで「リンクテーブルを作成…」にチェックを入れOKを押す。

データソースの選択

そのまま新規作成

何もせず新規作成をクリック

MySQL_ODBC5.3UnicodeDriverを選択

MySQL_ODBC5.3UnicodeDriverを選択して次へ


「データソースの選択」というボックスが表示されるので、DSN名(D):の右側「新規作成(N)」をクリック(この段階ではDSN名は空欄でも良い)しデータソースの新規作成ボックスの一覧から「MySQL ODBC 5.3Unicode Driver」を選択し「次へ」へ進む。

データソース名を入力

データソース名の入力画面になるので任意の名前を入力し「次へ」へ進む(まだ保存場所は指定しなくて大丈夫。

ファイル名とドライバの表示を確認

ファイルデータソースとして、指定した「ファイル名:***」及び「ドライバー:***」が表示されるので確認し「完了」を押す。

データベースサーバーへの接続設定

MySQLコネクタの画面

必要項目を入力するとデータベースが表示される

その後、自動で表示される「MySQL_Connector/ODBC」の画面でデータベースサーバーのTCP/IP、User、Passwordを入力するとDatabase:のところでプルダウンから目的のデータベースが選択できるようになるので接続するデータベースを選択してOKを押す(MySQL_Connector/ODBCの表示は少し時間がかかる)。

データソースファイルの保存

データソースの選択に戻る

ここで再度「データソースの選択」に戻るが、DSN名(D):の入力欄に「ファイルデータソース」で入力したデータソース名が表示されているので確認後、必要により上の「データソースの場所(I):」を選択してから「OK」を押す。

作成されるデータソースファイル(拡張子がdnsのファイル)は、別のアクセスファイルで同じデータベースに接続したいときにも使用可能。

Accessで利用するテーブルを選択

MySQL_Connector/ODBCの画面

再度「MySQL_Connector/ODBC」の画面が出るので、今度はパスワードのみを入力しOKを押す。

テーブルのリンク

「テーブルのリンク」が表示されるので、必要であれば「パスワードの保存」にチェックを入れAccessで使用するテーブルを選択し「OK」を押します。

※「パスワードの保存」にチェックを入れるとパスワードについての注意のメッセージが表示されます。

固有レコード識別子の選択

次に表示される「固有レコード識別子の選択」というボックスで、テーブルごとのフィールドが表示させれるのでAccessで使用したいフィールドを選択しOKを押す。

この操作をテーブルの数分繰り返す。

以上でAccessからODBC接続でMySQLデータベースへ接続が完了しAccessの画面の左にテーブル名の一覧がリンクテーブルとして表示されます。

Accessに表示されたテーブル名

Accessに表示されたMySQLサーバーのテーブル名

先に書いたとおり、データベースサーバーへのODBC接続はOS側での設定が可能のようでが試していません。

利用するアプリケーションがAccessだけなら今回の方法がわかりやすいのではと今のところ考えています。

MySQLへ接続するODBCドライバをインストール

WindowsPCからMySQL(MariaDB)サーバーへODBC接続するためにドライバをインストールする準備と手順についてまとめてみました。

クライアントPC側のアプリケーションはMS_Accessを想定しています。

今回使用したドライバーはmysql-connector-odbc-5.3.10-win32.msiです。

なお、重要なデータを扱う際には最新のバージョンを使用するのが良いでしょう。

DBMS接続のドライバは32bitを使用

まず基礎知識として、OSであるWindows10は64bitを使用していてもインストールしているAccessが32bitであればODBCドライバも32bitのものを使用した方が良いようです。

ほかのOfficeソフトであるWord・Excelは32bitが一般的であるのでAccessも32bitをインストールするのが望ましいようです。

それから、オラクルから提供されるされる「mysql-connector-odbc」のインストールにはVisualC++の再配布可能パッケージが必要でした。

事前にVC++再配布可能パッケージを準備

ODBCドライバをインストールする前に「VisualC++の再配布可能パッケージ」をインストールします。
手順は次の通り

1.マイクロソフトのサイトから、VC++ 2010とVC++2013の再配布可能パッケージ(どちらも32bit:vcredist_x86.exe)をダウンロードする。

2.VC++ 2010の次に2013の順にダウンロードしたパッケージをインストールする。

※VisualC++再配布可能パッケージはどちらか一つをインストールすれば間に合いそうな感じがしますが、手元の環境では2010と2013の両方しかも2010を先にインストールしてから2013でないとODBCドライバがインストールできませんでした。

ODBCドライバのインストール

ドライバの実行環境が整ったところで、オラクルのサイトからダウンロードしたODBCドライバ(今回はmysql-connector-odbc-5.3.10-win32.msi)をインストール。

ODBCドライバインストール画面

ドライバのインストールプログラムを実行するとこちらの画面が表示されます。

typicalを選択

ここでは一番上のTypicalを選択しました。

ODBCドライバのインストール完了

Installをクリックするとインストールが自動で開始されドライバのインストールが完了します。

PCによりますが、VC++再配布可能パッケージがインストールされていないと途中でメッセージが表示されインストールが完了できません。

インストールが完了すれば、データベースサーバーへ接続が可能になりますが、MS_Accessからの利用には別途アプリケーションからの設定(OS側でも可能?)も必要でした。

私の印象では、利用に関して情報の少ないLibreOfficeBaseからのJDBC接続のほうが簡単に感じます。

AccessもBaseも操作性に評価すべき点がそれぞれあるので、今のところどちらも使えるように環境を整えています。