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

Използването на char като първичен/външен ключ е не не?

Изпълнението всъщност не е основният проблем, поне не за мен. Проблемът е повече за сурогат срещу естествени ключове.

Кодовете на държавите не са статични. Те могат и се променят. Държавите променят имената (напр. Етиопия на Еритрея). Те възникват (напр. разпадането на Югославия или Съветския съюз) и престават да съществуват (напр. Западна и Източна Германия). Когато това се случи, стандартният ISO код се променя.

Още в Промени в имената от 1990 г.:Държави, градове и още

Сурогатните ключове обикновено са по-добри, защото когато се случат тези събития, ключовете не се променят, а само колоните в референтната таблица.

Поради тази причина бих бил по-склонен да създам таблици за държави и валути с първичен ключ int.

Като се има предвид това, ключовите полета varchar ще използват повече място и ще имат определени недостатъци в производителността, които вероятно няма да са проблем, освен ако не изпълнявате огромен брой заявки.

За пълнота може да искате да се обърнете към Грешки при разработването на бази данни, направени от разработчиците на приложения .



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

  2. Ръчно посочете стойността на първичен ключ в колоната JPA @GeneratedValue

  3. Тригер в mysql причинява грешка

  4. Обратно проследяване от SQL заявка към код на приложението?

  5. Заявката за MySQL Insert не работи с клауза WHERE