/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
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

Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409071
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste