2

jsonデータをaffiliate_phone_idフィールドに保存するか、別のテーブルを使用して正規化する方がよいですか?

例えば:

mysql> select * from phone;
+----+----------+-------------+-------------------------------------------------------------------------------------------+
| id | name     | description | affiliate_phone_id                                                                        |
+----+----------+-------------+-------------------------------------------------------------------------------------------+
| 32 | iPhone 5 | faster CPU  | [{"affiliate_id":2,"affiliate_phone_id":123},{"affiliate_id":3,"affiliate_phone_id":222}] |
+----+----------+-------------+-------------------------------------------------------------------------------------------+

上記のデータは、各小売業者が独自の電話IDを持っていることを示しています。たとえば、次のようになります。

会社2(affiliate_id = 2)、電話IDは123です

または、次のような別のテーブルを作成する方がよいでしょうか。

mysql> select * from phone_affiliate;
+----+----------+--------------+--------------------+
| id | phone_id | affiliate_id | affiliate_phone_id |
+----+----------+--------------+--------------------+
|  1 |       32 |            2 | 123                |
|  2 |       32 |            3 | 222                |
+----+----------+--------------+--------------------+

または他のより良い提案はありますか?

4

2 に答える 2

4

正規化されたテーブル。

おそらく、phone_affiliate テーブルの「id」フィールドは必要ありません。データ間の関係に応じて、プライマリ キー (phone_id、affiliate_id) または (phone_id、affiliate_id、affiliate_phone_id) を設定できます。

mysql> select * from phone_affiliate;
+----------+--------------+--------------------+
| phone_id | affiliate_id | affiliate_phone_id |
+----+----------+--------------+---------------+
|       32 |            2 | 123                |
|       32 |            3 | 222                |
+----+----------+--------------+---------------+
于 2012-09-20T10:42:44.383 に答える
1

正規化されたテーブルを使用するだけで、JSON 以外の異なる形式のデータにアクセスする必要がある場合に役立ちます。

于 2012-09-20T10:34:35.467 に答える