Kom ihåg mig?
Home Menu

Menu


Databasdesign

Visa resultat för omröstning: No question avaiable to import.
Ja 3 50.00%
Nej 0 0%
Vet inte 0 0%
Ibland 3 50.00%
Antal röster: 6. Du får inte rösta i den här omröstningen

 
Ämnesverktyg Visningsalternativ
Oläst 2005-07-22, 14:32 #1
koalas avatar
koala koala är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Sep 2004
Inlägg: 1 154
koala koala är inte uppkopplad
Har WN som tidsfördriv
koalas avatar
 
Reg.datum: Sep 2004
Inlägg: 1 154
När man designar en databas finns det olika konventioner för att namnge tabeller och fält. Jag har inte tänkt särskilt mycket på att följa någon standard utan namngett tabeller och fält lite hur som helst. Nu ska jag börja följa den här standarden eftersom jag tycker att den verkar vettig: Essential Database Naming Conventions (and Style) by Justin Watt

Kortfattat:
- tabellnamn i singular (hittills har jag haft dem i plural)
- fält döps till tabellnamn_fältnamn
- primärnycklar döps till tabellnamn_id
- endast gemener (ej VERSALER) får användas
- datum prefix: date_
- booleska prefix: is_

Hur gör ni andra när ni desingar databaser?
koala är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-07-22, 14:45 #2
Eddie Eddie är inte uppkopplad
Medlem
 
Reg.datum: Jan 2005
Inlägg: 83
Eddie Eddie är inte uppkopplad
Medlem
 
Reg.datum: Jan 2005
Inlägg: 83
Jag gör ganska mycket av det där, men jag använder aldrig _ för att skilja på ord utan kör allt i ett ord.
Eddie är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-07-22, 14:57 #3
Roberts avatar
Robert Robert är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jan 2004
Inlägg: 2 103
Robert Robert är inte uppkopplad
Klarade millennium-buggen
Roberts avatar
 
Reg.datum: Jan 2004
Inlägg: 2 103
tabellnamn_kolumnnamn

...men funderar på att köra en förkortning av tabellnamn när det ingår i kolumnnamnet då det annars kan bli fasligt långt.

Som notation använder jag typ:
dtFältnamn - datum
nFältnamn - numeriskt värde (oavsett storlek)
sFältnamn - strängar
bFältnamn - boolean

Tabellnamnen har första bokstaven i projektnamnet som prefix så att de sorteras skilt ifrån sqlserverns egna tabellnamn.

Så exempelvis en tabell som heter n_news_keywords får fältnamn som heter
nkw_nID
nkw_sName
nkw_dCreatedDate

etc... blir ganska lätt att se både vilken tabell kolumnen tillhör samt dess datatyp.
Robert är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-07-22, 15:10 #4
grazzy grazzy är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Mar 2004
Inlägg: 3 471
grazzy grazzy är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Mar 2004
Inlägg: 3 471
Jag använder nästan alla de där reglerna. Det ger sig rätt logiskt så dock tycker jag.

Edit: primärnycklarna har jag alltid haft lite svårt för att döpa till tabellnamn_id dock, brukar köra förstabokstaven i tabellen istälet, f_id. Jobbigt med långa namn tex tabell1.tabell2_id när man skriver frågor.
grazzy är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-07-22, 16:11 #5
Filips avatar
Filip Filip är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jan 2003
Inlägg: 935
Filip Filip är inte uppkopplad
Mycket flitig postare
Filips avatar
 
Reg.datum: Jan 2003
Inlägg: 935
Använder aldrig _
Utan istället: enJätteViktigTabell
Filip är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-07-22, 16:50 #6
eg0master eg0master är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 898
eg0master eg0master är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 898
Jag föreslår att ni som gillar ungersk notation (dvs att ange datatyp med prefix i namnet) börjar läsa här:
http://www.sqlservercentral.com/columnists...ongseries_1.asp
Det är ju ingen slump att MS själva (som ju i princip är upphovsmännen till ungersk notation) avråder från att använda ungersk notation iom lanseringen av VS.NET och C#.

Sedan tycker jag att eftersom man ändå kör case INsesitive i databasen så är det skitsamma med case (se fler artiklar i länken ovan).

