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

Как да съхранявате множество стойности в една колона, където използвате по-малко памет?

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

Таблица като:

user_id | role
--------+-----------------
      1 | Admin
      2 | User
      2 | Admin
      3 | User
      3 | Author

Ще ви позволи да правите запитвания за всички потребители с определена роля, като например SELECT user_id, user.name FROM user_role JOIN user WHERE role='Admin' вместо да се налага да използвате синтактичен анализ на низове, за да извлечете подробности от колона.

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

Причината, поради която това не трябва да се съхранява, е, че е неефективно, поради причината, поради която DCoder посочва в коментар към този отговор . За да се провери дали даден потребител има роля, всеки ред от потребителската таблица ще трябва да бъде сканиран, а след това колоната "роли" ще трябва да бъде сканирана чрез съвпадение на низове - независимо от това как е изложено това действие, RMDBS ще трябва да изпълнява низови операции за анализиране на съдържанието. Това са много скъпи операции и никак не е добър дизайн на базата данни.

Ако ви е необходимо за да имате една колона, силно препоръчвам, че вече имате технически проблем, а проблем за управление на хора . Добавянето на допълнителни таблици към съществуваща база данни, която е в процес на разработка, не би трябвало да е трудно. Ако това не е нещо, което сте упълномощени да правите, обяснете защо е необходима допълнителната маса на точния човек - защото мързене множество стойности в една колона е лошо, лошо идеята .



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

  2. Как да коригирате групата заявки с only_full_group_by

  3. Как мога да прочета стойността от mysql с помощта на PHP

  4. Изпълнение на съхранена процедура с курсор в PHP

  5. Вярно/Невярно срещу 0/1 в MySQL