MySQL データベース、入門から習熟まで: 第 2 部 - MySQL リレーショナル データベースと非リレーショナル データベースの比較


ディレクトリ階層

MySQL データベース、入門から習熟まで: パート 1 - MySQL の概念の詳細説明
MySQL データベース、入門から習熟まで: パート 2 - MySQL リレーショナル データベースと非リレーショナル データベースの比較
MySQL データベース、入門から習熟まで: パート 3 - MySQLデータベースの仕様と基本的なクエリ ステートメント
MySQL データベース、入門から習熟まで: パート 4 - MySQL で一般的に使用される演算子とその使用法
MySQL データベース、入門から習熟まで: パート 5 - MySQL のソートと
ページングMySQL データベース、入門から習熟まで: パート 6— MySQL 複数テーブルのクエリ スキルを
包括的にマスターする (初心者から熟練者まで) MySQL データベース:
パート 7 — MySQL の単一行関数の応用 集計関数の実践的な探索:
MySQL データベースへの効率的なクエリを支援するための SELECT プロセスの最適化 (初心者からマスターまで): パート 9 - MySQL サブクエリ
MySQL データベース、初心者からマスターまで: 第 10 回 - MySQL テーブルの作成と管理ガイド
MySQL データベース、入門から習熟まで: 第 11 回 - MySQL データ処理の追加、削除、変更ガイド
MySQL データベース、入門から習熟まで:パート 12 - MySQL データ型の詳細な説明
MySQL データベース、入門から習熟まで: パート 13 - MySQL
MySQL データベースのデータ テーブル制約の詳細な説明、初心者からマスターまで: パート 14 - MySQL ビュー
MySQL データベースの詳細な説明、初心者から初心者からマスターまで: パート 15——
MySQL データベース上の MySQL ストアド プロシージャと関数の詳細な説明、初心者からマスターまで: パート 16 の記事——MySQL 変数、プロセス コントロール、カーソルについて
、入門から習得まで、MySQL データベースを詳細に説明: 記事 17 ——MySQLトリガーの使い方と注意点
MySQL データベース、入門から習熟まで: パート 18 - MySQL 8 の新機能の完全な分析

これで終わりです!


序文:

コンピュータ サイエンスにおける重要な概念であるデータベースは、データを保存および管理するためのソフトウェア システムです。最新のアプリケーションでは、データベースはデータを効率的に保存、取得、処理するのに役立つため、重要な役割を果たしています。データベースの世界では、リレーショナル データベースと非リレーショナル データベースの 2 つの最も一般的なタイプがあります。この記事では、これら 2 つのデータベースの基本概念と一般的なタイプを紹介し、リレーショナル データベースの設計ルールを詳しく説明します。

まとめ:

この記事では、リレーショナル データベースと非リレーショナル データベースの基本概念と一般的な種類、およびリレーショナル データベースの設計ルールを主に紹介します。データベースの分野では、リレーショナル データベースが最も一般的なタイプであり、複雑なクエリやトランザクションのサポートなどの利点があります。非リレーショナル データベースは、パフォーマンスが高く、コストが低いことで知られており、ログ収集、リーダーボード、タイマーなどのシナリオに適しています。リレーショナル データベースを設計するときは、テーブル、レコード、フィールド、およびテーブル間の関係を考慮する必要があります。この記事では、1 対 1 の関連付け、1 対多の関連付け、多対多の関連付け、および自己参照のテーブル作成原則についても紹介します。

パート 2_リレーショナル データベースと非リレーショナル データベース

1. RDBMS と非 RDBMS

ランキングを見ると、リレーショナル データベースが DBMS の主流であることは間違いなく、最もよく使用されている DBMS は Oracle、MySQL、SQL Server であることがわかります。これらはリレーショナル データベース (RDBMS) です。

1.1 リレーショナルデータベース(RDBMS)

1.1.1 物質


このタイプのデータベースは最も古いタイプのデータベースであり、リレーショナル データベース モデルは、複雑なデータ構造を単純なバイナリ関係 (つまり、2 次元テーブルの形式)に要約します。
ここに画像の説明を挿入
リレーショナル データベースは、ユーザーが理解しやすいようにデータを行と列の形式で保存します。この一連の行と列は SQL と呼ばれ、リレーショナル データベースのクエリ言語です。
ここに画像の説明を挿入

1.1.2 利点

複雑なクエリでは SQL ステートメントを使用して、1 つのテーブルと複数のテーブルの間で非常に複雑なデータ クエリを簡単に実行できます。
トランザクションのサポートにより、高いセキュリティ パフォーマンスでデータ アクセス要件を実現できます。

1.2 非リレーショナルデータベース(非RDBMS)

1.2.1 はじめに

