Mysql
 sql >> Baza danych >  >> RDS >> Mysql

kolumna json a wiele kolumn

Krótka odpowiedź, wiele kolumn.

Długa odpowiedź:

Z miłości do wszystkiego, co święte na świecie, nie przechowuj wielu zestawów danych w jednej kolumnie tekstowej

Zakładam, że będziesz miał stół, który będzie albo

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

Po pierwsze powiem, że oba te rozwiązania nie są najlepszym rozwiązaniem, ale jeśli miałbyś wybrać to z dwóch, najlepsze jest pierwsze. Istnieje kilka powodów, głównie dlatego, że możliwość modyfikowania i tworzenia zapytań jest naprawdę ważna. Pomyśl o algrotimie, aby zmodyfikować drugą opcję.

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

To rozwiązanie sumuje 2 zapytania oraz algorytm wyszukiwania i zamiany. Niedobrze!

Teraz pomyśl o pierwszym rozwiązaniu.

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` = ?

Jest to wyraźnie lepsze, ale nie najlepsze

Jest trzecie rozwiązanie Załóżmy, że chcesz, aby użytkownik mógł wstawiać nieskończoną liczbę numerów telefonów.

Użyjmy do tego tabeli relacji, więc teraz masz dwie tabele.

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

Teraz możesz zapytać o wszystkie numery telefonów użytkownika za pomocą czegoś takiego

Teraz możesz wysłać zapytanie do tabeli przez sprzężenie

WYBIERZ użytkowników., telefon. FROM Telefon, Użytkownicy WHERE phone.user_name =? ORAZ Użytkownicy.U_name =?

Wstawianie jest równie łatwe, a sprawdzanie typu również jest łatwe.

Pamiętaj, że to prosty przykład, ale SQL naprawdę zapewnia mnóstwo mocy w Twojej strukturze danych, powinieneś z niego korzystać, a nie go unikać



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wiele kolumn MySQL w klauzuli IN

  2. Jak mogę wstawić dane do bazy danych MySQL?

  3. Postępowanie ze zduplikowanymi kluczami podstawowymi podczas wstawiania w SQLAlchemy (styl deklaratywny)

  4. Funkcja CONV() w płatku śniegu

  5. Pandy Pythona do_sql 'dołącz'