Toon posts:

[mysql] database ontwerp probleempje

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met een nieuw ontwerp voor mijn database van mijn songtekstenpagina.
Nu heb ik het volgende:

Artist
------------
ArtistID
Artistname

Song
------------
SongID
ArtistID
AlbumID
Tracknr
Title
Songtext

Album
------------
AlbumID
ArtistID

Nou kan een liedje op meerdere albums staan en een album bevat meerdere liedjes.
Een artiest schrijft meerdere liedjes en een liedje kan door meerdere artiesten gezongen worden.
Een artiest kan meerdere albums maken en op een album kunnen meerdere artiesten staan.

Ik heb dus meerdere n:m relaties.

Hoe kan ik dit goed oplossen en een goede database maken?

Verwijderd

Ik denk dat je een paar veranderingen moet maken.

Ten eerste moet je een nieuwe tabel maken voor uitvoering. Het verschil tussen een lied en de uitvoering is dat het lied geen artiest heeft, de uitvoering van dat lied wel. In de uitvoering tabel neem je dus een SongID op.

Verder moet zowel in song als uitvoering niet de ArtistID staan. Je zult een aparte koppeltabel moeten maken tussen uitvoering en album.

HTH :)

  • Expander
  • Registratie: Februari 2001
  • Niet online
Je kan je probleem gewoon oplossen door tabellen te maken als:

ArtistSong

SongAlbum

ArtistAlbum.

Ohja koppeltabel zoals MrX zegt dus.

[ Voor 16% gewijzigd door Expander op 25-12-2003 13:10 ]

Expanding the inexpandable


Verwijderd

Topicstarter
Okee ik kom dat op het volgende:

Song
-------------
Songid
Titel
Text

Uitvoering
-------------
UitvoeringID
SongID

UitvoeringAlbum
-------------
UitvoeringID
AlbumID
Tracknr

Album
-------------
AlbumID
Albumnaam

UitvoeringArtiest
-------------
UitvoeringID
ArtiestID

Artiest
-------------
ArtiestID
Artiestnaam

Klopt dit?

Verwijderd

Ja, zo kan je het doen. Je hebt zo zelfs iets extra's mogelijk gemaakt, nl. dat meerdere artiesten samen een uitvoering maken.

Nog 2 tips:
- kies namen volledig in 1 taal (of Engels of Nederlands)
- bedenk hoe je wil omgaan met verzamelCD's (ofwel een artiest "Diversen", ofwel een ArtiestID dat Null is)

  • TomT
  • Registratie: December 2003
  • Niet online
Bij Artiest ga je zeker uit van zowel solo-artiest als groep. Ik wil het niet nog moeilijker maken, maar solo-artiesten willen soms hun naam veranderen (o.a. David Bowie en Prince).

Een uitvoering (version of performance?) door meerdere artiesten samen? Wordt moeilijk. Dan zou in de tabel ArtiestUitvoering de combinatie Artiest en Uitvoering meerdere keren kunnen voorkomen, zoals het nu is gedefinieerd. Een artiest kan namelijk een uitvoering alleen of met meerdere spelen.

Als het verschil tussen een Song en een Uitvoering de Artiest is, verwacht ik de Artiest ook in de Uitvoeringstabel tegen te komen.

Gaat het je alleen om het terugvinden van de tekst van een liedje en dit koppelen aan een uitvoering en wil je niet weten welke uitvoeringen er allemaal zijn geweest en op welke albums etc. dan kan het misschien makkelijker. Hoe weet ik nog niet. Moet ik nog over nadenken. Eerst weer terug naar m'n kerstverplichtingen. Misschien later.

Succes,

Thom

Verwijderd

Topicstarter
Het veranderen van namen wil ik er buiten houden. Een liedje wordt namelijk uitgebracht door een bepaalde artiest en als die zn naam verandert dan brengt hij waarschijnlijk niet opnieuw het zelfde nummer uit.

Als ik nu nog een koppeltabel AlbumArtiest opneem? Dan kan ik toch verzamelalbums invoeren?

MrX: bedankt voor de tip ik zal een taal aanhouden is inderdaad wel zo makkelijk

TomT: Ik wil een tekst kunnen terugvinden aan de hand van een album, uitvoerende, titel
en ik wil van een uitvoering weten wie het heeft uitgevoerd en op welk album het eventueel staat (een nummer hoeft nl niet op een cd te staan).

  • TomT
  • Registratie: December 2003
  • Niet online
Om gebruik te maken van een "uitvoerende" vind ik wel een goed idee. Als de solo-artiest of groep de uitvoering alleen speelt, dan is ArtiestId gekoppeld aan UitvoerendeID. Als er meerdere artiesten (solo of groep) samen iets uitvoeren dan is de UitvoerendeID gekoppeld aan meerdere ArtiestID's. Dan kan Sting bijvoorbeeld zowel solo, met een groep of andere artiesten een uitvoering geven. Iedere keer is dan de UitvoerendeID anders. Het wordt dus een tabel ArtiestUitvoerende. De tabel UitvoeringArtiest wordt dan UitvoeringUitvoerende.

De koppeltabel AlbumArtiest hoeft niet. Neem UitvoerendeID op in de tabel UitvoeringAlbum. Bij een verzamelalbum zal dus per track een andere uitvoerende kunnen staan. Bij een album van één uitvoerende zal dan helaas elke track dezelfde uitvoerende hebben. Theoretisch gezien niet mooi, voldoet niet aan de "zoveelste" normaalvorm (vanwege de dubbelingen), maar wel zo handig. Anders zou je onderscheid moeten gaan maken tussen albums waar slechts één uitvoerende is, 2 uitvoerenden, 3 uitvoerenden tot een verzamelalbum waar elke track een andere uitvoerende is. Bij verzamelalbum ga ik er even vanuit dat het gaat om een verzameling uitvoeringen van een bepaald genre (pop, rock etc.) en niet een verzamelalbum van slechts één uitvoerende (The best of ...), waarbij de uitvoeringen van andere albums afkomen van die ene uitvoerende.

Al met al best wel lastig.
Pagina: 1