2022年5月3日「開発前に知っておきたいデータベースのあれこれ」というイベントを開催しましたが、もっともっと「基本的なところから設計の基礎知識」までを丁寧にお伝えできればなぁ…と思い記事にしました。
「自分のアプリのDBってこれでいいのかな?」って思っている方もおられるようなので、少しでもお役に立てたら幸いです(*^^*)
- テーブル作ってデータ登録したら使えるし。でもって、検索して表示出来たら完璧や(^^♪
- 項目を並べてみたけど、これでいいの?
- 機能を増やしたら分からんようになってきた(;’∀’)
- 勉強はしてみたいけど、難しそうで( 一一)
って思ってる人たちに読んでもらいたい!
データベースってこんなのよ、ってことでこれからのアプリ制作のお役に立てたら(^_-)-☆
データベースについて
まずは自分の使っているデータベースを知る
データベースには型があります。
代表的なものはこちら。
階層型
木が枝分かれしているように、親に複数の子がぶら下がるモデルで会社の組織図のイメージ。
「ルート」を登録しておくのでデータをたどりやすく、検索スピードが速い、というメリットの反面、親データごとに子データを登録するので重複するというデメリットがある。
ネットワーク型
データを網目状に表す。重複データを持たずに、複数の親データと直接結びつけて管理できる。
階層型よりも効率的にデータ管理できるが、親:子が多対多の関係になるので管理が複雑になる。
リレーショナル型
行と列を持った二次元の表形式でデータを格納する。
複数の表を関連付けて複雑なデータに対応できる。
利便性がよく、現在最も多く使われている。
表のことをテーブル、行にあたるものをレコード、列にあたるものをカラム、各レコードのそれぞれの項目のことをフィールドと呼ぶ。
RDB(リレーショナルデータベース)って何?
RDBとは・・・
イメージできてますか?
例えば、のお話です。
書庫があって、そこにはたくさんの規則正しく分類された棚があって、棚にはたくさんのファイルが並べられています。
この書庫がデータベース、そして種類ごとに分類された棚ひとつひとつがテーブル、棚(テーブル)に収納されたファイルがレコードです。
ファイル(レコード)の中には書類(フィールド)が入っています。
そしてファイル(レコード)には連番(SEQ)やラベル(ID)がついていてその順番に並べられています。
データベースだけでは何もできない⁉
そうなんです!
データベースとは「ある目的や基準で集められたデータの集まり」で、データを登録・更新・検索ができる、という特徴があります。
つまり「データの集まり」なのでこれだけでは何もできません( 一一)
そこで、データベースを管理するためのシステムが必要になります。
これがDBMS(データベース管理システム)と呼ばれるもの。
DBMSはデータの登録・整理・検索の他にもデータに対する制限(数値やテキスト・日付・空白を許す)などデータに矛盾がないように整合性を保つ機能を持ちます。
また不正アクセスを防止するためのデータの暗号化やユーザーのアクセス権限などセキュリティに関わる機能、障害が起きたときにデータを復旧するしくみが備わっているものもあります。
DBMS(データベース管理システム)
先ほど例に出した書庫には管理人がいます。
それがRDBMS(リレーショナルデータベース管理システム)です。
私たちは棚(テーブル)やファイル(レコード)・書類(フィールド)の整理(登録・更新・検索など)を管理人(DBMS)に命令します。
- 新しいファイル(レコード)を棚(テーブル)に入れる(登録)
- ファイル(レコード)の中の書類(フィールド)の入れ換え(修正)
- いらないファイル(レコード)は捨てる(削除)
- 棚(テーブル)のファイル(レコード)から書類(フィールド)を取り出す(検索)
参考)代表的なリレーショナルデータベース管理システム(RDBMS)
SQL Server、OracleDB、MySQL、SQLite、PostgreSQLなどがあり、Microsoft OfficeのAcsessも仲間です。
RDBMSへの指示・命令はどうする!?
管理人(RDBMS)への命令は、日本語でも英語でもアラビア語でもなく SQL言語 というものになります。
※ SQLはリレーショナル型に使用する言語です。
SQL言語
ではでは、次にRDBMSに命令するための言語、SQL言語 についてのお話です。
ですが、その前に・・・(-。-)y-゜゜゜
RDBMS(リレーショナルデータベース管理システム)と対話の準備
RDBMSに命令してデータベースを操作するにはSQLコマンド(命令・指示のこと)を使います。
RDBMSとは、このコマンドを使って対話形式でやり取りします。
私:「住所変わったから、ユーザーテーブル3番の鈴木さんの住所”これ”に書き換えといてくれる?」
データベース管理人(RDBMS):「了解!」
って感じ(^^)v
ではどうやってコマンドをRDBMSに渡せばいいのでしょうか?
直接対話する
データベースへの接続は、コマンドが入力できるソフトを使って「データベースに接続する」コマンドを実行することでRDBMSと対話ができるようになります。
プログラムを使って対話する
プログラミング言語を使って書かれたプログラムとセットで使用することで対話する方法です。
NoCodeも同じです。
NoCodeツールの中に組み込まれているので、私たちからSQLコマンドは見えません。
私たちはコマンドではなく、ツールそれぞれの方法で命令を渡しています。
Bubbleで例えればWorkflow。
ここで私たちが書いた指示や命令を、私たちに見えないところでコマンドに置き換えて対話してくれています。
お待たせしました!SQL言語です!!
SQL言語で何ができるの?
- 新しいデータベースやテーブルの作成と削除
- データの追加・変更・削除・検索
- ユーザー権限の設定
SQL言語には基本構文という規則があります。
SQL言語の種類と構文
- DDL:データベースやテーブルを操作するための構文
CREATE文:データベース・テーブルを作成
ALTER文:データベース・テーブルの定義を変更
DROP文:データベース・テーブルの削除 - DML:レコードを操作するためのSQLの構文
SELECT文:レコード検索
INSERT文:レコード挿入
UPDATE文:レコード更新
DELETE文:レコード削除 - トランザクション制御:データの更新結果を途中で確認することができる仕組み
ROCK:複数の人が同時に、同じデータの更新ができないようにする
COMMIT:更新結果を確定
ROLLBACK:更新結果をキャンセル
SQLの基本文法
オプション
基本文法にいろいろなオプションを組み合わせて使用します。
- 全てまたは指定したカラムを取得
- 条件を指定する
- 件数を指定して取得する
- データをグループ化する
- 取得したデータを並べ替える
- 重複データを除いて取得する
- 演算子を使って取得する
>、<、=、<=、>=、<>、!=、BETWEEN、AND、OR、NOT、%、_、IS NULL、IS NOT NULL、IN、NOT IN などなど
計算式では、+、ー、*、/、% など - 関数を使う
データを使って何らかの処理をして、その結果を返す仕組みです。
数値関数、文字列関数、日付関数、集約関数、変換関数など
オプションを組み合わせることでいろんな処理ができるんですよ ♪
データベースのイメージはできたでしょうか?なんとなーくでも大丈夫。
さぁ、いよいよ次はデータベース設計です!
が、長くなるので今回はここまで( ^^) _旦~~
次も読んでね~(^^)/
sowaka
大阪市出身。 PEとして20年弱の経験。猫13匹と同居。2022年2月より大分県に移住。
田舎暮らしを満喫中も畑の管理に頭を悩ませ、犬・山羊・鶏を飼いたいと画策中。
Bubble、Softr、Airtable、Studio、Canvaでいろいろやってます。