Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

cột json so với nhiều cột

Câu trả lời ngắn, nhiều cột.

Câu trả lời dài:

Vì tình yêu của tất cả những gì thánh thiện trên thế giới, vui lòng không lưu trữ nhiều bộ dữ liệu trong một cột văn bản duy nhất

Tôi giả sử bạn sẽ có một bảng hoặc sẽ là

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

Trước tiên, tôi sẽ nói cả hai giải pháp này không phải là giải pháp tốt nhất nhưng nếu bạn chọn từ hai giải pháp đầu tiên là tốt nhất. Có một số lý do chủ yếu mặc dù khả năng sửa đổi và truy vấn cụ thể là thực sự quan trọng. Hãy suy nghĩ về algrothim để sửa đổi tùy chọn thứ hai.

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

Giải pháp này tổng cộng 2 truy vấn và một thuật toán tìm kiếm và thay thế. Không tốt!

Bây giờ hãy nghĩ về giải pháp đầu tiên.

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

Điều này rõ ràng là tốt hơn nhưng nó không phải là tốt nhất

Có một giải pháp thứ ba Giả sử bạn muốn người dùng có thể chèn vô hạn số điện thoại.

Hãy sử dụng một bảng quan hệ cho điều đó để bây giờ bạn có hai bảng.

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

Giờ đây, bạn có thể truy vấn tất cả các số điện thoại của một người dùng với thông tin tương tự như thế này

Bây giờ bạn có thể truy vấn bảng thông qua một phép nối

CHỌN Người dùng. , điện thoại. TỪ Điện thoại, Người dùng WHERE phone.user_name =? AND Users.U_name =?

Việc chèn cũng dễ dàng và việc kiểm tra loại cũng dễ dàng.

Hãy nhớ rằng đây là một ví dụ đơn giản nhưng SQL thực sự cung cấp rất nhiều sức mạnh cho cấu trúc dữ liệu của bạn, bạn nên sử dụng nó hơn là tránh nó



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để băm mật khẩu trong MySQL?

  2. Lệnh gọi cơ sở dữ liệu không đồng bộ Node JS

  3. MySQL lưu trữ các cạnh đồ thị vô hướng một cách hiệu quả

  4. Gọi một tập lệnh PHP từ trình kích hoạt MySQL

  5. Cách tốt nhất để kết nối ứng dụng iPhone (iOS SDK) với php / MySql backend