C'è un motivo per usare nomi di tabella estremamente abbreviati?


22

Stiamo usando un'impostazione del database dall'applicazione di un fornitore che ha livelli orribilmente difficili da leggere i nomi delle tabelle del database e nessuna documentazione su ciò che è archiviato dove. Posso capire perché si potrebbe voler offuscare la struttura della tabella in un'app proprietaria, ma uno dei punti di forza di questa applicazione (Pianificazione delle risorse aziendali) era la personalizzazione.

I nomi delle tabelle sono come aptrx (Contabilità fornitori) e apmaster_all (curiosamente, questa è la tabella dei fornitori). È un database estremamente complesso, quindi mi chiedevo se ci fosse qualche logica nella convenzione o se fosse semplicemente offuscata intenzionalmente o meno.

Per quanto ne so, la lunghezza del nome della tabella non influirà in modo evidente sulle prestazioni, giusto? Il database è molto complesso (centinaia di tabelle), quindi l'ordinamento ha un senso, ma non riesco a immaginare perché AccountsPayableTransactions non sia preferibile ad aptrx ....


8
qualcuno non è stato fottuto nella parte posteriore della testa abbastanza forte per conoscerlo meglio
DForck42

2
* sorride * è per la sicurezza del lavoro, il costo per licenziare vecchi programmatori e assumerne di nuovi diventa molto più alto se si hanno nomi criptici.
Lie Ryan,

@Lie_Ryan che sembra certamente essere il caso, che spereranno che tu assuma un consulente ...
Ben Brocka,

FWIW, se lavori su sistemi di contabilità, "aptrx" non è criptico. È ovvio. Maggiori dettagli nella mia risposta di seguito.
Mike Sherrill 'Cat Recall',

l'offuscamento è uno dei motivi
Arnaud Le Blanc,

Risposte:


23

Oracle ha avuto un limite di vecchia data per i nomi delle tabelle di 30 caratteri. Sospetto che si tratti di un problema legacy basato su un ambiente originale a 16 bit.
La lunghezza del nome di una tabella potrebbe avere un effetto minuscolo sulle prestazioni poiché tutti i nomi devono essere archiviati in un dizionario di dati e analizzati anche per le query, ma non credo che si possa misurare l'hit.

Un effetto più importante dei nomi di tabelle brevi è che è difficile lavorare con. Anch'io devo mantenere uno schema di database aziendale con nomi brevi. Non ci sono buoni motivi per avere nomi di tabella brevi. La facilità di manutenzione supera ogni volta l'offuscamento o le vecchie abitudini del DOS.


2
Se 30 caratteri non sono sufficienti per riuscire a trovare nomi univoci per le tabelle, hai un problema molto più grave di qualsiasi DBMS o ambiente di sviluppo possa risolvere: hai un problema con il livello di espressività della tua lingua e / o vocabolario.
Erwin Smout,

18

Sento che ci sono ancora due cose che devono ancora essere dette o elaborate:

  1. Nominare le cose non è così banale come sembra

    Ci sono solo due problemi gravi in ​​Informatica: invalidazione della cache e denominazione delle cose. Phil Karlton

  2. Mentre i nomi brevi insignificanti sono sempre cattivi, i nomi lunghi non sono sempre buoni: i nostri cervelli hanno una soglia tl incorporata che è sorprendentemente bassa. Di solito 30 caratteri sono sufficienti ma preferisco RDBMS per consentire di più per i casi eccezionali quando non lo è (e proprio come nella lingua, i nomi più lunghi sono più utili per le cose di cui non parliamo così spesso - come i nomi di vincoli e nomi più brevi sono più utili per le tabelle che interroghiamo continuamente)

Sono sempre tentato di dedicare troppo poco tempo a scegliere i nomi, e se lo faccio rimpiango sempre più tardi - la modifica dei nomi avviene solo raramente


2
Sono molto esigente riguardo ai nomi e la mia attuale limitata capacità di cambiarli mi infastidisce senza fine. Adoro UX, quindi i nomi non utilizzabili potrebbero infastidirmi particolarmente. Inoltre, semplicemente preferisco camelCase ...
Ben Brocka,

7

