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

json колона срещу множество колони

Кратък отговор, множество колони.

Дълъг отговор:

За любовта към всичко свято в света, моля, не съхранявайте множество набори от данни в една текстова колона

Предполагам, че ще имате маса, която ще бъде или

+------------------------------+      +----------------------+
| User |  cell | office | home |  OR  | User | JSON String   |
+------------------------------+      +----------------------+

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

SELECT `JSON` FROM `table` WHERE `User` = ?

Then you have to do a search and replace in either your server side or client side language

Finally you have to reinsert the JSON string

Това решение включва общо 2 заявки и алгоритъм за търсене и замяна. Не е добре!

Сега помислете за първото решение.

SELECT * FROM `table` WHERE `User` = ?

Then you can do a simple JSON encode to send it down

To modify you only need one Query.

UPDATE `table` SET `cell` = ? WHERE `User` = ?

to update more than one its again a simple single query 

UPDATE `table` SET `cell` = ?, `home` = ? WHERE `User` = ?

Това определено е по-добре, но не е най-доброто

Има и трето решение. Да речем, че искате потребителят да може да въвежда безкраен брой телефонни номера.

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

              +-------------------------------------+
+---------+   |      Phone                          | 
| Users   |   +-------------------------------------+ 
+---------+   | user_name| phone_number | type      |
| U_name  |   +-------------------------------------+
+---------+

Сега можете да запитвате всички телефонни номера на потребител с нещо подобно

Сега можете да направите заявка за таблицата чрез присъединяване

ИЗБЕРЕТЕ Потребители., телефон. ОТ Телефон, Потребители КЪДЕ phone.user_name =? И Потребители.U_name =?

Вмъкванията са също толкова лесни и проверката на типа също е лесна.

Не забравяйте, че това е прост пример, но SQL наистина осигурява много мощност на вашата структура от данни, трябва да я използвате, вместо да я избягвате



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MAX функция в where клауза mysql

  2. Генериране на MySQL в Excel с помощта на PHP

  3. Странна грешка в MySQL само за четене

  4. MySQL:Най-бързият начин за преброяване на броя на редовете

  5. Как да се справя условно с деление на нула с MySQL