Re: Easy normalization how-to?

2004-07-06 Thread John Hicks
I was hoping someone could improve on my suggestion. 
But, not seeing any further replies, I guess my 
solution must be optimal (troll, troll :)

--John

On Saturday 03 July 2004 03:34 am, John Hicks wrote:
> 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]



Re: Easy normalization how-to?

2004-07-03 Thread John Hicks
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]



Easy normalization how-to?

2004-07-02 Thread Your Name
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




__
Do you Yahoo!?
New and Improved Yahoo! Mail - 100MB free storage!
http://promotions.yahoo.com/new_mail 

-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:http://lists.mysql.com/[EMAIL PROTECTED]