リレーショナルスキーマって何ですか? 効率的なデータベースを作成するには?

常に他のものよりも効率的なデータベース構造というものは存在しません。 これは、格納されるデータの種類と量によって、データベースの最適な構造が変わるからです。

しかし、パフォーマンスに対して最適化されたデータベースの構築と、データ量に対して最適化されたデータベースの構築には、大きな違いがあります。 これは、保存、処理、およびメモリのコストが法外に高い場合に最適です。

これは、標準的な電子機器の場合ではなくなりましたが、プログラマや開発者がリレーショナル スキーマを使用したいと思う状況はまだ数多く存在します。 従来のコンピュータのユーザーにとっては、ストレージ、処理能力、およびメモリは安価ですが、量子コンピューティングの世界では、これらは非常に高価なものです。 たとえば、従業員や学歴は、キーバリューやグラフデータベースなどよりも、リレーショナルスキーマを使用して記述したほうが、関係のネットワークとして容易に考えることができます。 これらのデータベースは、一階論理と整合性のある言語と構造を用いて管理される。 これにより、実体の関係に基づいてデータベースを管理することができ、ボリュームに応じた整理が容易になる。

リレーショナル・スキーマとは、あるドメイン内のデータの構造を記述したメタデータを指す。 これは、データベースの設計図で、その構造がデータをテーブルに整理する方法を概説している。

たとえば、データベースに大企業の従業員レコードが含まれている場合、各従業員を強力なエンティティとして記述するエンティティ関係をこのように持つことができます。

  • Employee Name
  • ID Number
  • Address
  • Employee Skillset
  • Hiring Date
  • Years of Service

この例では、関係スキーマ データとして 2 つの属性を持っているはずです。 まず、テーブルの主キーである Employee 属性(すべてが従業員に関連しているため)と、異なる要素で構成される複合属性である Address 属性を持つことになります。

Address 属性は次の値で構成されます。

  • City
  • Street
  • Address number
  • Zip code

これがわかったら、エンティティ関係図から関係スキーマをマッピングする準備ができているはずです。 次のようになります。

  • Employee (Name, ID Number, Address Number, Street, City, Zip Code, Hiring Date)
  • Employee Skillset (ID Number, Skillset)

このリストから Years of Service が除外されていることに気が付くでしょう。 これは、現在の日付から Hiring Date を引くことで計算できる派生属性だからです。 リレーショナル スキーマでは、すべてのエンティティ タイプは独自のテーブルになり、すべての単一値属性はそのテーブル内の列になります。

弱いエンティティタイプをリレーショナルスキーマに変換する方法は、弱いエンティティタイプが独自のテーブルになり、強いエンティティの主キーがテーブルの外部キーとして機能することを除いて、上記のプロセスに似ています。 スキーマは次のようになります。

  • Employee (Name, ID Number, Address Number, Street, City, Zip Code, Hiring Date)
  • Dependent (Employee, Dependent ID, Name, Address)

この相関関係は Employee テーブル内の ID Number と Dependent テーブルの Employee エレメントの間に存在するものです。

  • 可能な基数には、1:1、1:M、1:N
  • 可能な程度には、単項、二項、三項があります。

上記の例をさらに進めると、従業員を新しい Department テーブルと結合して二項の 1:1 関係にできることがあります。 従業員が特定の部門を管理している場合、その従業員は部分参加者として記述でき、部門は全体参加者として記述されることになります。

関係スキーマは次のようになります。

  • Employee (Name, ID Number, Address Number, Street, City, Zip Code, Hiring Date)
  • Department (Manager ID Number, Department ID, Name, Address)

この場合、一部参加者の主キーが、合計参加者の外部キーになります。 マネージャーの ID 番号は、適切な従業員の ID 番号に関連付けられます。

