「WordPressで学ぶPHP(2)データ構造(配列・オブジェクト)編」を発売しました。
本書は「WordPressで学ぶPHP(1)変数・制御構造編」の続編にあたり、PHPの「データ構造」(配列とオブジェクト)について解説します。
配列やオブジェクトは、頭の中で考えるだけでは、イメージがつかみにくいです。本書では図を多用して、配列やオブジェクトをなるべく分かりやすく解説することを心がけました。
Kindle本で、定価250円です。
新刊「これだけは知っておきたい データベースの常識」発売
拙著新刊の「これだけは知っておきたい データベースの常識」が発売になりました。
技術評論社刊で、定価2,079円(消費税込)です。
データベースの基礎となる概念から、リレーショナルデータベースの考え方、SQLの基本的な書き方など、データベースとかかわることがある方なら知っておくべき事柄を解説しています。
以下のような方にぜひお勧めしたいです。
- IT関係の学校等でデータベースについて学ぶ学生の方
- データベースの知識を問われるコンピュータ系資格にチャレンジされている方
- CMS等を導入して、ある程度データベースについて知識が必要になったWebデザイナー等の方
本の目次は以下の通りです。
- 第1章 データベースの第一歩
- 1.1 データベースとは何か
- データとデータベース
- コンピュータ化されたデータベース
- 1.2 データベースとデータモデル
- データモデルとは
- 階層型データモデル
- ネットワーク型データモデル
- リレーショナルデータモデル
- 1.3 データベースの設計
- データベースの設計図「スキーマ」
- 3つのスキーマ
- スキーマを3階層にするメリット
- 1.4 最近のデータベースの流れ
- オブジェクト指向データベース
- XMLデータベース
- ORM
- 1.5 データベースの主なソフト
- 商用のリレーショナルデータベース
- オープンソースのリレーショナルデータベース
- 一般向けのリレーショナルデータベース
- 各種のデータベース
- 1.1 データベースとは何か
- 第2章 リレーショナルデータベースの考え方
- 2.1 「表」や「集合演算」が基本
- データを表形式で表す
- 集合演算でテーブルを組み合わせる
- リレーショナルデータベースに独自な「選択」「射影」「結合」
- null(ナル)について
- 様々な処理を組み合わせる
- リレーショナルデータベースとSQL
- 2.2 ER図(Entity-ralationship Diagram)でテーブルの関係を図示する
- ER図の必要性
- 実体(Entity)とは?
- 関連とは?
- 3種類の関連
- 2.3 テーブルの正規化
- 正規化するテーブルの例
- 1つの行/列に1つの値を入れる───第1正規形
- 主キーに部分関数従属する列を別テーブルに分ける───第2正規形
- 推移的に関数従属する列を別のテーブルに分ける───第3正規形
- その他の正規形
- 意図的に正規形を崩すこともある
- 2.4 結合のパターン
- 1対多結合
- 多対多結合
- 1対1結合
- 2.1 「表」や「集合演算」が基本
- 第3章 リレーショナルデータベースをコントロールする「SQL」
- 3.1 SQLの概要
- SQLの概要
- SQLの生い立ち
- DML/DDL/DCL
- 3.2 行を取り出す
- select命令でテーブルの行をすべて取り出す
- 射影を行う(テーブルから一部の列を取り出す)
- 選択を行う(一部の行を取り出す)
- 複数の条件を組み合わせて選択する
- 行の並べ替え
- 値が重複する行を除外する
- 3.3 テーブル内での計算や集計
- 列同士の計算
- 集計を行う
- グループ化して集計する
- 集計結果に条件を指定する
- 集計結果を並べ替える
- 3.4 テーブルを結合する
- 内部結合
- 外部結合
- 自己結合
- 結合のselect文の様々な書き方
- 3.5 副問い合わせと相関副問い合わせ
- 副問い合わせの概要
- where句の条件に副問い合わせを使う
- 副問い合わせの結果をテーブルのように扱う
- 相関副問い合わせの概要
- 3.6 テーブルの作成と行の挿入等の操作
- テーブルの作成───create table命令
- 行の作成───insert命令
- 行の内容の変更───update命令
- 行の削除───delete命令
- 3.1 SQLの概要
- 第4章 より高度なデータベース処理
- 4.1 ユーザ/権限/ロールの設定
- ユーザとは?
- ユーザ操作関係のSQL
- ユーザに権限を与える
- 権限操作関係のSQL
- 複数の権限を「ロール」にまとめる
- 4.2 ビューの作成
- ビュー(View)とは?
- ビューに関するSQL
- ビューの使い道
- 4.3 テーブルや列に制約を設定する
- 制約の概要
- 一意性制約
- 非null制約
- 主キー制約
- 検査制約
- 参照制約
- テーブル作成後の制約の追加と削除
- 4.4 インデックスで検索を高速化する
- インデックスとは?
- インデックスとB木
- 適切なインデックス付けが必要
- インデックスに関するSQL
- 4.5 データベース側で各種の処理を実行する───ストアドプロシージャ
- ストアドプロシージャの仕組み
- ストアドプロシージャのメリットとデメリット
- ストアドプロシージャの作成や実行
- 4.6 各種のタイミングで処理を自動的に行う───トリガ
- トリガの仕組み
- 文単位のトリガと行単位のトリガ
- トリガの連鎖(カスケード)
- トリガの作成や実行
- 4.7 トランザクションと障害対策
- 一連の処理が途中で失敗するとどうなる?
- トランザクションで処理を確実に行う
- ACID特性
- トランザクションの処理
- データベースの障害
- バックアップ/チェックポイント/ログ
- システム障害からの復旧
- 4.8 同時に多数のユーザがデータベースにアクセスできるようにする(同時実行制御)
- 2つの処理が同時にテーブルを更新するとどうなる?
- 「ロック」で問題を解決する
- ロック中にさらにロックをかけようとした場合(ロックの競合)
- ロックの細かさ(粒度)
- 二相(Two Phase)ロック
- デッドロック
- トランザクション分離レベルの指定
- 同時実行制御に関するSQL
- 4.9 複数のサーバにデータベースを分散する
- 分散データベース
- 分散データベースの要件
- サーバの分散形式
- テーブルの分割
- 分散問い合わせ処理とその効率化
- 分散トランザクション
- レプリケーション(複製)
- 4.10 インターネットとデータベース
- Webアプリケーションと3層クライアント・サーバシステム
- セキュリティの問題
- 4.1 ユーザ/権限/ロールの設定
- 第5章 データベース主要用語集