サーチ…
概要
リレーショナル代数は本格的な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人々 や部門に参加 ( 選択 )