問題タブ [tuple-relational-calculus]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
view - 関係計算のビュー
リレーショナル計算でビューを定義して、複雑なクエリをいくつかの小さなクエリに分割できるかどうか疑問に思っていました。それとも、複合クエリとして大きなクエリを作成する必要がありますか?
relational-database - タプルリレーショナル計算で「のみ」と「すべて」の制約を理解しようとする
3 つのスキーマがあるとします。
Instructor(
id:integer
, name:string, age:integer, salary:real)
Works(
eid:integer, did:integer
, pct-time:integer)
Dept(
did:integer
, budget:real, managerid:integer)
2 つの同様の問題を示すことから始めましょう。
a) 予算が 100 万ドルを超えるすべての部門を管理するインストラクターのマネージャー ID を検索します。
b) 予算が 100 万ドルを超える部門のみを管理するインストラクターのマネージャー ID を検索します。
u=[managerid] = s[managerid]
私の問題は、制約とu[budget] > 1000000
制約が切り替わる理由がわからないことです。順序が結果に影響する理由を誰かが言葉で説明できますか?
database - 2 つの主キーによって識別される値のデータベース設計
event_id、role_id、およびランクのテーブルがあります。次の表は、制約に関して予想されるさまざまな結果を視覚化するのに役立ちます。
Event_Id は、イベント テーブルの主キーです。
Role_Id は Role テーブルの主キーです。
イベントと役割を使用して、その特定のイベントのその役割に関連付けられているランクを見つけます。
役割は、異なるランクの複数のイベントで使用できます (シナリオ 1 および 3)
。ただし、2 つの役割が同じイベントに対して同じランクであってはなりません。(シナリオ 1 および 2)
特定のイベントで特定の役割のランクを識別できるように、これらの制約をどのように確立できますか?ただし、役割のランクはそのイベント内でのみ一意です。
quantifiers - 量指定子によってバインドされたタプル変数は、'|' の左側にありますか? タプルリレーショナル計算で?
Tuple Relational Calculus の一般式の引用 (Fundamentals of Database Systems - Elmasri, Navathe; 第 6 版)
タプル関係計算の一般的な表現は、
{t1.Aj, t2.Ak, ..., tn.Am | COND(t1, t2, ..., tn, tn+1, tn+2, ..., tn+m)}
ここで、t1, t2, ..., tn, tn+1, ..., tn+ m はタプル変数、各 Ai は ti が範囲とする関係の属性、COND はタプル関係計算の条件または式です。式は、次のいずれかの述語計算アトムで構成されます。
1. R(ti) 形式のアトム。ここで、R は関係名で、ti はタプル変数です。このアトムは、タプル変数 ti の範囲を、R という名前のリレーションとして識別します。ti がリレーション R のタプルである場合は TRUE と評価され、それ以外の場合は FALSE と評価されます。
2. ti.A op tj.B の形式のアトム。ここで、op はセット {=、<、≤、>、≥、≠} の比較演算子の 1 つです。ti と tj はタプル変数で、A はは ti の範囲の関係の属性であり、B は t の範囲の関係の属性です。ti.A op c または c op tj.B の形式のアトム。ここで、op はセット {=、<、≤、>、≥、≠} の比較演算子の 1 つです。ti と tj はタプル変数 A です。は ti の範囲の関係の属性、B は tj の範囲の関係の属性、c は定数値です。
*編集(philipxyに感謝):上記の一般的な表現に関するTRCのクエリの意味は、
{t|p} の場合 -- 「このようなクエリの結果は、COND(t) を TRUE に評価するすべてのタプル t のセットです」。{t.a1,t.a2,...|p} について -- 「まず、選択されたタプル t ごとに要求された属性 […] を指定します。次に、バーに続くタプルを選択するための条件を指定します」。
との記載もありますが、
タプル関係計算式で自由なタプル変数は、棒グラフ (|) の左側にあるものだけです。
たとえば、Students(id, grade) というリレーションを考えてみましょう。「最高の成績を収めたすべての学生の ID」を見つけたいとします。Tuple Relational Calculus で指定されたクエリは、
Q1 = {s1. ID | 生徒(s1) ^ ¬(∃ s2, 生徒(s2) ^ ( s2.学年 > s1.学年) )}
ここで、s1 は自由変数です。
Q1 は、タプル変数 s1 のすべての id 値として解釈できます。ここで、s1 は学生の関係内にあり (つまり、s1 は学生に属します)、かつ、s2 が学生に属し、s2.grade > s1.grade となるような変数 s2 は存在しません。
Q2 = {s1
.
ID | ∃ s1, 生徒(s1) ^ ¬(∃ s2, 生徒(s2) ^ ( s2.学年 > s1.学年) )}
と
Q3 = {s1. ID | ∀ s1, 生徒(s1) ^ ¬(∃ s2, 生徒(s2) ^ ( s2.学年 > s1.学年) )}
ご覧のとおり、Q2 と Q3 の s1 (バーの左側の変数) も、それぞれ ∃ と ∀ によって制限されています。
Q2とQ3が可能であると仮定すると、Q2とQ3の解釈はQ1とどのように異なりますか?
ノート:
- クエリ Q2 と Q3 は、'|' の左側の変数が変数の場合にクエリが何を意味するかを理解しようとする目的で、Q1 から作成されました。存在または普遍的な数量詞によって拘束されていました。
- (編集、もう少し考えた後) Q2 と Q3 の私の解釈は、Q2 と Q1 の結果は
同じになるだろう Q2 がすべてを生成するのと同じではないということです学生に属し、s2 が学生に属し、s2.grade > s1.grade であるような s2 が存在しない少なくとも 1 つの s1 が存在する場合、s1 の id 値 (つまり、Q2 の結果は「すべての学生のセット」最高の成績を収めた学生が少なくとも 1 人存在する場合は id")。Q3 は、学生に属し、s2 が存在しないすべての s1 について、s2 が学生に属し、s2.grade > s1.grade である場合 (つまり、Q3 の結果は「一連のすべての学生が最高の成績を取得した場合は、すべての学生 ID")。しかし、クエリ Q2 と Q3 が可能であるかどうか、またはバーの左側の変数も量指定子によって制限されるようなシナリオが一般的に発生する可能性があるかどうかはわかりません。