PHP と MySQL の学習ノート 8: 重要な概念と Web データベースの設計

WBOY
リリース: 2016-06-23 13:15:15
オリジナル
832 人が閲覧しました

1. ストレージ エンジン

MySQL は、「テーブル タイプ」とも呼ばれる、さまざまな「ストレージ エンジン」をサポートしています。各テーブルは異なるストレージ エンジンを使用でき、簡単に変換できます。

テーブルの作成時にテーブル タイプを選択できます:

CREATE TABLE table TYPE = type....

テーブル タイプを変更します:

alter table order type = innodb; 1) MyISAM、デフォルトのタイプ

これは、レコードとファイルを格納するための標準的な方法である Indexed Sequential Access Method の略称である従来の ISAM タイプに基づいています。

MyISAM の機能:

MyISAM にはテーブルのチェックと修復のためのほとんどのツールがあり、テーブルを圧縮でき、全文検索がサポートされています。ただし、トランザクションは安全ではなく、外部キーはサポートされていません。

2) InnoDB

このタイプのテーブルはトランザクション セーフです。つまり、COMMIT 関数と ROLLBACK 関数を提供します。 InnoDB は外部キーをサポートしています。 MyISAM テーブルよりも遅いですが、アプリケーションがトランザクションセーフなストレージ エンジンを必要とする場合にお勧めします。

注: ほとんどの Web アプリケーションでは、通常、MyISAM テーブルまたは InnoDB テーブル、または両方の組み合わせが使用されます。


3) MEMORY (以前の HEAP)

このタイプのテーブルはメモリに格納され、テーブルのインデックスはハッシュ分散されます。

MEMORY テーブルは非常に高速に実行されますが、クラッシュが発生するとデータが失われます。

推奨事項: MEMORY テーブルは、一時データまたは派生データの保存に適しています。MAX_ROWS を CREATE TABLE ステートメントで指定する必要があります。そうしないと、これらのテーブルがすべてのメモリを消費する可能性があります。同様に、BLOB、TEXT、または AUTO INCREMENT 列に追加することはできません。

4) MERGE

これらのテーブルを使用すると、クエリ目的で MyISAM テーブルのコレクションを単一のテーブルとして扱うことができます。したがって、一部のオペレーティング システムでは、最大ファイル サイズ制限を回避できます。

5) アーカイブ

これらのテーブルは大量のデータを保存しますが、脚注 (フットプリント) はわずかです。このタイプのテーブルは、INSERT クエリと SELECT クエリのみをサポートします。 DELETE、UPDATE、REPLACE はサポートされていません。また、インデックスは使用されません。

6) CSV


これらのテーブルはサーバー上の単一のファイルに保存され、カンマで区切られたデータが含まれます。

Excel などのサードパーティ ツールで簡単に開くことができます。

推奨事項:

テーブルで多数の SELECT ステートメントと INSERT ステートメント (または両方の組み合わせ) を使用する場合は、MyISAM テーブルを使用する必要があります。これは、これら 2 つのコマンドを実行するときに MyISAM が最も高速であるためです。多くの Web プログラム (分類など) では、MyISAM が最良の選択です。全文検索機能が必要な場合は、MyISAM 機能も使用する必要があります。

InnoDB は、トランザクションが非常に重要な場合 (財務データの保存など)、または INSERT ステートメントと SELECT ステートメントがインターリーブされる場合 (オンライン 掲示板やフォーラム システムなど) に使用する必要があります。 InnoDB は、MySQL バージョン 5.6 でフルテキスト インデックスをサポートしているようです。

2. トランザクション

トランザクションは、特にエラーやサーバーのクラッシュが発生した場合に、データベースの一貫性を確保するためのメカニズムです。

トランザクションとは、データベース内で全体として実行されるか、まったく実行されないことが保証されている 1 つまたは複数のクエリです。これにより、トランザクションが完了したかどうかに関係なく、データベースは一貫した状態を維持できます。

例えば、銀行振込の場合、ある口座から減額し、別の口座から増額する操作が完全に完了していることを確認するなど。

ACID 原則では、トランザクション セキュリティの 4 つの要件について説明します。

アトミック性 (原子性) --- トランザクションはアトミックである必要があり、全体として完全に実行されるか、まったく実行されない必要があります。

一貫性 --- トランザクションはデータベースを一貫した状態にできる必要があります。

分離 --- 不完全なトランザクションはデータベースの他のユーザーに表示されません。つまり、トランザクションが完全に完了するまで分離されます。

