webForumDet fria alternativet

Databaser/ASP/SQL

1 svar · 223 visningar · startad av devotion

devotionMedlem sedan jan. 20013 582 inlägg
#1

Hej!
Har just börjat intressera mig för ASP och dess fantastiska värld. För att ha något att träna på har jag tänkt göra en databas av min CD-samling med ett webgränssnitt gjort i ASP. Jag vill därför inte använda Access till att lägga data i databasen utan vill helt använda webbaserade formulär. Där kommer problemet...

Databasen är konstruerad på följande sätt:

3 st tabeller:
artist album song
------ ----- ----
artist_id album_id song_id
artist_namn artist_id album_id
album_namn song_namn
album_release song_lengd

Följande relationer finns i tabellerna:

artist album song
------ ----- ----
artist_id <1:N> artist_id
album_id <1:N> album_id

En artist kan ha flera album och ett album kan ha flera sånger.

För det första; är detta en bra uppdelning? Har tänkt på att en sång också kan finnas på flera album...

Då till det första problemet:
Jag har tänkt göra en inmatningssida för att fylla på med data som skall vara utformad ungefär så här:

Artist:...........
Album:............
Album release:..........

Låt 1:........... Längd:.........
Låt 2:........... Längd:.........
Osv

<Skicka poster!> <Radera!>

När man klickar på <Skicka poster!> ska informationen läggas in i rätt tabell. Hur gör man detta på ett bra sätt? Om det är så att t. ex Madonna redan finns i tabellen "artist" vill jag ju inte att hon ska läggas till igen utan bara att artist_id hämtas och läggas in i tabellen "album", där sedan resten av informationen läggs in.

Förfarandet skall vara så här om man vill lägga till en CD-skiva:

1. Kontrollera om artist redan finns i databasen. Om så inte är fallet -lägg till artisten.

2. Hämta artist_id.

3.Lägg till en rad i tabellen album som associerar den med artist_id.

4. Hämta album_id.

5. Lägg till en rad för varje låt i tabellen song som associerar med album_id.

Då kommer nästa problem!

Alla CD-skivor har ju inte samma antal låtar! Hur kan man göra det på ett smidigt sätt? Jag vill ju inte ha en massa tomma poster som associerar med album!

Jag har haft lite idéer om att göra ett standarformulär med 15 rader för låtar, men då kommer man ju till problemet med tomma poster. En annan idé har varit att göra registreringen av CD i tre steg. skriva in om Artist och Album, skicka informationen returnera album_id och på nästa sida välja antal låtar på skivan, skicka denna information som returnerar ett formulär med rätt antal fält där man skriver in låtarna och skickar till databasen. Denna lösning tycker jag inte verkar så smidig. Det måste ju finnas bättre sätt!

Jag vill ha flera tabeller i databasen för att göra den mer flexibel och kraftfull.

En annan fråga om Access; spelar det någon roll om man lägger till relationer där om man ska använda ASP och SQL för att bearbeta databasen/tabellerna?

Hoppas det finns någon som har lite ideér och lösningar på mina problem och tankar!

Tack på Förhand!

Henrik Lindell
Göteborg

------------------
Henke

BendroMedlem sedan jan. 20013 039 inlägg
#2

Med reservation för att jag ev. har läst fel eller misstolkat dig så har jag lite ideer.

Artist: Art_Id, Art_fnamn, Art_Enamn (plus vad du vill ha för info om artisten, dock inte vilka album han/hon är med på. Det löser vi senare.)

Album: Alb_Id, Alb_namn, Alb_inspÅr, Alb_bolag....etc

Song: S_Id, S_namn, S_längd....etc

För att få saker och ting dynamiskt och för att undvika att samma artist måste läggas in flera gånger i Artister använder du dig av mellantabeller som kopplar samman huvudtabellerna.

t.ex
art_alb:art_albId, artId, albId
alb_song:alb_songId, alb_id, song_id

Om du vill veta vilka skivor Madonna har släppt så för du söka med en Inner Join..först letar du upp Madonna i Artist...sedan letar du med hjälp av hennes Art_Id upp vilka skivor hon är med på i art_alb tabellen. Där får du ett alb_id som du använder för att hämta information om skivan i Album. Du kan sedan gå vidare med hjälp av alb_id och söka i alb_song för att få veta vilka låtar som är med på den skivan o.s.v. Som du ser kan man söka fram och tillbaka ganska obehindrat, och man slipper en massa upprepningar i databasen.

Hade jag fattat rätt...och var jag tydlig nog? Om inte får du höra av dig.

(Jag brukar undvika specialtecken (å, ä ö etc) i tabellnamnen, men har skrivit ut dom i exemplet ovan för att du lättare skall se vad jag menar.)

------------------
"You can not solve todays problems with the same level of thinking that created the problems in the first place" Albert Einstein

129 ms totalt · 3 externa anrop · v20260731065814-full.cf67ef55
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)