非リレーショナル データベースは、従来のリレーショナル データベースの機能的に去勢されたバージョンとみなすことができます。キーと値のペアに基づいてデータを保存し、SQL 層で解析する必要はありません。パフォーマンスは非常に高くなります。同時に、使用頻度の低い機能を削減することで、パフォーマンスがさらに向上します。現在、主流の非リレーショナル データベースのほとんどは基本的に無料です。

1.2.2 非リレーショナル データベースとは

SQL と比較すると、NoSQL は一般に、キー/値データベース、ドキュメント データベース、検索エンジン、リスト上の列ストア、グラフ データベースなどの非リレーショナル データベースを指します。NoSQL という用語を使用する場合にのみ、これらのテクノロジーを含めることができます。

Key-Value データベース
Key-Value データベースは、Key-Value キーの形式でデータを保存します。Key と Value は、単純なオブジェクトまたは複雑なオブジェクトにすることができます。Key は一意の識別子であるため、検索速度が速いという利点があり、この点では明らかにリレーショナル データベースよりも優れていますが、欠点は、リレーショナル データベースのような条件付きフィルター (WHERE など) を使用できないことです。データを見つけるには、すべてのキーを反復処理する必要があり、多くの計算を消費します。

キー/値データベースの一般的な使用シナリオは、メモリ内キャッシュとしてです。Redis は最も人気のあるキー/値データベースです。
ここに画像の説明を挿入
ドキュメント データベース
このタイプのデータベースは、XML や JSON などの形式のドキュメントを保存および取得できます。データベースにおいて、ドキュメントは情報を処理するための基本単位であり、ドキュメントはレコードに相当します。文書データベースに格納される文書は、キーバリューデータベースに格納される「値」に相当します。MongoDB は
最も人気のあるドキュメント データベースです。その他、CouchDBなどもあります。検索エンジン データベースはインデックスを使用してリレーショナル データベースの検索効率を向上させますが、フルテキスト インデックスの効率は低くなります。検索エンジン データベースは、検索エンジンの分野で使用されるデータ ストレージの形式であり、検索エンジンは大量のデータをクロールして特定の形式で保存するため、検索時に最適なパフォーマンスが保証されます。中心となる原理は「逆インデックス」です。

代表的な製品: Solr、Elasticsearch、Splunk など。

列型データベース
列型データベースは行ベースのストレージに関連したデータベースです。Oracle、MySQL、SQL Server などのデータベースはすべて行ベースのストレージ (
行ベース) を使用しますが、列型データベースはデータベース内のデータを列に格納します。これは、
システムの I/O を大幅に削減できるため、分散ファイル システムに適していますが、機能が比較的限定されているという欠点があります。代表的な製品:HBaseなど
ここに画像の説明を挿入
グラフ データベース
グラフ データベースは、その名前が示すように、グラフの関係を格納するデータベースです。グラフ データ構造を使用して、エンティティ (オブジェクト) 間の関係を保存します。リレーショナル データは、明確な関係を持つデータを保存するために使用されますが、複雑な関係を持つデータ ストレージにはやや無力です。たとえば、ソーシャル ネットワークにおけるキャラクター間の関係は、リレーショナル データベースを使用すると非常に複雑になりますが、グラフ データベースを使用すると非常に簡単になります。
代表的な製品:Neo4J、InfoGridなど
ここに画像の説明を挿入

1.2.3 NoSQLの進化

SQL が常に DBMS の主流を占めてきたため、多くの人が SQL から離れられるデータベース テクノロジはないかと考え、NoSQL が生まれました。しかし、開発が進むにつれて、SQL はますます切り離せないことがわかりました。これまでのところ、NoSQL 陣営の DBMS は SQL に似た機能を備えています。以下は、さまざまな時代における「NoSQL」という用語の解釈です。これらの解釈の変化から、NoSQL 機能の進化がわかります。

1970年:NoSQL = SQLがない
1980年:NoSQL = SQLを知る
2000年:NoSQL = SQLがない!
2005:NoSQL = SQL だけじゃない
2013:NoSQL = いや、SQL!

NoSQLはSQLを補完するものであり、例えば実際の開発においてはビジネスニーズが多く、完全なリレーショナルデータベースの機能は必要なく、非リレーショナルデータベースの機能で十分です。この場合、パフォーマンスが高く、コストが低い非リレーショナル データベースを使用する方が賢明な選択であることは言うまでもない。例: ログ収集、リーダーボード、タイマーなど。

1.3 概要

NoSQL にはさまざまな分類がありますが、それでも DBMS ランキングでは SQL 陣営の割合が高く、上位 5 つの DBMS のうち 4 つがリレーショナル データベース、上位 20 の DBMS のうち 12 つがリレーショナル データベースです。したがって、SQL をマスターすることが非常に必要です。一連のコース全体は SQL を中心に展開します。

