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

Нормализиране в MYSQL

Опитвам се да се опитам да обясня нормализирането на лаици тук. Първо, това е нещо, което се отнася за релационна база данни (Oracle, Access, MySQL), така че не е само за MySQL.

Нормализирането е да се уверите, че всяка таблица има единствените минимални полета и да се отървете от зависимостите. Представете си, че имате досие на служител и всеки служител принадлежи към отдел. Ако съхраните отдела като поле заедно с останалите данни на служителя, имате проблем - какво се случва, ако отдел бъде премахнат? Трябва да актуализирате всички полета на отдела и има възможност за грешка. И какво ще стане, ако някои служители нямат отдел (може би новоназначен?). Сега ще има нулеви стойности.

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

Ето един прост процес на нормализиране.

EMPLOYEE ( < employee_id >, name, social_security, department_name)

Това не е нормализирано, както е обяснено. Нормализираната форма може да изглежда така

EMPLOYEE ( < employee_id >, name, social_security)

Тук таблицата Employee отговаря само за един набор от данни. И така, къде съхраняваме към кой отдел принадлежи служителят? В друга таблица

EMPLOYEE_DEPARTMENT ( < employee_id >, department_name )

Това не е оптимално. Ами ако името на отдела се промени? (това се случва в правителството на САЩ през цялото време). Затова е по-добре да направите това

EMPLOYEE_DEPARTMENT ( < employee_id >, department_id )
DEPARTMENT ( < department_id >, department_name )

Има първа нормална форма, втора нормална форма и трета нормална форма. Но освен ако не изучавате DB курс, обикновено се насочвам към най-нормализираната форма, която мога да разбера.

Надявам се това да помогне.



  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_connect()

  2. CREATE TABLE MySQL срещу T-SQL с примери за синтаксис

  3. ScaleGrid DBaaS разширява MySQL хостинг услугите чрез AWS Cloud

  4. MySQL SELECT само не нулеви стойности

  5. Как да поръчам по дата в MySQL