solbulleMedlem sedan mars 20015 287 inlägg 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 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 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 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 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
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 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 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 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 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