On Friday 02 July 2004 11:40 pm, Your Name wrote: > ... I now realize the importance of normalizing my > data, >... what [is] the easy way... of getting > it done now that I already have a database set up. > > Suppose I have a table "books", consisting of "id", > "title", and "publisher"; the "publisher" is > redundant. I'd like to create a "publisher" table > consisting of "id" and "publisher", and then I want > my original "books" table to use its "publisher" > column to hold the value of "publisher.id" instead > of the publisher's name. >
Here's a 3-a.m.-I-really-shouldn't-be-doing-this-now stab at it: Extract the publisher names from books into a new publisher table: create table publisher select distinct publisher from books; Add a primary key to the new publisher table: alter table publisher add column id int primary key auto_increment; Use a join to create a new table with both publisher and publisher id: create table newBooks select books.*, publisher.id as publisherId from books, publisher where books.publisher = publisher.publisher; Drop the redundant column publisher: alter newBooks drop column publisher; rename table books to oldBooks; rename table newBooks to books; There's bound to be better ways to do it. I'll check back tomorrow to see what I can learn from others' suggestions. Regards, John On Friday 02 July 2004 11:40 pm, Your Name wrote: > I'm learning more about SQL all the time--I'm new to > things now but I'm trying to read. I now realize > the importance of normalizing my data, but what I > can't figure out is what the easy way is of getting > it done > now that I already have a database set up. > > Suppose I have a table "books", consisting of "id", > "title", and "publisher"; the "publisher" is > redundant. I'd like to create a "publisher" table > consisting of "id" and "publisher", and then I want > my original "books" table to use its "publisher" > column to hold the value of "publisher.id" instead > of the publisher's name. > > Is there a way I can do this with an existing table > full of data, other than going through it > line-by-line with > a scripting language? > > Thanks! > > Jen -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]