これは、リレーショナル スキーマを作成する際の重要な部分を示しています。 バイナリ 1:1 リレーションシップの一方の参加者の主キーは、他方の参加者の外部キーになることができます。 上記の関係を説明する別の方法は、Employee の外部キーとして Manages を使用し、Department の主キー Department ID と相関させることです。

Binary 1:N リレーションの例としては、Subject を教える教師間の関係があります。 特定の教室では、教師はさまざまな学生に複数の科目を教えることができますが、すべての科目は教師と同じ関係を共有します。

上記のバイナリ 1:1 リレーションシップでは、すべての部門に一意のマネージャがありました。 このバイナリ 1:N リレーションシップでは、さまざまな数の生徒が同じ教師を共有することができます。 Teacherの主キーはTeacher IDになり、Teacherの下にあるSubjectの外部キーに関連付けられます。

バイナリM:Nリレーションシップを説明するために、学生がコースに登録することを想像してください。 Student を記述する新しいテーブルと Course を記述するもう 1 つのテーブルを作成します。

  • Student の外部キーは Student ID です。
  • Course の外部キーは Course ID です。

新しいテーブルの主キーは、各エンティティの外部キーの組み合わせになります。 (Student ID, Course ID)と表現することになります。 これは、個々の学生をコースにリンクする一意のバイナリ M:N リレーショナル スキーマです。

これは、ID がその性質上、リレーショナル データベースで外部キーとなる目的で作成されるため、機能します。

リレーショナル スキーマを使用して、自己参照関係を記述することができます。 たとえば、互いに結婚している 2 人の従業員は、Spouse 外部キーを特徴付けることができます。 これらの従業員の外部キーの両方について、参照は、各従業員のそれぞれのテーブルの主キーである、もう一方の従業員の Employee ID になります。 この場合、主キー・フィールド自体が同じテーブルの外部キーになります。 これは単項の 1:1 スキーマと同じです。

たとえば、部下のマネージャである社員は、自分の外部キーとしてマネージャを持つことができます。 この場合、Employee IDは同じテーブルの主キーになります。

M:N関係を自己参照するには、2つのテーブルが必要です。

ある製品またはサービスの品質を保証する責任を負う従業員を想像してみてください。 この関係は、EmployeeテーブルのEmployee IDと相関するように結合する外部キーとして、GuarantorとBeneficiaryの両方を含まなければならないでしょう。 保証人と受益者の両方は、新しく作成されたリレーショナル スキーマ テーブル内で主キーと外部キーとして機能します。

バイナリおよび単項の関係は、1 つまたは 2 つのテーブルでリレーショナル スキーマを使用して簡単に記述できますが、バイナリおよび単項の関係は、1 つまたは 2 つのテーブルでリレーショナル スキーマを使用して記述できます。

この新しいテーブルの主キーは、参加するすべてのエンティティの外部キーが一緒に追加されたものです。 これは、新しいテーブルには、相関する 3 つの外部キーが含まれている必要があることを意味します。

たとえば、医師と患者の関係は、実際には 3 つのエンティティで構成されています。 医師、患者、および薬です。 この関係をリレーショナル スキーマとして適切に記述するには、これらのエンティティそれぞれに外部キーを割り当て、それらを Prescription という名前の新しいテーブルに関連付ける必要があります。

これは、3 項テーブルが機能する方法を簡単に視覚化する方法です。 新しく作成された Prescription テーブルの主キーは (Doctor ID、Patient ID、Drug ID) です。

このアプローチにより、データベース マネージャーは、特定の薬剤の種類を説明し、それらを使用している患者の名前にすぐに関連付けられ、それらを処方した医師の名前を提供する処方箋の組織的アーカイブを作成することができます。 処方箋テーブルに次の予約または再処方日を追加することができます。 論理的には、Patient テーブルに生年月日、住所、およびその他の重要なリレーショナル データを追加したいと思うことでしょう。 SQLDBM を使用して、どのブラウザでもオンラインで MySQL データベースを作成する練習をすることができます。

コメントを残す

メールアドレスが公開されることはありません。