データベースのお勉強

最近お仕事で久しぶりにデータベース周りの環境構築をする機会がありました。昔さんざんやったつもりでしたがさっぱり忘れておりまして、客先だったのでガリガリ調べるわけにもいかず焦りました。


そのときは前プロジェクトの資料を見ながら対処することが出来たのですが、きちんと内容を理解していないと楽しさも半減しますし何より不安を覚えます。ですので、これを良い機会として今回の記事でデータベースについて学び直しをしようと思います。
f:id:somegoro:20170717034716j:plain

さて、それでは超基本から学び直していきます。そもそも、データベースとは何でしょう。

データベースとは

データベースとは、大量のデータを容易に活用できるように整理したデータの集まりのことです。データをまとめて、整理することで効率的に検索、更新、削除が出来るようにしています。


データをまとめると、利用する際にいくつか注意しなければならないことがあります。例えば、「データの冗長性を排除しなければならない(正規化)」「同時アクセスを可能にするべき(排他制御)」後者は利用条件によりますが、大体のシステムが複数人で利用するよう設計されますのでほぼ必須項目ですね。


あとは、「データ構造の変更がプログラムに影響しないこと(プログラムとデータの独立)」これはやや開発者目線ですが、利用者にとっても関連する部分です。

情報処理教科書 データベーススペシャリスト 2017年版

情報処理教科書 データベーススペシャリスト 2017年版

これらの注意すべき点を踏まえてデータベースを管理することができるシステムがDBMS(DataBase Management System)です。主に定義機能、操作機能、制御機能があります。詳しく書いていきます。


DBMSの3つの機能

DBMSには主に定義機能、操作機能、制御機能があります。

定義機能

データ記述言語DDL(Data Definition Language)を用いてデータベースの構造や仕様を定義する機能です。この定義した構造を「スキーマ」と呼びます。定義の仕方は、一般的には「コンピュータ内部での物理的な格納構造」と「アプリケーションプログラムの論理的なデータ構造」とを独立させるように定義します。


この2つの構造と中間構造1つで「3層スキーマ」と呼ばれたりします。(外部スキーマ・概念スキーマ・内部スキーマ

操作機能

データ操作言語DMLを用いてデータ操作する機能です。データの検索、更新、削除などを行います。これは非常に頻出ですので後日詳細な記事を書きます。(よく見るSQLがこれに当たります。)

制御機能

データベースの運用を支援する機能です。主に5つの機能があり、それぞれの概要は次のとおりです。


1.排他制御
同時更新によって更新及び削除結果に矛盾が発生する場合があります。これを防止するために排他制御によりタイミングの制御を行います。


2.再編成
データベースに対して追加・更新・削除を繰り返すと、再利用されない領域が発生します。このような再利用出来ない領域が増えてくると、格納効率が低下したり処理速度が低下します。それらを回避するために、不連続な空き領域を再編成します。


3.障害回復
障害で失われたデータを復元します。


4.機密保護
アクセス権の管理やセキュリティ管理をします。


5.保全
障害からのデータの破壊を防ぎます。



今回は以上です。
データベースのお勉強記事はもう少し続けようかと思います。

picture要素が便利らしい / HTML5.1

HTML5.1からpictureという要素が使用可能になりました。今まで知らなかったのですが、これがなかなか便利らしいというので調べてまとめてみることにします。

ブラウザの対応状況

さて、HTML5.1から使用可能とのことでしたがブラウザの対応状況はどのような状況なのでしょうか。「Can I use...」で確認してみましょう。

f:id:somegoro:20170709033552p:plain

ふむ。。ここに表示されている全てのブラウザは対応済のようですね。HTML5.1が勧告されたのは2016年11月1日なのですが各社対応が早いものですね。


ではpicture要素を使うと何が出来るのか。

ピクセル密度に合わせた画像を自動で選択

picture要素を使うとデバイスピクセル密度を自動で認識して、それに合わせて画像を選択できるようになります。例を出すと、ピクセル密度AだったらB画像、ピクセル密度CだったらD画像ということができるようになります。


これだけだったら別に何も驚きはなく、今までもCSSあるいはjavascriptで出来ていたじゃないかと思われると思います。しかし、picture要素を使うとHTMLのみで上記のことが出来てしまうのです。CSSjavascriptも必要なくレスポンシブに画像を扱うことが出来る、それがpicture要素の革新的なことなのですね。


それでは使い方を見ていきます。

picture要素の使い方

picture要素の使い方はとてもシンプルです。今回は詳細にわかりやすく記載されているサイトを見つけましたので、そちらのリンクを貼らせていただきます。
picture要素 レスポンシブイメージ(画像内容の最適化) - TAG index


以上、picture要素のまとめでした。