Database design

Eivind (db96ek nospam at oliven.hib.no)
Fri, 12 Mar 1999 18:52:15 +0100 (CET)

Hi !

Some of these issues may have been discussed, the lack of a complete
archive for cdindex makes it impossible for me to tell.

I agree that we should aim to create something way _better_ than current
cddb, not merely replicate it. We need a well thougth out and easily
extensible format for the data.

Below is my proposal, based on what I've seen on these lists, and some
of my own ideas.

Tables:

Album
Performance
Song
Composer
Artist

The logic being like this:

* One album contains one or more performances.

* One performance is a certain song, played by a certain artist in a
certain way. (the same song is often played by various artists, lyrics
and composer is still the same and sometimes the same band has
multiple different performances of the same song, like a live version
or various mixes)

I think it's important that we make the distinction between a song and a
performance. otherwise we'll end up with a need to replicate info like
lyrics in several places, or alternatively we'll be considering the same
song performed by different artists the same, wich it clearly isn't.

I also feel it's a mistake to have a "artist" field in the album table.
Afterall there's no rule that an album has to be made by one artist.
Adding artist with the album would make it logical to add composer and
other info there as well, and all this info is _really_ linked to the
various tracks at the album, not to the album at large.

On an unrelated note we do _not_ want an organization of the database
servers that need a central "root" server, or that gives any one
administrator control over the base at large. We should go for a flat,
distributed database, possibly under the model of usenet news.

mvh,
Eivind