2010-06-23 1 views
12

È meglio utilizzare il carattere di sottolineatura durante la denominazione delle tabelle o è meglio utilizzare Camelcase?Il modo migliore per denominare le tabelle

Esempio table_name o tableName quale è meglio? C'è una ragione per usare entrambi, che cos'è?

+0

Risposta breve: dipende da te, scegli quello che vuoi. Vedi anche: http://stackoverflow.com/questions/1847235/database-table-and-column-naming-conventions – Shog9

+0

ahh ragazzi fantastici ... grazie mille per i link..molto apprezzato. – bharath

+0

La maggior parte delle implementazioni SQL sono case-independent, quindi "STUFF", "stuff" e "StUfF" si riferiscono alla stessa tabella. –

risposta

1

Dico, usa qualsiasi convenzione di denominazione che usi nel codice che accede a strutture di alto livello (come le classi).

Ad esempio, se si incapsulano i dati * in una classe denominata UserInfo, la tabella deve essere chiamata anche UserInfo.

* Si stanno incapsulando i dati, giusto?

+0

ahh è stata una bella informazione .... grazie mille. – bharath

1

Invece di fornire un breve feedback su alcuni motivi per questo e che fornirò un collegamento alle linee guida di codifica SQL di Pinal Dave. Sono stati ben pensato, spiegati e sembrano seguire le mie preferenze su come le cose dovrebbero essere chiamati e utilizzati ecc

Enjoy!

+0

grazie mille per il collegamento brian ... – bharath

+0

Piuttosto specifico per SQL Server, ma comunque un buon riferimento. –

+1

Non posso dire che sono d'accordo con tutto questo però. Non dovresti nominare i processi storped che iniziano con sp, dato che il server SQL cercherà prima un system proc in modo da perdere un po 'di prestazioni in ogni chiamata. – HLGEM

1

