Tôi đang triển khai mô hình sau để lưu trữ dữ liệu liên quan đến người dùng trong bảng của mình - Tôi có 2 cột - uid
(khóa chính) và một meta
cột lưu trữ dữ liệu khác về người dùng ở định dạng JSON.
uid | meta
--------------------------------------------------
1 | {name:['foo'],
| emailid:['foo@bar.com','bar@foo.com']}
--------------------------------------------------
2 | {name:['sann'],
| emailid:['sann@bar.com','sann@foo.com']}
--------------------------------------------------
Đây có phải là một cách tốt hơn (hiệu suất-khôn ngoan, thiết kế-khôn ngoan) so với mô hình một-cột-per-bất động sản, nơi bảng sẽ có nhiều cột như uid
, name
, emailid
.
Những gì tôi thích về mô hình đầu tiên là, bạn có thể thêm càng nhiều trường càng tốt, không có giới hạn.
Ngoài ra, tôi đã tự hỏi, bây giờ tôi đã thực hiện mô hình đầu tiên. Làm cách nào để thực hiện truy vấn trên đó, như, tôi muốn tìm nạp tất cả người dùng có tên như 'foo'?
Câu hỏi - Cách nào tốt hơn để lưu trữ dữ liệu liên quan đến người dùng (lưu ý rằng số lượng trường không cố định) trong cơ sở dữ liệu bằng cách sử dụng - JSON hoặc cột trên mỗi trường? Ngoài ra, nếu mô hình đầu tiên được thực hiện, làm thế nào để truy vấn cơ sở dữ liệu như được mô tả ở trên? Tôi có nên sử dụng cả hai mô hình, bằng cách lưu trữ tất cả dữ liệu có thể được tìm kiếm bởi một truy vấn trong một hàng riêng biệt và dữ liệu khác trong JSON (là một hàng khác nhau)?
Cập nhật
Vì sẽ không có quá nhiều cột mà tôi cần thực hiện tìm kiếm, nên sử dụng cả hai mô hình có khôn ngoan không? Khóa trên mỗi cột cho dữ liệu tôi cần tìm kiếm và JSON cho người khác (trong cùng một cơ sở dữ liệu MySQL)?