Ik ben bezig met het maken van een muziekdatabase programma om muziek op te slaan. Ik kom echter even niet meer verder, misschien dat jullie ideeen hebben.
Let op: Het gaat hier puur om de tabel-layout en hoe die tabellen in verbinding staan met elkaar, niet om wat er precies aan velden in komt.
Er staan simpel gezegd 3 zaken in: 1. Alle liedjes en albums en de bijbehorende artiesten, 2. hitlijsten en 3. wat de gebruiker in zijn/haar bezit heeft en op welk medium het staat.
Artiesten en albums
De artiesten en albums zijn vrij eenvoudig. Ik sla songtitels en albumtitels apart op, omdat er ten eerste in de songtitel een paar andere velden zijn als in de albumtitel en ten tweede is de combinatie titel en artiestID uniek per rij, en dat is erg vervelend als een artiest een song heeft met dezelfde titel als een album.
Met koppel wordt het mogelijk gemaakt om "losse artiesten" te vinden bij combinaties of koppels van artiesten. Dat is erg fijn als je van een bepaald nummer, meer nummers van dezelfde artiest(en) wilt weten.
Voorbeeld het nummer "Always in on time" van "Ja Rule feat. Ashanti". De artiest "Ja Rule feat. Ashanti" heeft een koppelverwijzing naar zowel "Ashanti" (als solo-artiest) en "Ja Rule" (als solo-artiest). Als ik dan in mijn programma zoek naar gerelateerde nummers bij "Always on time", dan vindt het systeem ook "Foolish" van "Ashanti".
Hitlijsten
Van hitlijsten sla ik in drie verschillende tabellen de volgende kenmerken op: Soort, editie en notering.
Een soort is een bepaalde hitlijst zoals "De Nederlandse top 40", "De Billboard hot one hundred", "De albumtop 100" of de "Tipparade". Bij een soort staat ook de hoeveelheid noteringen in de lijst (bv. 40 in de top40, 100 in de album top 100, etc..)
Een editie is een bepaalde uitgave, in deze tabel staat een datum in combinatie met een soort hitlijst.
Een notering geeft de werkelijke noteringen aan, deze verwijzen naar een editie van een hitlijst en een songtitel of albumtitel.
Het ziet er zo uit:
Tot nu toe verloopt het ontwerpen goed, maar ik kom hier een vraagje tegen.
Er zijn inprincipe 2 soorten hitlijsten die je op de radio hoort: Album hitlijsten en single hitlijsten. In de hitlijst-tabellen zijn er tussen deze 2 soorten hitlijsten geen verschillen, behalve het soort titel waarnaar de noteringen verwijzen.
Ik kan voor de tabel "hitlijst_notering" de volgende 2 dingen doen:
- Een soort hitlijst_notering met foreign keys naar zowel de songtitel als albumtitel. Er moet altijd een van de 2 NULL zijn. Deze methode heb ik gebruikt in de bovenstaande layout
- Twee soorten hitlijst_notering, namelijk hitlijst_album_notering en hitlijst_song_notering.
Programmeertechnisch vind ik 1 soort notering gemakkelijker, maar database technisch vind ik 2 foreign keys waarvan slechts een tegelijk gebruikt mag worden niet zo netjes.
Hoe denken jullie er over?
Muziek dat de gebruiker in zijn/haar collectie heeft
Een aantal tabellen geven aan wat een gebruiker zelf in zijn/haar collectie heeft. Hoewel ik het systeem voornamelijk richt op MP3, wil ik het zo flexibel mogelijk maken, aangezien ik het programma wil verspreiden. Bovendien zijn er ook fanatieke MP3-gebruikers zoals ik die een aantal singles en albums ook op vinyl heeft, wat natuurlijk juist een aanvulling is in plaats van iets dat door MP3 wordt vervangen.
De problemen die ik tegenkom hebben te maken met het feit dat MP3-bestanden bij een album horen, en op een MP3 CD staan, maar ik wil tevens registreren dat het album op de MP3 CD staat. Dat kan prima, maar er zijn ook audio CD's, en daar staan de tracks weer niet los van elkaar.
Ik zal het duidelijk maken met het ontwerp dat ik voor ogen heb (de tabellen voor de hitlijsten laat ik voor het gemak ff weg)
Een album of single heeft een aantal tracks. Deze tracks zijn niet verplicht op in te voeren, maar als je het lijstje hebt, dan is het wel leuk voor de extra info. Vandaar de tabel "track", die een nummer met een album verbindt. (track verwijst ook naar albumtitel, maar een omgekeerde "^" bestaat niet, daarom heb ik een "%" genomen voor een omgekeerde "^")
Verder heb ik een eerste aanzet tot een media-ontwerp gegeven. Mediasoorten zijn begrippen van media zoals een AudioCD, CD-ROM, LP of cassettebandje.
Een medium is een concreet ding dat je in bezit hebt, zoals "CD uit mijn CD-rek nummer..", "MP3 CD-ROM nummer..", etc.. Een verwijzing naar een medium gaat altijd gepaard met het nummer van het medium, zo krijg je een verwijzing naar een concreet ding zoals "MP3 CD-ROM 3" of "12inch no. 23".
Op die media kunnen verschillende objecten staan, zoals een digitaal_audio_bestand (MP3), videoclip_bestand of een ouderwetse audiotrack die je op traditionele audio CD's maar ook LP's en cassettes terug vindt.
Prima tot nu toe..maar nu het probleem..hoe sla ik albums op?
Mijn redenatie die vastloopt: Ik kan natuurlijk in de reeks video_clipbestand, audio_track, etc.. ook het type "album" toevoegen, een album staat immers ook op een medium. Deze tabel verwijst dan niet naar een song_titel, maar een album_titel. Aan de hand van de "track" tabel kan de software dan de songs aflezen. Als het om een MP3-CD-ROM gaat, bestaat het album uit losse MP3's. Deze MP3's zijn terug te vinden via de tabel "digitaal_audio_bestand", waar de songs als het goed in staan. De entry's in de tabel "digitaal_audio_bestand" MOETEN naar een concreet medium wijzen, aangezien je geen fictieve MP3's gaat invoeren. Maar het album waar de MP3's op staan, verwijst ook al naar dat medium, wat tot gevolg heeft dat de MP3's er als het ware 2 keer op staan (1x als losse MP3's en 1x als onderdeel van een album)
Hebben jullie suggesties hoe ik het beter kan doen, zodat er een degelijk ontwerp uit komt?
Let op: Het gaat hier puur om de tabel-layout en hoe die tabellen in verbinding staan met elkaar, niet om wat er precies aan velden in komt.
Er staan simpel gezegd 3 zaken in: 1. Alle liedjes en albums en de bijbehorende artiesten, 2. hitlijsten en 3. wat de gebruiker in zijn/haar bezit heeft en op welk medium het staat.
Artiesten en albums
De artiesten en albums zijn vrij eenvoudig. Ik sla songtitels en albumtitels apart op, omdat er ten eerste in de songtitel een paar andere velden zijn als in de albumtitel en ten tweede is de combinatie titel en artiestID uniek per rij, en dat is erg vervelend als een artiest een song heeft met dezelfde titel als een album.
Met koppel wordt het mogelijk gemaakt om "losse artiesten" te vinden bij combinaties of koppels van artiesten. Dat is erg fijn als je van een bepaald nummer, meer nummers van dezelfde artiest(en) wilt weten.
Voorbeeld het nummer "Always in on time" van "Ja Rule feat. Ashanti". De artiest "Ja Rule feat. Ashanti" heeft een koppelverwijzing naar zowel "Ashanti" (als solo-artiest) en "Ja Rule" (als solo-artiest). Als ik dan in mijn programma zoek naar gerelateerde nummers bij "Always on time", dan vindt het systeem ook "Foolish" van "Ashanti".
code:
1
2
3
4
| -------->Artiest<-------Songtitel | ^ ^ | | |---------Albumtitel koppel----| |
Hitlijsten
Van hitlijsten sla ik in drie verschillende tabellen de volgende kenmerken op: Soort, editie en notering.
Een soort is een bepaalde hitlijst zoals "De Nederlandse top 40", "De Billboard hot one hundred", "De albumtop 100" of de "Tipparade". Bij een soort staat ook de hoeveelheid noteringen in de lijst (bv. 40 in de top40, 100 in de album top 100, etc..)
Een editie is een bepaalde uitgave, in deze tabel staat een datum in combinatie met een soort hitlijst.
Een notering geeft de werkelijke noteringen aan, deze verwijzen naar een editie van een hitlijst en een songtitel of albumtitel.
Het ziet er zo uit:
code:
1
2
3
4
5
6
7
| hitlijst_soort
^
|
hitlijst_editie
----Songtitel<------------| ^
| |
----Albumtitel<---------hitlijst_notering |
Tot nu toe verloopt het ontwerpen goed, maar ik kom hier een vraagje tegen.
Er zijn inprincipe 2 soorten hitlijsten die je op de radio hoort: Album hitlijsten en single hitlijsten. In de hitlijst-tabellen zijn er tussen deze 2 soorten hitlijsten geen verschillen, behalve het soort titel waarnaar de noteringen verwijzen.
Ik kan voor de tabel "hitlijst_notering" de volgende 2 dingen doen:
- Een soort hitlijst_notering met foreign keys naar zowel de songtitel als albumtitel. Er moet altijd een van de 2 NULL zijn. Deze methode heb ik gebruikt in de bovenstaande layout
- Twee soorten hitlijst_notering, namelijk hitlijst_album_notering en hitlijst_song_notering.
Programmeertechnisch vind ik 1 soort notering gemakkelijker, maar database technisch vind ik 2 foreign keys waarvan slechts een tegelijk gebruikt mag worden niet zo netjes.
Hoe denken jullie er over?
Muziek dat de gebruiker in zijn/haar collectie heeft
Een aantal tabellen geven aan wat een gebruiker zelf in zijn/haar collectie heeft. Hoewel ik het systeem voornamelijk richt op MP3, wil ik het zo flexibel mogelijk maken, aangezien ik het programma wil verspreiden. Bovendien zijn er ook fanatieke MP3-gebruikers zoals ik die een aantal singles en albums ook op vinyl heeft, wat natuurlijk juist een aanvulling is in plaats van iets dat door MP3 wordt vervangen.
De problemen die ik tegenkom hebben te maken met het feit dat MP3-bestanden bij een album horen, en op een MP3 CD staan, maar ik wil tevens registreren dat het album op de MP3 CD staat. Dat kan prima, maar er zijn ook audio CD's, en daar staan de tracks weer niet los van elkaar.
Ik zal het duidelijk maken met het ontwerp dat ik voor ogen heb (de tabellen voor de hitlijsten laat ik voor het gemak ff weg)
Een album of single heeft een aantal tracks. Deze tracks zijn niet verplicht op in te voeren, maar als je het lijstje hebt, dan is het wel leuk voor de extra info. Vandaar de tabel "track", die een nummer met een album verbindt. (track verwijst ook naar albumtitel, maar een omgekeerde "^" bestaat niet, daarom heb ik een "%" genomen voor een omgekeerde "^")
Verder heb ik een eerste aanzet tot een media-ontwerp gegeven. Mediasoorten zijn begrippen van media zoals een AudioCD, CD-ROM, LP of cassettebandje.
Een medium is een concreet ding dat je in bezit hebt, zoals "CD uit mijn CD-rek nummer..", "MP3 CD-ROM nummer..", etc.. Een verwijzing naar een medium gaat altijd gepaard met het nummer van het medium, zo krijg je een verwijzing naar een concreet ding zoals "MP3 CD-ROM 3" of "12inch no. 23".
code:
1
2
3
4
5
6
7
8
9
10
| -------->Artiest<-------Songtitel<--------------digitaal_audio_bestand | ^ ^ ^ ^ ^ | | | | | | |---------------videoclip_bestand | | | | | |--------------- | | | | | | | | | | | | Track audio_track % % | | | | |------->Medium | | | % | | | |---------Albumtitel % koppel----| Media_soort |
Op die media kunnen verschillende objecten staan, zoals een digitaal_audio_bestand (MP3), videoclip_bestand of een ouderwetse audiotrack die je op traditionele audio CD's maar ook LP's en cassettes terug vindt.
Prima tot nu toe..maar nu het probleem..hoe sla ik albums op?
Mijn redenatie die vastloopt: Ik kan natuurlijk in de reeks video_clipbestand, audio_track, etc.. ook het type "album" toevoegen, een album staat immers ook op een medium. Deze tabel verwijst dan niet naar een song_titel, maar een album_titel. Aan de hand van de "track" tabel kan de software dan de songs aflezen. Als het om een MP3-CD-ROM gaat, bestaat het album uit losse MP3's. Deze MP3's zijn terug te vinden via de tabel "digitaal_audio_bestand", waar de songs als het goed in staan. De entry's in de tabel "digitaal_audio_bestand" MOETEN naar een concreet medium wijzen, aangezien je geen fictieve MP3's gaat invoeren. Maar het album waar de MP3's op staan, verwijst ook al naar dat medium, wat tot gevolg heeft dat de MP3's er als het ware 2 keer op staan (1x als losse MP3's en 1x als onderdeel van een album)
Hebben jullie suggesties hoe ik het beter kan doen, zodat er een degelijk ontwerp uit komt?
[ Voor 0% gewijzigd door SvMp op 31-08-2002 12:56 . Reden: Layout wordt verneukt in Konqueror browser, in IE en Mozilla ziet het er ok uit ]