我在mysql中有一个表:
user_item_text
username, item, text
我想将数据规范化为三个表:
users
user_id, username
items
item_id, item_name
text
text_id, text_name
我怎样才能使用现有的user_item_text
表来创建所描述的三个表?大约有 800000 条记录。
我在mysql中有一个表:
user_item_text
username, item, text
我想将数据规范化为三个表:
users
user_id, username
items
item_id, item_name
text
text_id, text_name
我怎样才能使用现有的user_item_text
表来创建所描述的三个表?大约有 800000 条记录。
以下是如何处理一个表“用户”的示例:
create table users(
user_id int not null auto_increment,
username varchar(50),
primary key(user_id),
index ind_user_username(username)
) engine = XXX;
insert into users(username) select distinct username from user_item_text
alter table user_item_text add user_id integer null
update user_item_text uit join users u on uit.username = u.username
set uit.user_id = u.user_id
alter table user_item_text drop column username
也许您需要在运行最后一个之前添加以下步骤update
:
user_item_text.username
以使更新运行更快users.username
而不是普通索引user_item_index.user_id
应该有FK希望能帮助到你。
附言。我没有测试查询。他们只是向您展示一般方法。
创建表,然后将插入与选择结合使用。据我所知,可以使用表格进行插入。
例如:用户和主键是自增
Insert into users (username) Select username from user_item_text