0

私は最近、データベースの正規化と再構築に取り組んでおり、長期的にはより効果的です。現在、約 500 のレコードがあり、明らかにユーザー データを失いたくありません。

phpmyadmin を介した SQL がこれを行う最も簡単な方法だと思いますか?

それでは、皆さんに例を挙げましょう

私の古いテーブルでは、このようなものがあります

records //this table has misc fields, but they are unimportant right now
id | unit |
1  | g    |

私の新しいものでは、3つの異なるテーブルに分割しています。

records
id 
1

units
id | unit
1  |  g

record_units
id | record_id | unit_id
1  | 1         | 1

明確にするために、単位表には何も追加していません。テーブルは、record_units テーブルに格納する ID の参照として存在します。

ご覧のとおり、とてもシンプルです。2 番目のテーブルで変わったことは、ユニットを保持するためにインデックス テーブルを使用し始めたことです。これは、ユニットが頻繁に繰り返されるためです。次に、そのユニット ID とペアリング レコード ID を record_units テーブルに保存して、後でフィールドを取得できるようにします。

私は平均的に知っていると思いますが、SQL の経験はそれほど多くありません。すべての関連付けが既にセットアップされているため、この操作は Cakephp セットアップで行うのが非常に簡単であることはわかっていますが、それを行うことはできません。

4

1 に答える 1

0

私の理解が正しければ、関連するレコードを古いテーブルから新しいテーブルにコピーしたい場合、このようなものを使用できます。

UPDATE units u
INNER JOIN records r
    ON u.id=r.id
SET u.unit = r.unit

これにより、古いテーブルの単位タイプが新しい単位テーブルの一致する ID にコピーされ、3 番目のテーブルで同様のことができます。

于 2013-06-21T06:47:14.027 に答える