0

この問題を考えると:

geq「以上」を表す関係、つまり、y <xの場合にのみ(x、y)Egeqを考えます。

create table geq
( lb integer not null 
, ub integer not null
, primary key lb
, foreign key (ub) references geq on delete cascade )

タプル(x、y)が削除された場合、次のうちどれが可能ですか?

(a)z> yのタプル(z、w)が削除されます
(b)z> xのタプル(z、w)が削除されます

これが私がそれを解決しようとしている方法です:-

ub(上界)は外部キーであるため、タプル(x、y)では、yは外部キーです。テーブルgeq自体の外部キー(y)が参照されている場合、geqにはタプル(y、y')が必要です。

ここで、y>=xおよびy'>=yです。したがって、y'>=xです。

したがって、(z、w)を使用する代わりに、(y、y')を使用しました。

したがって、答えは、w> xのタプル(z、w)が削除されるということではありませんか?

(私は古いGATEペーパーを解決しようとしています)

4

2 に答える 2

0

問題は、'y <x'制約と組み合わされたNOTNULL可能外部キーです。すべての行に対して、数値的に小さいidを持つ行が存在する必要があります。

親のないノードの番兵値を作成するには、次の2つの方法があります。

  • リンクポインタをNULLに設定する
  • idと同じ値に設定してください。

コード例:

CREATE TABLE geq_one
    ( id INTEGER NOT NULL PRIMARY KEY
    , parent_id INTEGER  NOT NULL REFERENCES geq_one(id) ON DELETE CASCADE
    , CONSTRAINT younger_than_parent_one CHECK (parent_id <= id)
    )
        ;
INSERT INTO geq_one(id,parent_id) VALUES
(1,1) -- sentinel
, (2,1)
, (3,1)
        ;

CREATE TABLE geq_two
    ( id INTEGER NOT NULL PRIMARY KEY
    , parent_id INTEGER  REFERENCES geq_two(id) ON DELETE CASCADE
    , CONSTRAINT younger_than_parent_two CHECK (parent_id < id)
    )
        ;
INSERT INTO geq_two(id,parent_id) VALUES
(1,NULL) -- sentinel
, (2,1)
, (3,1)
        ;

DELETE FROM geq_one WHERE id = 1;
SELECT * FROM geq_one;

DELETE FROM geq_two WHERE id = 1;
SELECT * FROM geq_two;
于 2012-12-23T16:03:07.080 に答える
0

(x、y)∈geqの場合、x>yの場合のみ。関係を「以上」と呼ぶのは誤称です。理由は以下で説明します。

外部キーが上限(ub)であり、 xが外部キーであり、yがタプル(x、y)の主キーであることを意味します。外部キー宣言のon delete cascadeオプションは、レコードが削除されるたびに、削除されたレコードを参照するすべての子レコードも削除されることを意味します。

あなたの場合、タプル(x、y)を削除すると、(x、y)を参照するすべてのレコードも削除されます。

外部キーはubであるため、レコード(z、w)は、z = yの場合に限り、(x、y)の子になります。

したがって、(x、y)を削除して(z、w)をカスケード削除するには、次の条件が満たされている必要があります。

x≥y=z≥w (後で説明するように、これは正しくありません。)

したがって、あなたの問題に対する答えは、 (a)(b)も真ではあり得ないということです。また、あなたの結論(リストされたオプションにはありません)も正しくありません。wはw > xではなく、 ≤xでなければなりません。

実際、下限は主キーであるため、リレーション(a、a)に子レコードを含めることはできません。これは、主キーの違反が必要になるためです。したがって、レコードに子レコードを含めるには、上限が下限よりも厳密に大きくなければなりません。これは、上記の関係ステートメントがより適切であることを意味します。

y≠wであるため、x≥y = z> w

つまり、タプル(x、y)が削除されると、z = yまたはz≤xとなるようにタプル(z、w)をカスケード削除することが可能ある言えます

于 2012-12-23T15:30:27.940 に答える