sql >> データベース >  >> RDS >> Mysql

主キーの値を変更する場合、従属列の値を変更する必要がないのはなぜですか?

    TL; DR Item / AがPK(主キー)であるということは、Item/A値ごとにSupplier/B値が1つしかないことを意味します。テーブルごとに値が1つしかないというわけではありません。

    そのビデオはナンセンスです。彼らはあなたの質問と同じ「依存性」とFD(機能依存性)とPKについての誤解や他の多くの誤解に苦しんでおり、彼らは彼らが何について話しているのかわかりません。大学/大学の教科書、スライド、および/またはコースを検索します(その多くはオンラインで無料です)。

    テーブルのFD、スーパーキー、一意の列セット、CK(候補キー)、およびPKについて話すことができます またはテーブル変数 。特定のビジネス/アプリケーションで発生する可能性のあるすべてのテーブル値にインスタンスとして含まれている場合、テーブル変数にはこれらのいずれかのインスタンスが含まれます。

    決定されたセットが決定セットの特定の値ごとに1つの値しか持てない場合、列セットは機能的に別の列セットに依存します。

    しかし、それは異なる決定値が異なる決定値を持っていることを意味するものではありません。

    スーパーキーは、行ごとに異なるサブ行の値を持つ列のセットです。 CKは、小さいスーパーキーを含まないスーパーキーです。 PKは、PKとして選択したCKです。 すべて 列セットは機能的にすべてのスーパーキーに依存します。そのうちのいくつかはCKです。そのうちの1つはPKです。

    ただし、これは、一部のサブ行がその他であることを意味するものではありません。 スーパーキー/CK/ PK(およびすべて サブロー必須 定義上、機能的にそれらに依存している)はユニークです。

    AがPK/CKであることに基づくものではありません。 PK / CKであるということは、AとAのすべてのスーパーセットが一意であることを意味します。別の行を表示したり、その行のA値が異なる別のテーブル値を表示したりするという意味で「Aを変更」した場合(どちらのテーブルの他の行にも含めることはできません)、そうではありません。 Bの可能性を制限します。

    いくつかのその他 制約により、Bの可能性が制限される場合があります。たとえば、FD {Supplier}-> {Supplier Phone}が成立する場合、PKであるアイテムがそうでない場合でも、他の行にあるSupplierPhoneを制限します。

    特定のFDが保持されるかどうかは、特定の状況でテーブルに入る予定の行と、発生する可能性のある状況によって異なります。次に、FDが保持するものによって、スーパーキーとCKが何であるかが決まります。次に、CKをPKとして選択できます。



    1. JavaからMySQLストアドプロシージャを実行できません

    2. Dockerコンテナ内で実行されているPostgreSQLを監視する方法:パート2

    3. ノードMySQLエスケープLIKEステートメント

    4. PHP-MySQLアクセス拒否エラー-他のプログラムで動作します