関係代数

リレーショナルデータベースシステムには、ユーザーがデータベースインスタンスをクエリするのを支援できるクエリ言語が装備されていることが期待されます。クエリ言語には、関係代数と関係論理の2種類があります。

関係代数

関係代数は手続き型クエリ言語であり、関係のインスタンスを入力として受け取り、関係のインスタンスを出力として生成します。演算子を使用してクエリを実行します。演算子は次のいずれかになりますunary または binary。それらは、関係を入力として受け入れ、関係を出力として受け入れます。関係代数は関係に対して再帰的に実行され、中間結果も関係と見なされます。

関係代数の基本的な操作は次のとおりです。

  • Select
  • Project
  • Union
  • 別の設定
  • デカルト積
  • Rename

これらすべての操作については、次のセクションで説明します。

操作(σ)を選択します

リレーションから、指定された述語を満たすタプルを選択します。

Notation- σ P(R)

どこ σ 選択述語を表し、 r関係の略です。pは、次のようなコネクタを使用できる命題論理式です。and, or, そして not。これらの用語では、− =、≠、≥、<、>、≤などの関係演算子を使用できます。

For example

σsubject = "database"(Books)

Output −件名が「データベース」である本からタプルを選択します。

σsubject = "database" and price = "450"(Books)

Output −件名が「データベース」で「価格」が450の本からタプルを選択します。

σsubject = "database" and price = "450" or year > "2010"(Books)

Output −件名が「データベース」で「価格」が450の本、または2010年以降に出版された本からタプルを選択します。

プロジェクト運営(∏)

指定された述語を満たす列を投影します。

表記法−∏ A 1、A 2、A n(r)

Aどこに1、A 2、A nは関係の属性名ですr

リレーションはセットであるため、重複する行は自動的に削除されます。

For example

subject, author (Books)

リレーションBooksからsubjectおよびauthorという名前の列を選択して投影します。

ユニオンオペレーション(∪)

これは、2つの与えられた関係の間でバイナリ和集合を実行し、次のように定義されます。

r ∪ s = { t | t ∈ r or t ∈ s}

Notation − r U s

どこ r そして s データベースリレーションまたはリレーション結果セット(一時リレーション)のいずれかです。

和集合演算が有効であるためには、次の条件が満たされている必要があります-

  • r、および s 同じ数の属性が必要です。
  • 属性ドメインは互換性がなければなりません。
  • 重複するタプルは自動的に削除されます。
author (Books) ∪ ∏ author (Articles)

Output −本または記事、あるいはその両方を書いた著者の名前を投影します。

セット差(−)

セット差分演算の結果はタプルです。タプルは1つの関係に存在しますが、2番目の関係には存在しません。

Notationrs

に存在するすべてのタプルを検索します r しかし、 s

author (Books) − ∏ author (Articles)

Output −本を書いたが記事は書いたことがない著者の名前を提供します。

デカルト積(Χ)

2つの異なる関係の情報を1つに結合します。

Notation −rΧs

どこ r そして s は関係であり、それらの出力は次のように定義されます。

rΧs= {qt | q∈rおよびt∈s}

σauthor = 'tutorialspoint'(Books Χ Articles)

Output −tutorialspointによって作成されたすべての本と記事を表示する関係を生成します。

名前の変更操作(ρ)

関係代数の結果も関係ですが、名前はありません。名前の変更操作により、出力リレーションの名前を変更できます。「名前の変更」操作はギリシャ文字の小文字で示されますrho ρ

Notation- ρ X(E)

表現の結果 E の名前で保存されます x

追加の操作は次のとおりです。

  • 交差点を設定する
  • Assignment
  • 自然結合

関係論理

関係代数とは対照的に、関係論理は非手続き型のクエリ言語です。つまり、何をすべきかを指示しますが、その方法を説明することはありません。

関係論理は2つの形式で存在します-

タプル関係論理(TRC)

タプル上の変数範囲のフィルタリング

Notation− {t | 状態}

条件を満たすすべてのタプルTを返します。

For example

{ T.name |  Author(T) AND T.article = 'database' }

Output −「データベース」に記事を書いた著者から「名前」のタプルを返します。

TRCは定量化できます。Existential(∃)とUniversal Quantifiers(∀)を使用できます。

For example

{ R| ∃T   ∈ Authors(T.article='database' AND R.name=T.name)}

Output −上記のクエリは、前のクエリと同じ結果になります。

ドメインリレーショナル計算(DRC)

DRCでは、フィルタリング変数は、タプル値全体ではなく属性のドメインを使用します(前述のTRCで行われたように)。

Notation

{a 1、a 2、a 3、...、a n | P(a 1、a 2、a 3、...、a n)}

ここで、a1、a2は属性であり、 P 内部属性によって作成された式を表します。

For example

{< article, page, subject > |  ∈ TutorialsPoint ∧ subject = 'database'}

Output −関係TutorialsPointから記事、ページ、および件名を生成します。件名はデータベースです。

TRCと同様に、DRCも実存的および全称記号を使用して記述できます。DRCには関係演算子も含まれます。

タプル関係論理とドメイン関係論理の表現力は関係代数に相当します。