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

MySQL автоматично вмъкване на ред в таблица2 при вмъкване в таблица1

Ще ви трябват тригери, за да "автоматично" вмъкнете записа в отделна таблица.

Вмъкването на записа в UserPrivacy с отделна заявка би било най-често срещаният начин за прилагане на това.

Ако е връзка едно към едно, поставянето й в същата таблица позволява по-прости заявки (не се изисква присъединяване).

Решения, решения...

При връзка едно към (нула към едно) има повече фактори, които трябва да се вземат предвид.

Ако таблицата UserPrivacy е голяма, тогава може да има смисъл да я поставите в отделна таблица, за да спестите място. Това също би било по-нормализирано.

Ако често задавате запитвания за нещо като „Дайте ми всички потребители, които нямат PrivacyData“, тогава може да има смисъл да го поставите в отделна таблица. Тъй като индексите не включват NULL стойности (по подразбиране), би било по-бързо да направите JOIN към отделна таблица. Разбира се, работата за заобикаляне е да се използва стойност, различна от NULL, за да представлява "без настройки за поверителност", но ниската мощност също се отразява негативно на производителността. За този случай най-добре биха били отделни таблици.

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

Ако често имате нужда от данните за UserPrivacy без UserData или обратно, може да искате да ги разделите.

Все пак това може да е преждевременна оптимизация. Може просто да искате да ги разделите, ако по-добре отговарят на вашите модели. Помислете за простотата да го държите в една и съща таблица в сравнение с проблемите с производителността, размера и четливостта.

Ако връзката беше едно към (нула към много), очевидно бихте искали отделна таблица, но за едно към (нула към едно) не е задължително.

Най-накрая...

Не се страхувайте да ги разделите, стига да има причина.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PDO lastInsertId не работи при транзакции?

  2. Съхранявайте HTML в MySQL база данни

  3. MySQL:премахване на последователни дублиращи се стойности

  4. Laravel eloquent не актуализира колона JSON:Преобразуване на масив в низ

  5. как да влезете в mysql и да потърсите базата данни от терминала на Linux