2. リレーショナルデータベースの設計ルール

データベースには複数のテーブルが存在することがあり、各テーブルにはそれ自体を識別するための名前があります。テーブル名は一意です。
テーブルには、Java や Python の「クラス」の設計と同様に、データをテーブルに格納する方法を定義するプロパティがあります。

2.1 テーブル、レコード、フィールド

ER (エンティティ-リレーションシップ、エンティティ-リレーションシップ) モデルには、エンティティ セット、属性、およびリレーションシップ セットという 3 つの主要な概念があります。エンティティ セット (クラス) はデータベース内のテーブル (table) に対応し、エンティティ (インスタンス)はデータベース テーブル内の
行 (row ) に対応し、レコード (レコード) とも呼ばれます。
属性 (attribute) は、データベース テーブルの列
(column)に対応し、フィールド (field) とも呼ばれます。
ここに画像の説明を挿入

ORM アイデア (オブジェクト リレーショナル マッピング) は以下を具体化します:
データベース内のテーブル <—>
Java または Python のクラス テーブル内のデータ <—> クラス内のオブジェクト (またはエンティティ)
テーブルの列 <--- - > クラス内のフィールド、属性(フィールド)

2.2 テーブル間の関係

テーブルとテーブル間のデータ レコードの間には関係があります。現実世界のさまざまなエンティティとエンティティ間のさまざまなリンクは、
リレーショナル モデルによって表現されます。
4: 1 対 1 の関連付け、1 対多の関連付け、多対多の関連付け、自己参照

2.2.1 1対1の関連付け(1対1)

1対1をテーブルとして作成できるため、実際の開発でのアプリケーションはそれほど多くありません。
例: 学生テーブルのデザイン: 学生番号、名前、携帯電話番号、クラス、学部、ID 番号、自宅の住所、出身地、緊急
連絡先など。

2 つのテーブルに分割: 2 つのテーブルのレコードは 1 対 1 に対応します。
基本情報テーブル(よく利用する情報):学籍番号、氏名、携帯電話番号、クラス、学科
ファイル情報テーブル(低頻度利用情報):学生番号、ID番号、自宅住所、出身地、緊急連絡先…

テーブル構築の 2 つの原則:
一意の外部キー: メイン テーブルの主キーとセカンダリ テーブルの外部キー (一意) は主キーと外部キーの関係を形成し、外部キーは一意です。
外部キーは主キーです。主テーブルの主キーと副テーブルの主キーは、主キーと外部キーの関係を形成します。
ここに画像の説明を挿入

2.2.2 1対多の関係

一般的なシナリオ例: 顧客テーブルと注文テーブル、カテゴリ テーブルと商品テーブル、部門テーブルと従業員テーブル。
例:
従業員テーブル: 番号、名前、...、部門 部門
テーブル: 番号、名前、紹介
1 対多のテーブル構築原則: スレーブ テーブル (マルチパーティ) にフィールドを作成し、フィールドはメインテーブルの主キーを指す外部キー(一方)ここに画像の説明を挿入

ここに画像の説明を挿入

2.2.3 多対多

多対多の関係を表すには、多くの場合結合テーブルと呼ばれる 3 番目のテーブルを作成する必要があります。このテーブルは、多対多の関係を 2 つの 1 対多の関係に分割します。両方のテーブルの主キーを 3 番目のテーブルに挿入します。
ここに画像の説明を挿入
例 1: 学生 - コース
学生情報テーブル: 1 行で学生の情報 (学生番号、名前、携帯電話番号、クラス、学科...) を表します。
コース選択情報テーブル: 学生は複数のコースを選択でき、コースは複数のコースを選択できます。複数の生徒が選択して使用する

学号 课程编号
1 1001
2 1001
1 1002

例 2: 製品と注文
「注文」テーブルと「製品」テーブルには、「注文詳細」テーブルと 2 つの 1 対多の関係を確立することによって定義された多対多の関係があります
1 つの注文に複数の商品を含めることができ、各商品が複数の注文に表示される場合があります。
Products テーブル: Products テーブルの各レコードは製品を表します。
Orders テーブル: Orders テーブルの各レコードは注文を表します。
注文詳細テーブル: 各製品は、「注文」テーブルの複数のレコードに対応することができます。つまり、複数の注文に表示されます。注文は、
「Products」テーブルの複数のレコードに対応することができます。つまり、注文には複数の製品が含まれます。
ここに画像の説明を挿入
例 3: ユーザー ロールの
多対多リレーションシップ テーブルの構築原則: 中央のテーブルに少なくとも 2 つのフィールドを持つ 3 番目のテーブルを作成する必要があります。これらの 2 つのフィールドは、それぞれの主キーを指す外部キーとして使用されます
。 。

2.3.4 自己参照

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_42055933/article/details/131138936