WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Databasdesign (https://www.wn.se/forum/showthread.php?t=9003)

koala 2005-07-22 14:32

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?

Eddie 2005-07-22 14:45

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.

Robert 2005-07-22 14:57

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.

grazzy 2005-07-22 15:10

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.

Filip 2005-07-22 16:11

Använder aldrig _
Utan istället: enJätteViktigTabell

eg0master 2005-07-22 16:50

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.

Susanne 2005-07-22 23:17

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.

Robert 2005-07-22 23:31

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.

eg0master 2005-07-23 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/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?

Susanne 2005-07-23 04:12

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?


Alla tider är GMT +2. Klockan är nu 16:02.

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