短い回答、複数の列。
長い答え:
世界の聖なるものすべてを愛するために、複数のデータセットを単一のテキスト列に保存しないでください
どちらかになるテーブルがあると思います
+------------------------------+ +----------------------+
| User | cell | office | home | OR | User | JSON String |
+------------------------------+ +----------------------+
まず、これらのソリューションはどちらも最善の解決策ではありませんが、2つから選択する場合は、最初の解決策が最適です。主にいくつかの理由がありますが、具体的に変更および照会する機能は非常に重要です。 2番目のオプションを変更するためにalgrothimについて考えてください。
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` = ?
これは明らかに優れていますが、最善ではありません
3番目の解決策があります。ユーザーが無限の数の電話番号を挿入できるようにしたいとします。
そのためにリレーションテーブルを使用してみましょう。これで2つのテーブルができました。
+-------------------------------------+
+---------+ | Phone |
| Users | +-------------------------------------+
+---------+ | user_name| phone_number | type |
| U_name | +-------------------------------------+
+---------+
これで、次のようなユーザーのすべての電話番号を照会できます
これで、結合を介してテーブルをクエリできます
ユーザーを選択します。、電話。 FROM Phone、ユーザーWHERE phone.user_name =? AND Users.U_name =?
インサートも同様に簡単で、タイプチェックも簡単です。
これは単純な例ですが、SQLは実際にデータ構造に大きな力を提供するため、回避するのではなく使用する必要があります
。