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ó