![見出し画像](https://assets.st-note.com/production/uploads/images/122813316/rectangle_large_type_2_049d2c04743fcca253f54f737f54dd9a.png?width=1200)
オトナのコッソリ勉強データベースの入り口の入り口
本日の3行まとめ
視覚的にイメージしやすい&学びやすいのはAccess
なるべくお金をかけないならオープンソース(WebDB)
さらに様子見なら参考書で
MS Accessが入り口としては一番分かりやすい
あくまでも入り口としてのDB(データベース)
Accessと他のDB(SQLServer等)との決定的な違いは、Accessはそれ自体がDBでもありシステムでもあり、いわばAccess単体そのものが生命線であり、AccessやAccessを動かしているパソコンに何かあった時にはサヨウナラのリスクがあるということです。
簡単に申しますと、普通はシステムとDBは別モノですが、Accessに関してはそれらが全部オールインワンということです(ついでにレポートという帳票機能までついてるという…←そしてコレが一番優秀だったりもする…小声)
Accessのコピーを毎日とる&日々最適化(システムを最適化)するという昭和の荒業について
Accessそのものが生命線なのであれば、Accessそのもののバックアップを日々とっていく、そしてAccess特有の「ファイルの肥大化」という問題に対し、根本的な解決にならない「最適化」でだましだまし運用するというのが昭和のAccessシステムの運用手法でした。
しかし、AccessはシステムサイドのプログラミングVBA(フロントエンド)とデータベース(バックエンド)を兼ねている所から、その弊害ともいえる弱さや脆さもあり、ちょっとしたシステム(1人で運営するような個人商店レベルの商品管理システムレベル)には向いているものの、それなりの規模のシステムにおいてはやはり不安があるものでもあるといえます。
SQLを学ぶという意味においては
データベース(※以後DBと省略させていただきます)を扱うためには、SQL(Structured Query Language)という問い合わせ言語を学ぶことが必須になります。
Accessには他にはない独自のクエリビルダという機能があります。
テーブルのフィールドを視覚的につなぎ合わせたりして必要な情報を抽出する作業等が簡単に行えるため、そこで表示されるクエリ(SQL文)を眺めたり挙動を知ることで、SQLの学びという意味では非常に便利かつ有用だと思います。
問題は「高い」
Accessは無償ではありませんので、ただデータベースを学ぶというだけにしては高額な授業料(Accessのサブスク利用料金なり製品購入代金なり)を払わなくてはなりません。
これがDBの勉強の敷居をあげている要因の一つではないかとも思います。
個人使用のプライベートパソコンで所有しているのはせいぜいWordかExcelまでで、Accessを所有している方はほとんどいないのが現実ではないかと思います。
よってそこが「学びたい」と釣り合うかどうかを見極める必要があります。
コストを落とすならWEB系DB一択
商用DBは色々と敷居が高い
開発環境を考えた場合、SQLServerやOracleを個人ライセンスで家で学ぶというのは現実的に難しいものがあると思います。
上記のDBはプロ現場でも使われるものですので、学びという意味では本格的になりますが、あくまでもSQLServerやoracleはDBですので、当然データベースという「箱」の中身を操作するフロントエンドのシステムを開発するプログラミング言語(VB.Net等)が必要で、その場合にはVisualStudio前提のようになってきます。
難易度も高ければコストも高いため、そういう意味でWeb系一択とお話させていただいております(モノが悪いという意味ではありません)
Web系DBとしてMySQLやPostgreSQLは本格的かつ準備が楽
昨今のそれなりのレンタルサーバには大抵上記のどちらかは標準機能として用意されているため、勉強する環境として、自分でDBを購入したりインストールする必要がないため、スタートアップという意味では便利です。
とはいえAccessより敷居は高い&DB単体では勉強も半分という所
MySQL等は、Accessのように日本語でもなければ、色々とやさしく分かりやすくお膳立てもされていません。
ウォーミングアップ無しにいきなり100m全力疾走ヨーイドン!なイメージです。
つまり、ある程度「分かっている前提」で画面を見ないと、むしろやる気(勉強する気)を無くす可能性もおおいにあると思われます。
トドメを刺すのが、DBはあくまでもDBでしかないということです。
前述したAccessはDBでもありシステムもAccess単体で完結できる設計になっておりますが、普通DBというものはDB単体(つまり箱のみ)です。
DBを動かすため(よくある所でいえばWeb上の検索ボタンなど)のプログラミングは別途PHPやRuby、Python等のフロントエンドの言語の勉強も平行して行っていかなければ、DBだけ作っても、実際にその中身を扱うことができません。
コストは軽め&やる気があるなら…
マイナス要素ばかり最初に書いている気がしないでもないですが、やる気があるなら非常に良い環境ともいえます。
安いレンタルサーバ(月数百円程度)でもMySQLもPHPも使えますよというレンタルサーバはあります。
満足したところで解約してもいいと思いますし、今も主流の言語でありDBですので、リアル実践に即した学びは間違いなくあると思います。
欲を言えば…
Accessは非常に優秀なシステムですので、Accessがあるのであれば、そちらで雰囲気をつかんでからの方がとっつきは早いと思います。
レポート(帳票)出力までご丁寧に用意されており、Access単体で「システム」というものの、さわり(あくまでもさわり)全体を学ぶことが可能ですので。
様子見なら参考書で
フリマや中古の本屋さんで一冊買ってみる
そもそも参考書自体が1冊数千円程度はする高価なものです。
わざわざどうなるかも分からない勉強で新品で買う必要もないでしょう。
フリマや中古の本屋さんで数百円位のデータベースの本を一冊買ってみて
「実際の所データベースってどんなもんや???」
からスタートし、それでも
「これはチョットガチで勉強したいかも…」
と思えてから検討しても十分だと思います。
もっと言えば、本屋さんがお近くにあるのであれば、とりあえず立ち読みでも十分かもしれません。
さいごに
今回はあくまでも入り口の入り口のお話ということで…
詳しくSQL文について触れたり、DBの内容を表示するといったプログラムについて触れたりはしておりません。
概要的なもので、DBの勉強を始めてみようか?という方向けに、ある程度の難易度の目安や種類、最終的にはどんなもんや的な話としてさせていただきました。
DB単体は「箱」というイメージで
DBを学ぶということは、自然にそのDBを動かすフロントエンドの言語も学び、その言語の記述によってDBの中身を操作するということになります。
AccessでもVBA(非連結)でテーブルやフィールドを操作するのが一般的であり、その時点でSQLとは別にVBAは学ぶ必要があります。
DB「箱」の設計はシステムにおいて大変に重要
どんなテーブルが必要か?そしてその項目(フィールド)をどんな型でどの程度のサイズ用意するのか?というのは非常に重要です。
最初は3桁程度までしか想定してなかったけど実際運用してみたら3桁どころじゃなかった…とか、まさかこの部分は変わらないだろう…と決め打ちで値をシステム側で変数で入れていたけど、実際には変動的なものでマスタ化してシステム利用者が変更出来ないと面倒なことになった…ということがないように、しっかりとしたSEが仕様をつくらないとトンデモシステムになってしまいます。
良いDB「箱」をつくるためには
いずれにしてもある程度の実務経験は必要です。
実際に商用クラスのDBを構築してみないと、なかなか見えないこともあると思います。
ソースコードもその場しのぎの継ぎ接ぎだらけのプログラムだと、自分自身が訳がわからなくなって迷宮入りしかねません。
手っ取り早いのは、前述させていただきました「個人商店」システムを作ってみるだけで結構な勉強になると思います。
八百屋でも花屋でもなんでもいいですが、商品の内容や種別、倉庫DBのキャパ等色々考えることがあるものですので、いきなり大きなシステムを構築しようとせず、一人で運用する前提のシステムから入るのが無難だと思います。
※余談 DBによって方言も出来ることも違う
ここでいう方言というのは、同じような意味のSQL文でも、扱うDBによって記述が違ったり、あるいは出来ることや出来ないこと、そのDB独自の方法など、それなりに違いはあります。
とはいえ、その辺はある程度の前提知識があれば「リファレンス」で解決できることも多いとは思いますので、まずは一つ、好みにあいそうな何かを学んでみると良いかと思います。
実際に運用するとなると…
障害やデッドロック対策、いわゆるトランザクション処理であったり、RAID(ミラー)やDBのチューニングと呼ばれる高速化等(インデックス等)システムはただ単に動けばいいというものではなく、実運用や予期せぬトラブルに耐えうる、かつ利用者の意図に沿ったスマートな設計、構築が求められます。
この辺は正直Accessレベルでどうにかなるものでもない(ソフト単体でのシステム&DBとしての限界がある)ので、やはり商用DB(SQLServerやOracle等)やWebDB(MySQLやPostgreSQL)で学んでいくことになると思います。
もし、万が一、サポートいただけるようなことがあった場合には、NOTEの記事の方でしっかりと記事と合わせてサポート額の使い道を報告させていただきます。 (先日落雷でパソコンが破壊されたので多分当分はその買い替え費用の足しにさせていただくことに…すみませんすみません)