Avatar billede cdull Nybegynder
19. november 2010 - 13:11 Der er 13 kommentarer og
2 løsninger

MS navngivning af klasser og db tabeller

Jeg har et spørgsmål til korrekt navngivning af klasser og de tabeller de skal ligge i, i databasen.

Hvis jeg har en klasse som hedder f.eks Person, eller Activity, skal tabellen i databasen så hedder det samme, altså, Person og Activity, eller skal det være deres grammatiske flertals stavelser, Persons og Activities.

Hvad er best practice for .NET og MSSQL.

et ekstra spørgsmål er, skal tabelnavnet skrives med små bogstaver, eller skal første bogstav være stort.

Thanks.
Avatar billede Syska Mester
19. november 2010 - 13:33 #1
Jeg bruger altid flertal, da der er flere personer i en table.

Derudover bruger jeg stort start bogstav ligesom med .NET,

Persons
  PersonId
  Name
  Age

Jeg angiver også altid hvad Id det er ... og ikke bare Id, da det gør mine joins mere overskuelige.

I ældre tid var det vist normalt at have: "tbl_" som prefix ... men det synes jeg er en mærkelig ting at gøre i dag.

Overstående er min personlige mening ...
Avatar billede cdull Nybegynder
19. november 2010 - 13:40 #2
Tak for svaret. Jeg gør det samme, bortset fra PersonId.
Jeg har længe overvejet om jeg skulle gøre det, da joins netop bliver meget mere overskuelige.

Burde PersonId ikke være PersonID ? Mener at jeg læste at "ord" på under 3 karakterer altid skal stå med 2 store bogstaver.

Nogle anbefaler også at bruge _ imellem ord. Person_ID.
Er der nogen som kender til den måde at gøre det på?
Avatar billede Syska Mester
19. november 2010 - 13:52 #3
Det ville jeg ikke gøre ... kun hvis du kun bruger lower case.

DetErJoNemtAtSeHvordanDenHerSætningSkalLæsesPgaDeStoreBogStaver :-)

Det andet gør det selvfølgelig endnu nemmere at læse, men mere træls at skrive ... da man nu skal til at lave underscore hele tiden.

mvh
Avatar billede Syska Mester
19. november 2010 - 13:53 #4
Ja, den med Id er mærkeligt ... der er jeg selv i tvivl om hvad jeg gør ... men tror jeg er på vej over mod "Id" i stedet for "ID".

mvh
Avatar billede arne_v Ekspert
19. november 2010 - 22:48 #5
MS har offentliggjordt en navngivnings standard for .NET - medmindre du har meget god grund til at afvige fra den, så følg den slavisk.

Den siger XxxYyyZzz fremfor noget med underscore i.

På .NET siden er ental/flertal ret klart. En klasse Person repræsenterer en person mens en klasse Persons indeholde flere personer (kunne f.eks. indeholde en List<Person>).

På database siden er det lidt mere grumset.

tbl_xxxx ser ikke pænt ud. Det er jo reelt en form for ungarsk notation og den er opgivet idag (vbortset fra legacy Win C/C++).

Om du vil bruge ental eller flertal for tabel navne er åbent. Nogen bruger det ene. Nogen bruger det andet.

Jeg ville nok vælge ental fordi visse tools defaulter til forventet tabelnavn = klassenavn.

Med hensyn til casing er der også forskellig brug.

Jeg plejer at bruge all lowercase for navne i databasen. Fordi all uppercase for SQL keywords og all lowercase for navne synes jeg gør SQL sætninger nemmere at læse.
Avatar billede Syska Mester
19. november 2010 - 23:12 #6
Enig i alt ... holder dog casing på samme måde i min SQL db, men det er et fint argument med det ...

SELECT * FROM Persons WHERE PersonId = 10

SQL plejer jeg at skrive som overstående ... og ja, måske endnu nemmere at læse hvis alle ens columns/tables var med små bogstaver ... men en lille ting.

mvh
Avatar billede cdull Nybegynder
20. november 2010 - 00:11 #7
Gode svar.

God pointe arne_v med forskellen på cases i SQL sætninger.
Vil du også her holde tabelnavne med lowercase?
Avatar billede arne_v Ekspert
20. november 2010 - 00:17 #8
Ja. Med begrundelsen i SQL læsbarhed.

Undtagelsen er hvis ens ORM tool er case sensitivt og capitalized class name giver capitalized tabel navn.
Avatar billede janus_007 Nybegynder
20. november 2010 - 12:47 #9
Ja jeg holder også tabelnavne i flertal og Id med lille d :) Jeg syntes at huske FxCop meldte fejl hvis det var ID.

Derudover prefixer jeg tabelnavne med t og views med v, sprocs med sp (uden underscore), functions med fn - det er ikke alle der er enige heri, men det er vitterligt nemmere at finde ud af når man sidder på databasen.

PK navngiver jeg altid med tabelnavn + Id og FK giver sig selv og det er til at forstå når man kigger i tabellen.

På et tidspunkt lowercasede jeg tabelnavne, men det er jeg gået væk fra.

På C# siden overholder jeg MS-namingconvention :)
Avatar billede Syska Mester
20. november 2010 - 13:05 #10
Gør også overstående, men ikke på table navne ... med ORM's gider jeg ikke til at skulle fjerne prefix ...

Men som du selv siger Janus, så er det ikke noget verden går under af ... de fleste ting i SQL verdenen er personlige præferences.

Overstående guide lines kan være fornuftige hvis man er i et miljø med mange views, sp, functions og tables, så ville det give god mening, men de fleste i dag har ORM's og bruger ikke databasen til andet end tables.

mvh
Avatar billede arne_v Ekspert
27. december 2010 - 00:28 #11
cdull - tid at få afsluttet her?
Avatar billede cdull Nybegynder
27. december 2010 - 00:51 #12
Ja. Smider i ikke nogle svar?
Avatar billede arne_v Ekspert
27. december 2010 - 01:45 #13
svar
Avatar billede cdull Nybegynder
06. januar 2011 - 11:13 #14
Buzzzz? Svar?
Avatar billede Syska Mester
06. januar 2011 - 11:16 #15
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester