サーチ…


概要

リレーショナル代数は本格的なSQL言語ではなく、リレーショナル処理の理論的理解を得る方法です。したがって、テーブル、レコード、フィールドなどの物理的なエンティティへの参照は行わないでください。リレーション、タプル、アトリビュートなどの抽象構文を参照する必要があります。それを言って、私はこの文書の学術用語を使わず、より広く知られているテーブル、レコード、フィールドという用語に従います。

関係する代数の2つのルールが始まる前に:

  • リレーショナル代数で使用される演算子は、個々のレコードではなくテーブル全体を処理します。
  • リレーショナル式の結果は常にテーブルになります(これはクロージャプロパティと呼ばれます

この文書では、次の2つの表を参照します。

表の例

セレクト

select演算子はメインテーブルのサブセットを返します。
<table>を選択します <condition>

たとえば、次の式を調べます。

人々を選択する 場所のDepartmentID = 2

これは次のように書くことができます:
ここに画像の説明を入力

これにより、 DepartmentID値が2のPeopleテーブル内のすべてのレコードからなるレコードが含まれるテーブルが作成されます。
ここに画像の説明を入力

条件を結合して、式をさらに制限することもできます。

人々を選択する 場所 StartYear> 2005年のDepartmentID = 2

次の表が表示されます。
ここに画像の説明を入力

プロジェクト

プロジェクト演算子は、テーブルから個別のフィールド値を返します。
プロジェクト <table> over <field list>

たとえば、次の式を調べます。
StartYearを超える人々 プロジェクト する

これは次のように書くことができます:
ここに画像の説明を入力

これにより、 PeopleテーブルのStartYearフィールドに保持されている個別の値で構成される表が作成されます。
ここに画像の説明を入力

リレーショナル表を作成するクロージャー特性のため、結果の表から重複した値が除去されます。リレーショナル表のすべてのレコードは区別する必要があります。

フィールドリストに複数のフィールドが含まれている場合、結果の表はこれらのフィールドの異なるバージョンです。
プロジェクト開始日過ぎた人、DepartmentIDは返信します:
ここに画像の説明を入力
2006年のStartYearと1つのDepartmentIDが重複して1つのレコードが削除されます。

贈る

関係式は、個々の式にgivingキーワードを使用して命名するか、別の式の中にある式を埋め込むことによって、連鎖させることができます。

<関係代数式> 与える <エイリアス名>

たとえば、次の式を考えます。
Aを与えるのDepartmentID = 2 を選択し人々
B を与える PersonName に対する プロジェクト A

これにより、表Aが最初の式の結果である下の表Bが得られます。
ここに画像の説明を入力

最初の式が評価され、結果の表に別名Aが与えられます。この表は2番目の式の中で使用され、最終表に別名Bが付けられます。

この式を書き込むもう1つの方法は、2番目の式のテーブルエイリアス名を、最初の式のテキスト全体を大括弧で囲んで置き換えることです。
Bを与える PersonNameのオーバー プロジェクトどこのDepartmentID = 2名を選択

これは入れ子式と呼ばれます

NATURAL JOIN

ナルジョインは、テーブル間で共有される共通フィールドを使用して2つのテーブルを結合します。

<table 1> <table 2>を結合します <field 1> = <field 2>
<field 1>が<table 1>にあり<field 2>が<table 2>にあるとします。

たとえば、次の結合式は、それぞれの表のDepartmentID列とID列に基づいてPeopleおよびDepartmentsを結合します。
DepartmentID = IDの人部署 参加する

ここに画像の説明を入力

PeopleテーブルのDepartmentIDのみが表示され、 DepartmentテーブルのIDは表示されません。比較されるフィールドの1つのみが表示される必要があります。これは、通常、結合操作の最初のテーブルのフィールド名です。

この例には示されていませんが、テーブルを結合すると、同じ見出しを持つ2つのフィールドが表示される可能性があります。たとえば、 Nameという見出しを使用してPersonNameフィールドとDeptフィールドを識別した場合(つまり、Person NameとDepartment Nameを識別する場合)この状況が発生すると、表名を使用して、ドット表記を使用してフィールド名を修飾します。People.NameおよびDepartments.Name

選択と組み合わせ参加し、 プロジェクトが情報を引き出すために一緒に使用することができます。

DepartmentID = ID を指定 する部署 参加する
StartYear = 2005 および DEPTは= '生産'はBを与えて Aを選択
C を与える PersonName に対する プロジェクト B

または組み合わされた表現として:

プロジェクト PersonNameのオーバー Cを与える (StartYear = 2005 および DEPTは= '生産'はどこ )のDepartmentID = ID人々 部門に参加選択

これはこの表になります:
ここに画像の説明を入力

エイリアス

分割

連合

交差点

UPDATE(:=)

時代



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow