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

Трябва ли да нормализирам БД или не?

Философски отговор:Неоптималните (релационни) бази данни са изобилстващи с аномалии за вмъкване, актуализиране и изтриване. Всичко това води до непоследователни данни, което води до лошо качество на данните. Ако не можете да се доверите на точността на вашите данни, каква полза от това? Задайте си въпроса:Искате ли правилните отговори по-бавно или искате грешните отговори по-бързо?

Като практически въпрос:оправете го, преди да го получите бързо. Ние, хората, сме много зле в прогнозирането къде ще възникнат затруднения. Направете базата данни страхотна, измерете производителността за приличен период от време, след което решете дали трябва да я направите по-бърза. Преди да денормализирате и пожертвате точността, опитайте други техники:можете ли да получите по-бърз сървър, връзка, db драйвер и т.н.? Може ли съхранените процедури да ускорят нещата? Как са индексите и техните фактори за запълване? Ако тези и други техники за изпълнение и настройка не свършат работа, едва тогава помислете за денормализация. След това измерете производителността, за да проверите дали сте получили увеличението на скоростта, за което сте "платили". Уверете се, че извършвате оптимизация, а не песимизиране.

[редактиране]

О:Разбира се.

  1. Направете резервно копие.
  2. Направете друго резервно копие на друго устройство.
  3. Създавайте нови таблици с команди от типа „изберете в нова таблица от старата таблица...“. Ще трябва да направите някои обединявания, за да комбинирате по-рано различни таблици.
  4. Изхвърлете старите таблици.
  5. Преименувайте новите таблици.

НО ... помислете за по-стабилен подход:

Създайте някои изгледи на вашите напълно нормализирани таблици в момента. Тези изгледи (виртуални таблици, "прозорци" на данните... попитайте ме дали искате да научите повече за тази тема) ще имат същата дефинираща заявка като стъпка трета по-горе. Когато пишете логиката на вашето приложение или DB-слоя, използвайте изгледите (поне за достъп за четене; обновяемите изгледи са... добре, интересни). След това, ако денормализирате по-късно, създайте нова таблица, както по-горе, пуснете изгледа, преименувайте новата базова таблица, независимо от изгледа. Вашето приложение/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. Система за съобщения в php mysql

  2. SQL заявката за геолокация не намира точно местоположение

  3. MySQL:SQL грешка:1140, SQLState:42000

  4. Защо получавам тази грешка „Неуспешна комуникационна връзка Последният пакет изпратен...“ при свързване с MySQL с Java (Netbeans)?

  5. Mysql избор от две таблици