耐久性 --- 一度データベースに書き込まれたトランザクションは永続的かつ持続可能でなければなりません。

注: データベースに永続的に書き込まれるトランザクションは、コミットされたと言われます。データベースに書き込まれないトランザクション (したがって、データベースはトランザクションの開始前の状態に状態をリセットします) はロールバックされると言われます。

3. リレーショナル データベース

通常のファイルの代わりにリレーショナル データベースを使用する利点:

1) リレーショナル データベースは、通常のファイルよりもデータ アクセス速度が高速です。

2) リレーショナル データベースを使用すると、特定の条件を満たすデータのクエリと抽出が簡単になります。

3) リレーショナル データベースには、同時アクセスを処理するための特殊な組み込みメカニズムが備わっています。

4) リレーショナル データベースはデータへのランダム アクセスを提供できます

5) リレーショナル データベースには権限システムが組み込まれています。


4. リレーショナル データベースのいくつかの基本概念

1) リレーショナル データベースは、通常「テーブル」と呼ばれる「リレーション」で構成されます


2) 列

「列」は「」とも呼ばれますフィールド" " または "属性"

各列には一意の名前と、関連付けられたデータ型があります。

3) 行

各行は同じ形式を持ち、同じ属性も持ちます。行は「レコード」とも呼ばれます。

4) 値

各値は、列で定義されたデータ型と同じである必要があります。

5) キー

それぞれの特定のレコードを識別する方法が必要です。

テーブル内のフラグ列が「キー」または「主キー」になります。

データベースは複数のテーブルで構成されており、キーはテーブル間の参照として使用できます。 6) スキーマ

データベース内のテーブルのセット全体の完全な設計は、データベースの「スキーマ」と呼ばれます。データベースの設計図です。

スキーマには、テーブルとその列、各テーブルの主キーと外部キーが表示される必要があります。


データの意味を解析するためにサンプル データを含めることができます。

7) 関係

リレーショナル データベースには、1 対 1、1 対多、および多対多の 3 つの基本的な関係タイプがあります。


4. Web データベースの設計

新しいテーブルがいつ必要になるか、どのキーが必要になるかを知るには、高度なスキルが必要です。しかし、ほとんどの場合、従うべき基本原則がいくつかあります。


1) 実際のモデル化されたオブジェクトと現実世界の対応するオブジェクトを考慮します

2) 冗長なデータを避ける

冗長なデータは 2 つの主な問題を引き起こします:


a. スペースの無駄

b.更新に一貫性がないと、データの整合性が失われます。 (変更、挿入、削除時に発生しやすい)

c. アトミックな列値を使用する: 各行の各属性には 1 つのデータのみが保存されます。

複数のデータ値をグリッドに保存したい場合、実際にはテーブル内にテーブルを作成するのと同じことになります。このように、システムは一致するフィールドを計算するだけでなく、各属性値を分析して一致するかどうかを確認する必要があります。システムに一致が含まれています。したがって、それは状況によります。

d. 意味のあるキーを選択します

e. データベースに尋ねる必要がある質問について考え、データベースにどのような質問に答えてもらいたいかを考え、必要なデータがすべてデータベースに存在することを確認します。適切な関連付け。

f. 複数の空の属性の設計を避けます。

データベースに null 値がたくさんあり、問題があります。まず、スペースの無駄です。次に、列の合計を数えたり、他の数値列に計算関数を適用したりするときにエラーが発生する可能性があります。また、ユーザーがテーブルの一部が空であることを確認したときも同様です。また、混乱を招くため、属性が無関係であるためなのか、データベースにエラーがあるのか​​、それともデータがまだ入力されていないためなのかがわかりません。

5. テーブルの種類の概要

1) 現実世界のオブジェクトを記述する単純なテーブル

2) 2 つの現実世界のオブジェクト間の多対多の関係を記述する関連テーブル。


6. Web データベース アーキテクチャ


通常、Web サーバー ソフトウェア、PHP エンジン、およびデータベース サーバーはすべて同じマシン上で実行されます。ただし、セキュリティ、パフォーマンス、負荷分散の理由から、データベース サーバーが別のマシンで実行されることも一般的です。 アプリケーションのサイズと複雑さが増大し続けるため、通常、これには、MySQL と対話するデータベース層、アプリケーションのビジネス ロジックを含む層、HTML 出力を管理する層が含まれます。プレゼンテーション層。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート