PHP と MySQL の学習ノート 8: 重要な概念と Web データベースの設計
1. ストレージ エンジン
MySQL は、「テーブル タイプ」とも呼ばれる、さまざまな「ストレージ エンジン」をサポートしています。各テーブルは異なるストレージ エンジンを使用でき、簡単に変換できます。
テーブルの作成時にテーブル タイプを選択できます:
CREATE TABLE table TYPE = type....
テーブル タイプを変更します:
alter table order type = innodb; 1) MyISAM、デフォルトのタイプ
これは、レコードとファイルを格納するための標準的な方法である Indexed Sequential Access Method の略称である従来の ISAM タイプに基づいています。
MyISAM にはテーブルのチェックと修復のためのほとんどのツールがあり、テーブルを圧縮でき、全文検索がサポートされています。ただし、トランザクションは安全ではなく、外部キーはサポートされていません。
2) InnoDB
このタイプのテーブルはトランザクション セーフです。つまり、COMMIT 関数と ROLLBACK 関数を提供します。 InnoDB は外部キーをサポートしています。 MyISAM テーブルよりも遅いですが、アプリケーションがトランザクションセーフなストレージ エンジンを必要とする場合にお勧めします。
注: ほとんどの Web アプリケーションでは、通常、MyISAM テーブルまたは InnoDB テーブル、または両方の組み合わせが使用されます。
3) MEMORY (以前の HEAP)
このタイプのテーブルはメモリに格納され、テーブルのインデックスはハッシュ分散されます。
推奨事項: 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 機能も使用する必要があります。
2. トランザクション
トランザクションは、特にエラーやサーバーのクラッシュが発生した場合に、データベースの一貫性を確保するためのメカニズムです。
例えば、銀行振込の場合、ある口座から減額し、別の口座から増額する操作が完全に完了していることを確認するなど。
ACID 原則では、トランザクション セキュリティの 4 つの要件について説明します。
アトミック性 (原子性) --- トランザクションはアトミックである必要があり、全体として完全に実行されるか、まったく実行されない必要があります。
分離 --- 不完全なトランザクションはデータベースの他のユーザーに表示されません。つまり、トランザクションが完全に完了するまで分離されます。
耐久性 --- 一度データベースに書き込まれたトランザクションは永続的かつ持続可能でなければなりません。
注: データベースに永続的に書き込まれるトランザクションは、コミットされたと言われます。データベースに書き込まれないトランザクション (したがって、データベースはトランザクションの開始前の状態に状態をリセットします) はロールバックされると言われます。
3. リレーショナル データベース
通常のファイルの代わりにリレーショナル データベースを使用する利点:
2) リレーショナル データベースを使用すると、特定の条件を満たすデータのクエリと抽出が簡単になります。
3) リレーショナル データベースには、同時アクセスを処理するための特殊な組み込みメカニズムが備わっています。
4) リレーショナル データベースはデータへのランダム アクセスを提供できます
5) リレーショナル データベースには権限システムが組み込まれています。
4. リレーショナル データベースのいくつかの基本概念
1) リレーショナル データベースは、通常「テーブル」と呼ばれる「リレーション」で構成されます
2) 列
「列」は「」とも呼ばれますフィールド" " または "属性"
各列には一意の名前と、関連付けられたデータ型があります。
3) 行
各行は同じ形式を持ち、同じ属性も持ちます。行は「レコード」とも呼ばれます。
4) 値
各値は、列で定義されたデータ型と同じである必要があります。
5) キー
それぞれの特定のレコードを識別する方法が必要です。
テーブル内のフラグ列が「キー」または「主キー」になります。
データベースは複数のテーブルで構成されており、キーはテーブル間の参照として使用できます。 6) スキーマ
データベース内のテーブルのセット全体の完全な設計は、データベースの「スキーマ」と呼ばれます。データベースの設計図です。
データの意味を解析するためにサンプル データを含めることができます。
7) 関係
リレーショナル データベースには、1 対 1、1 対多、および多対多の 3 つの基本的な関係タイプがあります。
新しいテーブルがいつ必要になるか、どのキーが必要になるかを知るには、高度なスキルが必要です。しかし、ほとんどの場合、従うべき基本原則がいくつかあります。
2) 冗長なデータを避ける
冗長なデータは 2 つの主な問題を引き起こします:
a. スペースの無駄
b.更新に一貫性がないと、データの整合性が失われます。 (変更、挿入、削除時に発生しやすい)
c. アトミックな列値を使用する: 各行の各属性には 1 つのデータのみが保存されます。
複数のデータ値をグリッドに保存したい場合、実際にはテーブル内にテーブルを作成するのと同じことになります。このように、システムは一致するフィールドを計算するだけでなく、各属性値を分析して一致するかどうかを確認する必要があります。システムに一致が含まれています。したがって、それは状況によります。
d. 意味のあるキーを選択します
e. データベースに尋ねる必要がある質問について考え、データベースにどのような質問に答えてもらいたいかを考え、必要なデータがすべてデータベースに存在することを確認します。適切な関連付け。
f. 複数の空の属性の設計を避けます。
データベースに null 値がたくさんあり、問題があります。まず、スペースの無駄です。次に、列の合計を数えたり、他の数値列に計算関数を適用したりするときにエラーが発生する可能性があります。また、ユーザーがテーブルの一部が空であることを確認したときも同様です。また、混乱を招くため、属性が無関係であるためなのか、データベースにエラーがあるのか、それともデータがまだ入力されていないためなのかがわかりません。
5. テーブルの種類の概要
1) 現実世界のオブジェクトを記述する単純なテーブル
2) 2 つの現実世界のオブジェクト間の多対多の関係を記述する関連テーブル。
6. Web データベース アーキテクチャ
通常、Web サーバー ソフトウェア、PHP エンジン、およびデータベース サーバーはすべて同じマシン上で実行されます。ただし、セキュリティ、パフォーマンス、負荷分散の理由から、データベース サーバーが別のマシンで実行されることも一般的です。 アプリケーションのサイズと複雑さが増大し続けるため、通常、これには、MySQL と対話するデータベース層、アプリケーションのビジネス ロジックを含む層、HTML 出力を管理する層が含まれます。プレゼンテーション層。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。
