|  | 		    
					
        
         
          
         
	
          | |  | En eller flere tabeller Fra : Ukendt
 | 
 Dato :  13-02-09 22:58
 | 
 |  | Hej.
 
 Jeg har brug for lidt eksperthjælp til den optimale opbygning af en
 database, der skal ligge bag en hjemmeside. Det er lavet i MS SQL 2005
 Express.
 
 Webstedets indhold er data hentet fra databasen.
 
 Hjemmesidens sider deles op i forskellige kategorier
 
 Inde i mit administrationsområde skal jeg kunne få vist en liste over -
 enten alle sider eller opdelt efter kategori. Derfor har jeg lavet en tabel
 der hedder Category med catID og catName
 
 I nævnte liste skal jeg kunne se et ikon, om siden er offentlig eller ikke
 offentlig. Jeg skal kunne se sidens ID (integer), dato, titlen på siden,
 kategorien, forfatteren samt antallet af hits, som jeg også vil gemme og
 vise.
 
 Til sidst skal jeg på selve siden kunne se selve indholdet.
 
 Mit spørgsmål går nu på, om jeg bør oprette det i en eller flere tabeller og
 HVOR selve delingen evt. skal være.
 
 De bedste hilsener
 
 
 
 
 |  |  | 
  Troels Arvin (14-02-2009) 
 
	
          | |  | Kommentar Fra : Troels Arvin
 | 
 Dato :  14-02-09 14:08
 | 
 |  | Niels Ravn wrote:
 > Inde i mit administrationsområde skal jeg kunne få vist en liste over -
 > enten alle sider eller opdelt efter kategori. Derfor har jeg lavet en
 > tabel der hedder Category med catID og catName
 
 Du kan nøjes med kolonnen catName i denne tabel: Du vil vel ikke have
 flere kategorier med samme navn? Hvis du dropper det intetsigende catID,
 vil du stadig kunne holde snor i dine kategorier, men du kan slippe for
 konstant at skulle join'e mellem side-tabellen og kategori-tabellen. (Din
 side-tabel bliver en anelse mere omfangsrig, hvis du gemmer kategorien
 som tekst, men det opvejes at mindre behov for jons. Og hvis du dropper
 catID, bliver din datamodel og dine queries simplere.)
 
 Bemærk: Det forbedrer ikke normaliseringsgraden at indskyde ID-kolonner.
 
 > I nævnte liste skal jeg kunne se et ikon, om siden er offentlig eller
 > ikke offentlig. Jeg skal kunne se sidens ID (integer), dato, titlen på
 > siden, kategorien, forfatteren samt antallet af hits, som jeg også vil
 > gemme og vise.
 
 Overvej, om en side skal kunne indgå i flere kategorier. I så fald er der
 måske mere tale om "tags" i stedet for kategorier. Og i få fald bliver
 man nødt til at indsætte en mange-til-mange associationstabel mellem
 kategori- og side-tabellerne.
 
 Overvej din sidetælle-logik: Hvis der kommer meget pres på siderne, kan
 det skabe låsnings-situationer, hvis en sidevisning må vente på, at der
 lige opdateres side-tæller for en anden brugers besøg. Hvis jeg var dig,
 ville jeg i stedet indsætte en række i en særlig optællingstabel for
 hvert besøg, og så engang imellem foretage nogle udtræk som kunne give
 dig den ønskede hit-opgørelse. - Eller jeg ville se, om jeg ikke bare
 kunne benytte mig af web-serverens logfil.
 
 --
 Troels
 
 
 |  |  | 
  Ukendt (14-02-2009) 
 
	
          | |  | Kommentar Fra : Ukendt
 | 
 Dato :  14-02-09 17:32
 | 
 |  | "Troels Arvin" <troels@arvin.dk> skrev i en meddelelse
 news:gn6fn5$eva$1@news.net.uni-c.dk...
 > Niels Ravn wrote:
 >> Inde i mit administrationsområde skal jeg kunne få vist en liste over -
 >> enten alle sider eller opdelt efter kategori. Derfor har jeg lavet en
 >> tabel der hedder Category med catID og catName
 >
 > Du kan nøjes med kolonnen catName i denne tabel: Du vil vel ikke have
 > flere kategorier med samme navn? Hvis du dropper det intetsigende catID,
 > vil du stadig kunne holde snor i dine kategorier, men du kan slippe for
 > konstant at skulle join'e mellem side-tabellen og kategori-tabellen. (Din
 > side-tabel bliver en anelse mere omfangsrig, hvis du gemmer kategorien
 > som tekst, men det opvejes at mindre behov for jons. Og hvis du dropper
 > catID, bliver din datamodel og dine queries simplere.)
 >
 > Bemærk: Det forbedrer ikke normaliseringsgraden at indskyde ID-kolonner.
 >
 >> I nævnte liste skal jeg kunne se et ikon, om siden er offentlig eller
 >> ikke offentlig. Jeg skal kunne se sidens ID (integer), dato, titlen på
 >> siden, kategorien, forfatteren samt antallet af hits, som jeg også vil
 >> gemme og vise.
 >
 > Overvej, om en side skal kunne indgå i flere kategorier. I så fald er der
 > måske mere tale om "tags" i stedet for kategorier. Og i få fald bliver
 > man nødt til at indsætte en mange-til-mange associationstabel mellem
 > kategori- og side-tabellerne.
 >
 > Overvej din sidetælle-logik: Hvis der kommer meget pres på siderne, kan
 > det skabe låsnings-situationer, hvis en sidevisning må vente på, at der
 > lige opdateres side-tæller for en anden brugers besøg. Hvis jeg var dig,
 > ville jeg i stedet indsætte en række i en særlig optællingstabel for
 > hvert besøg, og så engang imellem foretage nogle udtræk som kunne give
 > dig den ønskede hit-opgørelse. - Eller jeg ville se, om jeg ikke bare
 > kunne benytte mig af web-serverens logfil.
 
 Hej Troels.
 
 Det var lærerigt. Jeg kigger på det.
 
 Ha' det rart
 
 
 
 
 |  |  | 
  Leif Neland (16-02-2009) 
 
	
          | |  | Kommentar Fra : Leif Neland
 | 
 Dato :  16-02-09 18:57
 | 
 |  | 
 >
 > Overvej din sidetælle-logik: Hvis der kommer meget pres på siderne, kan
 > det skabe låsnings-situationer, hvis en sidevisning må vente på, at der
 > lige opdateres side-tæller for en anden brugers besøg. Hvis jeg var dig,
 > ville jeg i stedet indsætte en række i en særlig optællingstabel for
 > hvert besøg, og så engang imellem foretage nogle udtræk som kunne give
 > dig den ønskede hit-opgørelse. - Eller jeg ville se, om jeg ikke bare
 > kunne benytte mig af web-serverens logfil.
 
 At have tælleren indbygget i indholdstabellen er også uhensigtsmæssigt
 af to grunde:
 
 1: Hvis du kører incrementalbackup, så er det en record på måske et par
 KB, der bliver ændret. Er tælleren i en separat tabel, er det kun et par
 bytes. Så din diff bliver meget mindre.
 
 2: Et "sidst opdateret" felt kan ikke køre med automatisk opdatering
 (timestamp), da det jo vil blive opdateret hver gang der er et hit.
 Så du må selv opdatere timestamp, når du opdaterer indholdet.
 
 (Kan dog klares med "UPDATE contents SET hits=hits+1,
 sidst_opdateret=sidst_opdateret WHERE id=..."
 
 Leif
 
 
 |  |  | 
 |  |