2

ウィキペディアによると

今日の裁判所予約

ここに画像の説明を入力

  • テーブルの各行は、ハード コート (コート 1) とグラス コート (コート 2) が 1 つずつあるテニス クラブのコート予約を表しています。
  • 予約は、その裁判所と裁判所が予約されている期間によって定義されます
  • さらに、各予約には料金タイプが関連付けられています。4 つの異なる料金タイプがあります。
    • SAVER、メンバーによるコート 1 の予約の場合
    • STANDARD、非会員によるコート 1 予約の場合
    • PREMIUM-A、会員様がコート2をご予約の場合
    • PREMIUM-B、非会員によるCourt 2予約用

テーブルのスーパーキーは次のとおりです。

  • S1 = {コート、開始時間}
  • S2 = {コート、終了時間}
  • S3 = {料金タイプ、開始時間}
  • S4 = {料金タイプ、終了時間}
  • S5 = {コート、開始時間、終了時間}
  • S6 = {料金タイプ、開始時間、終了時間}
  • S7 = {コート、料金タイプ、開始時間}
  • S8 = {コート、料金タイプ、終了時間}
  • ST = {Court, Rate Type, Start Time, End Time}、簡単なスーパーキー

上記の表では、開始時間と終了時間の属性に重複する値がありませんが、コート 1 とコート 2 の 2 つの異なる予約が同時に開始または終了する可能性があることを認めなければなりません。同時に。これが、{Start Time} と {End Time} がテーブルのスーパーキーと見なされない理由です。

S1 = {コート、開始時間}、スーパーキーはどうですか?

1 日目に、会員が 11:00 から 12:00 までコート 1 を予約し、2 日目に非会員が 11:00 から 12:00 までコート 1 を予約するとします。

テーブル内のレコードは {1,11:00,12:00, SAVER} および {1,11:00,12:00, STANDARD} になります。

明らかに、S1 = {Court, Start Time} はスーパーキーではありません。それとも私が間違っていますか?

4

1 に答える 1

2

この例は、テーブルが何を保持することになっているのかを理解するには、常識ではありますが、明言されていない仮定が含まれるため、適切な選択ではありません。テーブルが 1 日 (「今日」) だけのものであることを確認し、どの日も予約が重複しないことを推測します。つまり、コートの開始と終了の時間帯が同じコートの別の時間帯と重複することはありません。(テキストでは、異なるテーブル値を意味する異なる日について言及していますが、異なる値が異なる日にある必要があるかどうかは、例にとって重要ではありません。)

また、特に 3NF と BCNF の選択も不適切です。もちろん、3NF と BCNF に関連する特定の FD (機能の依存関係) とそれに関連する JD (結合の依存関係) の影響を受けます。ただし、予約が重複しないことは、3NF と BCNF とは無関係の別の制約です。

1 日目にメンバーが 11:00 から 12:00 までコート 1 を予約し、2 日目に非メンバーが 11:00 から 12:00 までコート 1 を予約するとします。

テーブルのが制約 (FD など) を「満たす」、制約を「受ける」、または制約を「持つ」、または制約がテーブルの値を「保持する」と言う場合、値が制約を真にすることを意味します。 . テーブル変数(ベース テーブル)についてこれを言うとき、すべてのデータベース状態で変数の値がそうであることを意味します。「今日」の現在の予約状況を説明するこのテーブルでは、特定の予約状況は約 1 日、つまり今日になります。したがって、見積もりに異なる日が含まれる重複の種類は、制約とは関係ありません。同様に、予約がどのように変更されたかに関係なく、同じ日の異なる時間からの各テーブル値は、制約自体を満たします。

このような状況では、テーブルのどの状態でも、指定された 4 つの列セットが CK (候補キー) です。

  • S1 = {コート、開始時間}
  • S2 = {コート、終了時間}
  • S3 = {料金タイプ、開始時間}
  • S4 = {料金タイプ、終了時間}

予約は重複しないため、これらの各列セットの下位行の値はそれらの列の下で一意です。したがって、それらはスーパーキーです。これは、それぞれの小さなサブセットには当てはまらないため、CK です。他の列セットには当てはまらないため、他の CK はありません。スーパーキーのすべてのスーパーセットはスーパーキーであるため、リストされている他のセットは他の (非 CK) スーパーキーです。

PSそのエントリーのトークページには、テニス/ブッキングの例とページ上の混乱についてのセクションがいくつかあります。このページには他にも悪い例があります。たとえば、非 BCNF 3NF 設計を BCNF 設計に再構築しますが、元の投影への標準的なロスレス分解によってではありません (元に結合します)。(新しいコラムを紹介します。) たとえば、依存関係の保存についても説明していますが、それは元の投影に分解する場合にのみ意味があります。

于 2016-02-16T23:03:18.680 に答える