Pigrizia. IntelliSense e le opzioni di terze parti rendono la digitazione una scusa davvero difficile da giustificare. Preferirei di gran lunga che i nomi abbiano parole significative e leggibili.


6

I nomi delle tabelle sono come aptrx (Contabilità fornitori) e apmaster_all (curiosamente, questa è la tabella dei fornitori). È un database estremamente complesso, quindi mi chiedevo se ci fosse qualche logica nella convenzione o se fosse semplicemente offuscata intenzionalmente o meno.

Abbreviazioni ben note sono di solito preferibili a precisare le cose. Quando un'abbreviazione è ben nota ad alcune persone, ma non abbastanza, smettiamo di chiamarla abbreviazione e iniziamo a chiamarla un codice.

Le abbreviazioni consentono di risparmiare spazio su piattaforme che hanno limiti stretti, anche se questo è meno importante ora rispetto a 30 anni fa. (Mi sembra di ricordare di aver lavorato su un sistema negli anni '80 che ti limitava a 6 o 8 caratteri per un nome di tabella.)

Le abbreviazioni in genere semplificano la lettura dei nomi delle tabelle e delle colonne, purché l'abbreviazione sia corretta. Se lavorassi sul codice per AP tutto il giorno, preferirei leggere i nomi delle colonne come "ap_trx.inv_num" piuttosto che "accounts_payable_transactions.invoice_number". (Mi piacciono i caratteri di sottolineatura.) Digitare nomi lunghi non è un grosso problema con un buon editor di testo.

Nei sistemi contabili, sia "ap" che "trx" sono abbreviazioni ben note. Altri includono "ar", "gl" e "gj", per crediti, contabilità generale e giornale di registrazione generale.

In un sistema ben progettato, se trovassi le transazioni di contabilità fornitori in una tabella denominata "aptrx", spero di trovare le transazioni di contabilità clienti in artrx, le transazioni di contabilità generale in gltrx e così via. Trovo "apmaster_all" un po 'sconcertante, ma se trovassi anche "armaster_all", presumo che il primo detenesse tutti i venditori (al contrario di quelli attivi o inattivi), e che il secondo trattasse allo stesso modo tutti i clienti.

In altri domini problematici, trovi altre abbreviazioni ben note. Nell'indirizzamento, troverai abbreviazioni come "addr" per indirizzo, "st" per strada, "usps" per il servizio postale degli Stati Uniti, "ups" per United Parcel Service, "cty" per la contea, "zip" per il miglioramento della zona Codice e così via.

Non chiamerei questo offuscamento. Se le transazioni di contabilità fornitori fossero archiviate in una tabella denominata "cdrs21", chiamerei tale offuscamento. (Anche se una volta ho lavorato per un'azienda che ha nominato in questo modo tutti i moduli dell'assemblatore mainframe. Limiti di carattere, non offuscamento.)

Ma i database utili crescono e si verifica un problema quando i database diventano grandi. Quando aggiungi domini problematici al tuo database, ti imbatti in situazioni in cui si scontrano abbreviazioni note. Se hai a che fare con i media, "ap" potrebbe anche abbreviare "Associated Press", "alternative press" o "anticipo posizionamento". Quando ciò accade, è tempo di abbandonare le abbreviazioni o passare ai codici. Più grande è l'organizzazione (e più grande è il database), più frequentemente trovo i codici.


4
Parte del problema è che queste tabelle non sono gestite dai contabili, sono gestite da un analista di sistemi e generalmente il nostro dipartimento IT aptrx è in realtà uno dei nomi più logici che ho trovato, uno dei pochi che ho ho ricordato . Si noti inoltre che ci sono diverse centinaia di tabelle; le abbreviazioni di base come "ap" per "debiti" sono molto facili da imparare, i 100 suffissi letteralmente dopo "ap" non sono ...
Ben Brocka,

4

Stavo solo entrando con la storia di "mio dio, gli occhiali non fanno nulla per questa orribile convention sui nomi". Il team di gestione dei dati nel mio ultimo ambiente ha dichiarato che la ragione per l'utilizzo di nomi di tabella abbreviati era una limitazione DB2 (avevamo DB2 su z / os e SQL Server) di 18 caratteri per tabelle e colonne. Ho prontamente sottolineato che ciò non era accurato con la documentazione dal sito di IBM. Hanno poi affermato che si trattava di un problema di COBOL (sì, sono stati sviluppati attivamente COBOL) nel caso in cui fosse necessario parlare con il database che è stato poi smentito dai fantini di MF. Alla fine, la loro risposta è stata la nostra norma di pubblicazione.

Abbiamo presentato una petizione al comitato per gli standard per aumentare la lunghezza da 18 a 32 caratteri e abbiamo ricevuto una limitazione di 30 caratteri. Ciò ha portato a tabelle che vanno dai nomi inutili di 'SR_M_DLY_ADV_PRD_S' a 'IDX_FDSHRCLAS_LIF_RTRN_STATS_X' FML

Quindi, nella mia dozzina di anni di esperienza, i nomi di tabella abbreviati non offrono vantaggi tangibili e comportano un costo maggiore di sviluppo e manutenzione, poiché devo sempre fare riferimento ai dizionari di dati per tradurre la spazzatura sullo schermo in un identificatore significativo. Il che può essere contrastato con entità dal nome logico con cui ho lavorato e che possono principalmente ricreare dalla memoria perché sono stati nominati in modo intuitivo.


1
sembra che i nomi vadano da nomi totalmente inutili a nomi leggermente meno inutili. Forse la normalizzazione potrebbe aiutare? Se ogni tabella fa meno, allora ci sono meno motivi per avere nomi con più parole, quindi meno motivi per abbreviare.
Lie Ryan,

Non proprio, quel tavolo odiosamente lungo non potrebbe fare di meno se ci provasse. Contiene 4 colonne, 2 delle quali erano chiavi esterne. È la tabella delle "statistiche di ritorno" per chiunque tranne coloro che proteggono i dizionari di dati sacri della conoscenza. Ecco la tabella di riferimento incrociato delle statistiche sui rendimenti a vita della classe di azioni del fondo dell'indice.
Billinkc,

mi hai fatto impazzire con quello; forse non ho familiarità con il dominio problematico, ma la tabella non è immediatamente ovvia per me anche dopo aver visto il nome non alcolizzato. Qualche domanda nella mia mente (solo un elenco di cose che non erano immediatamente ovvie per me, non devi rispondere se non vuoi): è una tabella di entità o una tabella di relazioni? "Indice" ha qualcosa a che fare con "indice del database"? Per "riferimento incrociato" e "statistica di ritorno", ciò mi sembra suggerire che si tratta di una tabella aggregata denormalizzata (che può essere utile per il loro calcolo è costosa)?
Lie Ryan,

L'industria dei servizi finanziari, la tabella delle entità, gli indici che valutano un investimento (in questo caso la classe di quote di fondi comuni di investimento) contenevano statistiche su qualcosa che non ricordo ...
Billinkc,

3

È un'abitudine (concordo con Kevinsky). È stata una reazione su alcuni vecchi problemi (forse esistono) alla restrizione (lunghezza del nome, spazio tra parole di nomi complessi, multilingua ecc.) Del sistema operativo (DOS, Windows, per esempio) e alcuni software che non gestivano così i nomi. Le persone con esperienza hanno detto: "Fallo (usa abbreviato e separato con nomi di sottolineatura) e tutto andrebbe bene."


2

Mi piace usare la denominazione descrittiva per i motivi sopra citati dai poster.

Ma c'è anche un altro vantaggio. Ad esempio, con la denominazione descrittiva, consente di utilizzare nomi nidificati. Supponi di avere un tavolo chiamato Employee. Se hai una relazione con un'altra tabella, potrebbe essere chiamata EmployeeAddress. O reparto dipendenti. Con la criptica denominazione abbreviata questo è quasi impossibile.


0

Dipende dalla complessità delle definizioni sottostanti di ciascuna colonna. Penso che le persone diventino pigre con la gestione dei metadati quando vedono questo tipo di nomi di colonna molto descrittivi e in realtà sono addirittura descrizioni incomplete. Potresti anche chiedere perché abbreviare qualcosa.


Dato che le tabelle non forniscono metadati non automatici, non sono sicuro che sia un argomento valido ...
Ben Brocka,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.