webForumDet fria alternativet

Databaslayout, filmdatabas, igen...

9 svar · 389 visningar · startad av solbulle

solbulleMedlem sedan mars 20015 287 inlägg
#1

Databaslayout. Filmer.
Min databas som är uppbyggd av med hjälp av relationer ser ut som nedstående. Nu vill jag lägga till fakta såsom ljudsystem, språk mm.
Ska jag göra en separat tabell för varje sådan pryl, typ tbl_language samt tbl_sound som i sig innehåller en räknare samt en text med förklaring/fakta och sen lägga in detta som en post i tabellen tbl_movie.
Det nya som frågan gäller är fetmarkerat.

Min databas:

tbl_movie_title
---------------
- fld_mt_id Räknare (int autonumber)
- fld_mt_name Text(255)
- fld_mt_desc PM

tbl_person
----------
- fld_p_id Räknare (int autonumber)
- fld_p_firstname Text(255)
- fld_p_lastname Text(255)
- fld_p_bio PM

tbl_movie
---------
- fld_m_mtid Tal
- fld_p_id Tal
- fld_o_id Tal
- fld_s_id Tal
- fld_l_id Tal

tbl_occupation
---------
- fld_o_id Räknare (int autonumber)
- fld_o_title Text

1 huvudroll
2 producent
3 biroll
4 regisör

tbl_language
---------
- fld_l_id Räknare (int autonumber)
- fld_l_title Text

tbl_sound
---------
- fld_s_id Räknare (int autonumber)
- fld_s_title Text

------------------
/solbulle
Hemmabio | Spelautomater | The Who

LarsGMedlem sedan dec. 200012 464 inlägg
#2

Det beror på hur mycket information du lagrar för varje språk/ljudsystem.

Om du bara sparar

engelska
finska

et.c. så finns det ingen anledning att lägga det i en egen tabell. Om du däremot vill lagra flera olika attribut för ett ljudsystem/språk så är det bäst att lägga det som en egen tabell.

------------------
essentitia preter non sans multiplicandum

solbulleMedlem sedan mars 20015 287 inlägg
#3

Tex:

tbl_language
---------
- fld_l_id Räknare (int autonumber)
- fld_l_title Text

I den kommer fld_l_title innehålla ca 20-25 poster, just så som engelska, finska mfl. Ingen annan info, eller fält (fn) har jag tänkt skall vara med. Är det "tillräckligt" för en egen tabell tycker du?

Fördelen med att ha olika tabeller är väl att det blir lättare att söka alla poster som hör ihop (i min tabell som kopplar ihop alltihop) och man slipper söka i ovidkommande data (läs ovidkommande tabeller.)
Nackdelen som jag ser det är att det blir ett fasligt öppnande o stängande av tabeller för att få ut all data när den väl behövs.(?)

------------------
/solbulle
Hemmabio | Spelautomater | The Who

LarsGMedlem sedan dec. 200012 464 inlägg
#4

I fallet med språk så ser jag ingen anledning till en egen tabell. Om du vill ha en effektiv sökning på alla filmer på ett visst språk så kan du skapa ett index på den kolumnen.

------------------
essentitia preter non sans multiplicandum

solbulleMedlem sedan mars 20015 287 inlägg
#5

2 frågor:

Ok... men då kommer man ju ovillkorligen till att "samma data lagras flera gånger" i min tabell, och det ska man undvika, har jag läst?

Fast kom på en annan sak också just vad det gällde språk, en film tex kan finnas på flera språk så i just detta fall kanske det kan vara motiverat med en separat tabell,-språk, eftersom det blir lättare att skapa flera relationer i min relationstabell mellan filmtitel - språk.
Kan det vara en vettig tanke?

------------------
/solbulle
Hemmabio | Spelautomater | The Who

Stefan HolmbergMedlem sedan aug. 200136 inlägg
#6

Jag tycker nog du skall ha en egen tabell ändå. 'Rätt' design är sas aldrig fel - börja med detta och försök inte optimera innan du stött på problem.

Man vet aldrig om du måste uppdatera något språk, tex kanske du efter ett tag märker att serbocroatiska stavas med k stället för c eller ngt sånt.

Rent prestandamässigt blir det ingen märkbar skillnad heller, speciellt inte med så små tabeller - du kan räkna med att Access ( det är väl det du använder ) optimerar frågan och har join-tabellerna i primärminnet.

------------------
ASPCode.net | ASP/SQL Hosting för utvecklare! |

LarsGMedlem sedan dec. 200012 464 inlägg
#7

Visst skall man undvika dubbellagring, men man behöver inte gå till överdrift. Lika gärna som man har ett id på 4 byte kan man ha en textsträng på 10 byte.

Om en film kan associeras med flera olika språk så måste du ha det som en separat tabell.

------------------
essentitia preter non sans multiplicandum

solbulleMedlem sedan mars 20015 287 inlägg
#8

Lysande, era svar glädjer mig.
Jag börjar så smått få grepp om det hela och förstår helt klart din synpunkt om utrymmet.
Men alltid kul att jag själv ;) insåg nyttan med att just i detta fallet ha en separat tabell.

Det script jag nu håller på med har jag i princip redan gjort med en tabell tidigare, där jag dubbellagraat allt. I och med detta fick jag svårigheter när det skulle vara tex flera språk, flera huvudroller mm mm, så därför gör jag om det nu för att försöka få det "så rätt som möjligt."

Jag tackar för er uthållighet med mig, o andra med för den delen...

------------------
/solbulle
Hemmabio | Spelautomater | The Who

jorgenMedlem sedan feb. 20012 412 inlägg
#9

Hej, det finns tre ganska enkla regler om normalisering vid uppbyggnad om en databas. Dessa 3 regler skapades av en person vid namn Codd på 70-talet. Genom att ta hänsyn till dessa tar datan oftast mindre plats plus att det blir enklare att hämta ut rätt data.

*** First normal form (1NF) ***

Är en tabell normaliserad till första graden saknar den flera kolumner som innehåller samma information.

Istället för en mastodonttabell struktureras tabellen till flera mindre. Vilket ofta leder till att information kan ändras utan att information raderas eller att det blir nödvändigt att bygga om tabellstrukturen.

*** Second normal form (2NF) ***

Är en tabell som är normaliserad till första graden och alla kolumner som inte är nycklar är helt och fullt beroende av nyckelkolumnen

Vilket gör att datan kan kategoriseras på ett effektivt sätt i olika tabeller. Information kan läggas till och tas bort utan att påverka andra data.

*** Third normal form (3NF) ***

Är en tabell som är normaliserad till andra graden och förbättrad så att inga tabeller innehåller information som berör mer än en sak.

Vilket gör att tabellerna kan utökas och lagra mer information om en viss kategori än man från början hade tänkt sig. En kontrollerad tillväxt på databasen är mer eller mindre säkrad beroende på hur noggrant man gjort normaliseringen.

Jag hade mycket problem med mina sql-frågor tidigare vilket lädde till att jag läste en bok om normalisering av databaser. Vilket jag haft nytta av. Hoppas ni har nytta av ovanstående tips.

mvh Jörgen :)

------------------
.: Det är jag som ger svaren och det är Ni som ställer frågorna :.

[Redigerat av jorgen den 04 jan 2002]

solbulleMedlem sedan mars 20015 287 inlägg
#10

Det där ska jag skriva ut och hänga upp på väggen!
Jag tycker nog det känns som att jag är på rätt väg nu i alla fall.

------------------
/solbulle
Hemmabio | Spelautomater | The Who

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