La mia opinione su questo è che si dovrebbe fare tutto ciò che si sente naturale per voi, se la migliore convenzione di denominazione del mondo (per la persona che l'ha scritta) non sembrerà naturale e dovrai leggere il documento ogni volta che stai progettando un database piuttosto che male.

Si dovrebbe fare tutto ciò che è conveniente per voi e ciò che scorre fuori dal vostro keyborad meglio.

In base alla mia esperienza, mi sono trasferito a ROR da .net qualche tempo fa e sono rimasto intrappolato nel modo in cui ho sempre visto le persone fare queste cose e sottolineato i miei tavoli ma dopo un po 'ho trascurato questa opzione per la mia vecchia denominazione SQL convenienza.

lo stesso per le colonne.

Buona fortuna

+0

No, la squadra dovrebbe accordarsi su uno standard e tutti dovrebbero usarlo (e le revisioni del codice dovrebbero fare a pezzi lo sviluppo se non segue lo standard). Nessuna codifica da cowboy in cui tutti usano lo standard con cui si sentono più a proprio agio. E non usare il modulo standard l'ultimo posto in cui ho lavorato perché mi sento a mio agio con quello piuttosto che con quello che questa organizzazione richiede assurdità. – HLGEM

+0

@HLGEM lavorare in una squadra è un'opera tutta diversa insieme. quando si lavora in una squadra o si gestisce una squadra, dovrebbe esserci una convenzione stabilita dal manager. – KensoDev

+0

@HLGEM - Devo essere d'accordo con KensoDev. I tuoi commenti, sia che siano intesi o meno, sembrano desiderare che gli sviluppatori di straight-jacket abbiano uno standard di codifica. Gli standard non sono una brutta cosa, ma la mia esperienza è che sono progettati per combattere la battaglia dello scorso anno, e non quest'anno. Sicuramente ci sono cose che possiamo prendere e applicare in futuro. Ma per far rispettare uno standard di codifica sulle persone quando le regole del gioco sono cambiate (nuova lingua, nuovi problemi da risolvere, nuove tecniche di codifica) mi sono davvero appassionato all'idea di standard di codifica. Aggiorna frequentemente il tuo standard? –

3

Tutto ciò che ho letto indica il migliore convenzione è quello di attenersi a minuscole sia per i nomi dei database ei nomi di tabella. Se hai bisogno di mettere insieme più parole, separale con caratteri di sottolineatura - evita i trattini nei nomi delle tabelle, altrimenti dovrai tornare a spuntare tutti i nomi delle tabelle e i nomi dei database ogni volta che li fai riferimento.

Inoltre, il seguente parametro di configurazione è probabilmente pertinenti a ciò che stai chiedendo:

mysql> show global variables like 'lower%'; 
+------------------------+-------+ 
| Variable_name   | Value | 
+------------------------+-------+ 
| lower_case_file_system | OFF | 
| lower_case_table_names | 0  | 
+------------------------+-------+ 
2 rows in set (0.00 sec) 

Per quanto riguarda i nomi dei campi, tendo a usare cammello e minuscole.

+0

Per "nomi di campi" intendi colonne/righe? –

1

La mia preferenza è utilizzare nomi descrittivi e utilizzare la custodia Pascal (TableName).

Evitare abbreviazioni, e se è necessario utilizzare un trattamento sigla è come una parola (utilizzare DaylightSavingsTimeInfo o DstInfo invece di DSTInfo).

Il nome non è qualcosa che ha una risposta giusta, quindi la cosa migliore è scegliere qualcosa e rimanere coerenti. La cosa peggiore è avere una mistura di molti standard.

12

Alcuni motori di database non fanno distinzione tra maiuscole e minuscole e in effetti convertiranno i nomi in minuscolo su alcune uscite. Per questo motivo, ho utilizzato i caratteri di sottolineatura tra le parole e l'utilizzo di lettere minuscole.

MySQL rispetta il caso, perché ricordo che questo non è un problema immediato per voi. Ma mi sono bruciato su questa volta quando ho dovuto effettuare il porting di un database da un motore a un altro - penso che fosse da MySQL a Oracle ma non lo giuro - e tutti i nostri nomi di CamelCase sono diventati improvvisamente nomi concatenati .

Anche secondo Rob Boek, la cosa più importante è la coerenza. E mentre siamo in argomento, posso fare un commento tangenziale sull'essere coerenti nei nomi dei campi? Sto lavorando con un sistema ora in cui ho scoperto che il campo "prodid" in una tabella è in realtà lo stesso contenuto di "stile" in un altro e un altro sistema che ha "delivereddate" in una tabella e "datedelivered" in un altro.

2

Credo che molti RDBMS ignorino il caso, quindi l'utilizzo di schemi di denominazione dei cammelli potrebbe semplicemente non funzionare.

L'importante è che i nomi delle colonne e dei nomi delle tabelle siano descrittivi, indipendentemente dalla sintassi nit-picky che si decide. Se sono descrittivi dei loro dati, a nessuno importa se hai usato Camel-Case, underscore, ecc.

+1

Non sono d'accordo, sto lavorando con un database legacy in cui le persone non si sono preoccupate di usare uno standard nella progettazione iniziale e ne ha fatto molto da mantenere. Scegli e standard e usalo in modo coerente. – HLGEM

+0

HLGEM - Puoi chiarire cosa intendi per standard? Intendi in termini di sintassi (usa camelcase, usa caratteri di sottolineatura, sempre in maiuscolo SQL) o di contenuto (le colonne descrivono i loro dati, la formattazione dei dati in HH: MM: SS, formattazione)? Penso che sia dannoso imporre la sintassi agli sviluppatori che il database non lo fa (i programmatori IME sono troppo anonimi per questo, crea solo battaglie religiose). Ma per quanto riguarda il contenuto, penso che sia giusto parlare di uno standard/linee guida. –

+0

Vorrei anche aggiungere che HLGEM ha un punto: è necessaria una certa coerenza. Ad esempio, le colonne che contengono ID condivisi dovrebbero avere lo stesso nome su tabelle di database nello schema specifico. Non sto sostenendo un free-for-all qui. –