Permalänk
Medlem

Nybörjarproblem: Databaser

Hallå, jag håller på att pilla ihop en liten databas. En filmdatabas, inte så kreativt nej, men lärorikt. Saken är den att i min databas finns entiteten "Filmer" och i den finns fältet "Språk" som avser vilket språk filmen är på. I vissa filmer talas det flera språk, och jag vill kunna ange det utan att knappa in en lång sträng som "Engelska/Italienska/Tyska/Franska" då det blir lite knepigt med queries sen som jag har förstått det.

Några bra tips om hur jag kan lösa detta på ett snyggt vis?

Permalänk

Du kan ha en till tabell som du korsreferar till...

Du har alltså ännu en tabell med en referens till inlägget i filmer men en kolumner som heter alla språk. Så kan du ha en etta i kolumnen om den har språket och en nolla om den inte har. Så när du ska ta reda på språken använder du dig av det id:t från Filmer och hämtar ut ett entry i språktabellen. vet inte om du förstod något...

Du ska dock itne använda åäö i tabellnamn

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk

något i stil med

film id filmtitel sprak id spraknamn film_sprak id film_id sprak_id

på så vis blir länkningen mellan språk och film N<->N (många till många)

Permalänk
Medlem

Du menar att man har en linktable och sen en tabell med ett fält för filmens ID och sen fält för varje språk som förekommer i databasen, och då helt enkelt markera de språk som förekommer i varje film? Det skulle nog funka faktiskt.

Jag är fortfarande nyfiken på om det finns andra sätt att göra detta på. Jag kommer använda samma system för både länder som filmerna produceras i och språk som talas i filmerna. Så med ovanstående lösning blir det ju två nya linktables och två nya tabeller. Det blir kanske inte enklare än så.

Permalänk

en snabb lösning på det är ju att lägga till lite info om vad länkningen mellan språk och film är länktabellen:

film id filmtitel sprak id spraknamn film_sprak id film_id sprak_id tal producerad

och ha tal och release som boolean.

Lite seg idag, går säkert göra en snyggare lösning än så

Permalänk
Medlem

Tack ska ni ha, nu är arbetet i rullning igen.

Permalänk

Movie Id Title Languages Id Name MovieLanguage Movie Language

Mr. Ping Pong: Du ska inte ha ett Id i tabellen ``film_sprak'' då tabellen inte är en entitet utan enbart förklarar en relation imellan en entitet och dess attribut.

I kod skulle detta förhållande förklaras med listor.

Dvs, förhållandet ska vara 1->* och inte N<->N. Det är väldigt ointressant att ta reda på vilka filmer som är gjorda i ett visst språk, det kommer generera enormt många resultat, så därför tar vi bort detta. Vad vi får kvar då är en film med flera språk där samma språk kan nyttjas av flera filmer, men detta ska inte själva modellen reflektera utan det ska hållas innanför infrastrukturslagret.

Lite C# kod...

class Movie { public int Id { get; set; } public string Title { get; set; } public ICollection<Language> Languages { get; set; } } class Language { public int Id { get; set; } public string Name { get; set; } }

Tabellen MovieLanguage ska inte existera som en klass. Den ska inte finnas alls, utan den är helt enkelt en implementation av en abstrakt relation.

Permalänk
Citat:

Ursprungligen inskrivet av hagbarddenstore

...
Mr. Ping Pong: Du ska inte ha ett Id i tabellen ``film_sprak'' då tabellen inte är en entitet utan enbart förklarar en relation imellan en entitet och dess attribut.

I kod skulle detta förhållande förklaras med listor.

Dvs, förhållandet ska vara 1->* och inte N<->N. Det är väldigt ointressant att ta reda på vilka filmer som är gjorda i ett visst språk, det kommer generera enormt många resultat, så därför tar vi bort detta. Vad vi får kvar då är en film med flera språk där samma språk kan nyttjas av flera filmer, men detta ska inte själva modellen reflektera utan det ska hållas innanför infrastrukturslagret.
...

Så sant. Skrev dit 'id' på ren automatik. en unik primärnyckel i film_sprak är givetvis irrelevant som du säger.

Angående relationen mellan sprak<->film borde väll kunna benämna den som en många till många relation även om det inte är direkt vanligt att man hämtar ut alla filmer som har ett visst språk (även om detta kan vara ett sökkriterie i en fråga till databasen)?

Har du några förslag förresten på vad som är vettigast att göra med den andra delen i frågan som Abbo ställde där han vill få med om en länk mellan film och sprak innebär att filmen finns i det språket och/eller är producerad på det språket?

Permalänk
Citat:

Ursprungligen inskrivet av Mr. Ping Pong
Så sant. Skrev dit 'id' på ren automatik. en unik primärnyckel i film_sprak är givetvis irrelevant som du säger.

Angående relationen mellan sprak<->film borde väll kunna benämna den som en många till många relation även om det inte är direkt vanligt att man hämtar ut alla filmer som har ett visst språk (även om detta kan vara ett sökkriterie i en fråga till databasen)?

Har du några förslag förresten på vad som är vettigast att göra med den andra delen i frågan som Abbo ställde där han vill få med om en länk mellan film och sprak innebär att filmen finns i det språket och/eller är producerad på det språket?

FilmID och SpråkID blir väl en sammansatt unik primärnyckel i film_sprak?

Permalänk
Citat:

Ursprungligen inskrivet av mel0dy
FilmID och SpråkID blir väl en sammansatt unik primärnyckel i film_sprak?

Stämmer, även om det mig veteligen inte finns några metoder för att förhindra att samma FilmID och SpråkID (i kombination) kommer förekomma mer än en gång.

Permalänk
Citat:

Ursprungligen inskrivet av Mr. Ping Pong
Stämmer, även om det mig veteligen inte finns några metoder för att förhindra att samma FilmID och SpråkID (i kombination) kommer förekomma mer än en gång.

Det ska väl förhindras när man sätter de till sammansatt primärnyckel.

Visa signatur

Nikon D90, Nikon D7000, SB-600, 2xYN-460, Nikkor 18-105mm/3.5-5.6 VR, Nikkor 35mm/1.8, Nikkor 50mm/1.8D, Tamron 70-200/2.8, Tokina 11-16/2.8, Nikon 85/3.5 Macro
Flickr

Permalänk
Citat:

Ursprungligen inskrivet av [ABF]Henkeman
Det ska väl förhindras när man sätter de till sammansatt primärnyckel.

Sant, märks att man är rostig på databaser. dags att plöja igenom ett par gamla anteckningar igen märker jag