Mysql
 sql >> база данни >  >> RDS >> Mysql

Ако променим стойността на първичен ключ, защо не трябва да променим стойността на зависима колона?

TL;DR Артикул/А е PK (първичен ключ) означава, че има само една стойност на Доставчик/Б за стойност на Артикул/А. Не се казва, че има само една стойност на таблица.

Това видео е глупост. Те страдат от същите погрешни схващания относно "зависи" &FDs (функционални зависимости) &PKs като вашия въпрос (така че може би оттам сте ги взели) и много други погрешни схващания и те не знаят за какво говорят. Намерете учебник за колеж/университет, слайдове и/или курс (много от които са безплатни онлайн).

Можем да говорим за FD, суперключове, уникални набори от колони, CKs (кандидат ключове) и PK на таблица стойност или таблица променлива . Таблица променлива има екземпляр на едно от тези неща, ако всяка стойност на таблицата, която може да възникне в даден бизнес/приложение, я има като екземпляр.

Набор от колони е функционално зависим от друг, когато определеният набор може да има само една стойност на дадена стойност на определящия набор.

Но това не означава, че различните определящи стойности имат различни определени стойности.

Суперключът е набор от колони, който има различна стойност на подреда във всеки ред. CK е суперключ, който не съдържа по-малък суперключ. PK е някакъв CK, който сте избрали да бъде PK. Всеки наборът от колони функционално зависи от всеки суперключ. Някои от които са CKs. Един от които може да бъде PK.

Но това не означава, че някои подбират други отколкото суперключ/CK/PK (и всеки subrow трябва бъде функционално зависим от тях по дефиниция) е уникален.

Не на базата на това, че А е PK/CK. Едно същество PK/CK предполага, че A и всяко супермножество от A е уникално. Ако „промените A“ в смисъл да разглеждате различен ред или да разглеждате различна стойност на таблицата, която има различна стойност A за този ред (която не може да бъде в нито един друг ред от която и да е таблица), това не ограничи какво може да бъде B.

Някои други ограничението може да ограничи това, което B може да бъде. Например, ако FD {Supplier} -> {Supplier Phone} задържа, това ограничава това, което телефонът на доставчика може да бъде в други редове, въпреки че елементът е PK не.

Дали някой конкретен FD се държи зависи от това какви редове трябва да влязат в таблица в дадена ситуация и какви ситуации могат да възникнат. Тогава това, което притежават FD, определя какви са суперключовете и CK. След това можете да изберете CK като PK.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Незаконен микс от съпоставяния Грешка в MySQL

  2. MySQL нарушава ли стандарта, като позволява избор на колони, които не са част от групата по клауза?

  3. Mysql избира ред, когато стойността на колоната се промени

  4. Entity Framework MySQL tinyint(1) System.Boolean.Parse FormatException

  5. Проверете за връзка с базата данни, в противен случай изведете съобщение