[PHPwestoz] [OT] Relational SQL Databases

Evan Barter evan at wiredcity.com.au
Tue Feb 22 16:16:02 UTC 2005


Timothy White wrote:

> Once again. Another MySQL question that is related to a PHP project. I
> have tried googling but can't find anything simple.
>
> Basically I need to have a table of songs and I want to keep the artists
> in another table as well as albums.
>
> So it will look a bit like this.
>
> Music.Artists
> ID   |   Artist
> 1    |   Avril
> 2    |   Baxtar
> 3    |   Zebra
> ...
> Music.Albums
> ID   |   Album   | Artist
> 1    |   Pink    | Baxtar
> 2    |   Mouse   | Baxtar
> 3    |   Rock    | Zebra
> Music.Songs
> (Same as before)
> CREATE TABLE library (
>
> ID INT UNSIGNED NOT NULL AUTO_INCREMENT,
> Filename TEXT NOT NULL,
> Artist TEXT NULL,
> Title TEXT NULL,
> Album TEXT NULL,
> FID VARCHAR(40) NOT NULL,
> PRIMARY KEY ID (ID),
> INDEX UID (FID(40))
> ) TYPE = innoDB COMMENT ='';
>
> Now I know that I need them to be of type innoDB for relations to work.
> How do I work with a database like this.
> e.g. How do insert a new song and if the Artist isn't in the Artist
> table it adds it and if the album isn't in the Album table it adds it as
> well.
>
> Also how do the lookups work?
> e.g. If I do 'SELECT * from Songs WHERE Artist="Avril"' then how does it
> return the Album field? As a ID to the Album in the Album table or as
> the Album name?
>
> Thanks
>
> Tim
> -- 
>
> Tim White - Use the Fox, Luke!
> PGP/GPG id: 602E944D, Pub Key Serv: subkeys.pgp.net
> Fingerprint: 04C2 9682 B7B2 3006 009D  A9F3 067E EDCD 602E 944D
> Hi! I'm a .signature virus! Copy me into your ~/.signature to help me 
> spread!
> -- 
>
Hi Tim,

(Scrap everything I'd just typed out regarding normalized data and 
foreign keys, Nicolas beat me to it.)

Here's the thing. I wouldn't use InnoDB. You really don't need the 
features it has to offer over MyISAM (ACID, transactions, whatnot) and 
for simple selects, MyISAM is faster. (More scrapping.)

Regards,
Evan






More information about the PHPwestoz mailing list