Att döpa kolumnerna till tabell_kolumn blir bara drygt i längden (mkt att skriva) och tillför ingenting (utom längre kolumnnamn).
Exempel:
Kod:
SELECT mytable_ID, mytable_mycolumn1, mytable_mycolumn2 FROM mytable
vs
SELECT mytable.ID, mytable.mycolumn1, mytable.mycolumn FROM mytablewithlongname AS mytable
Det enda vettiga (i din sammanfattning) är singularis för tabellnamn. I övrigt så tycker jag många av hans tips luktar lång väg av brist på erfarenhet och/eller insikt.
eg0master är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-07-22, 23:17 #7
Susannes avatar
Susanne Susanne är inte uppkopplad
Medlem
 
Reg.datum: Jan 2004
Inlägg: 89
Susanne Susanne är inte uppkopplad
Medlem
Susannes avatar
 
Reg.datum: Jan 2004
Inlägg: 89
Citat:
Originally posted by eg0master@Jul 22 2005, 16:50
Sedan tycker jag att eftersom man ändå kör case INsesitive i databasen så är det skitsamma med case (se fler artiklar i länken ovan).
Men man kan ju köra Case Sensitive i databasen.
Susanne är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-07-22, 23:31 #8
Roberts avatar
Robert Robert är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jan 2004
Inlägg: 2 103
Robert Robert är inte uppkopplad
Klarade millennium-buggen
Roberts avatar
 
Reg.datum: Jan 2004
Inlägg: 2 103
Citat:
Originally posted by eg0master@Jul 22 2005, 16:50
Att döpa kolumnerna till tabell_kolumn blir bara drygt i längden (mkt att skriva) och tillför ingenting (utom längre kolumnnamn).
Det finns tillfällen då man måste ha alla kolumnnamn unika per databas för att undvika diverse strul. Men som sagt, alla har ju inte det behovet.
Robert är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-07-23, 01:16 #9
eg0master eg0master är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 898
eg0master eg0master är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 898
Citat:
Citat:
Sedan tycker jag att eftersom man ändå kör case INsesitive i databasen så är det skitsamma med case (se fler artiklar i länken ovan).
Men man kan ju köra Case Sensitive i databasen.
Läs denna i samma serie som ovan för fler synpunkter på case sensitive databaser.
http://www.sqlservercentral.com/columnists...iveoranythi.asp
Bara för att man kan innebär inte att det är lämpligt. Min bil kan köras i 250km/h. Det är kanske inte lämpligt. Man kan som man klä sig i rosa klänning innan en anställningsintervju, men det är inte lämpligt. :P

Citat:
Det finns tillfällen då man måste ha alla kolumnnamn unika per databas för att undvika diverse strul. Men som sagt, alla har ju inte det behovet.
Kan du ge ett exempel?
eg0master är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-07-23, 04:12 #10
Susannes avatar
Susanne Susanne är inte uppkopplad
Medlem
 
Reg.datum: Jan 2004
Inlägg: 89
Susanne Susanne är inte uppkopplad
Medlem
Susannes avatar
 
Reg.datum: Jan 2004
Inlägg: 89
Citat:
Originally posted by eg0master@Jul 23 2005, 01:16
Citat:
Citat:
Sedan tycker jag att eftersom man ändå kör case INsesitive i databasen så är det skitsamma med case (se fler artiklar i länken ovan).
Men man kan ju köra Case Sensitive i databasen.
Läs denna i samma serie som ovan för fler synpunkter på case sensitive databaser.
http://www.sqlservercentral.com/colu...veoranythi.asp
Bara för att man kan innebär inte att det är lämpligt. Min bil kan köras i 250km/h. Det är kanske inte lämpligt. Man kan som man klä sig i rosa klänning innan en anställningsintervju, men det är inte lämpligt. :P
Självklart inte
Nu upptäckte jag att jag tolkat det som skrivits lite fel. Det jag menade var att man kan ju döpa tabellnamnen case sensitive, inte att all data i databasen behöver vara det också.
Tycker du att det är en dålig idé det med?
Susanne är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 03:29.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017