Venendo a questo dalla prospettiva di un dizionario di dati formale, chiamerei l'elemento dati invoice_ID
. In generale, il nome di un elemento dati sarà univoco nel dizionario dati e idealmente avrà lo stesso nome ovunque, sebbene a volte potrebbero essere richiesti termini qualificanti aggiuntivi in base al contesto, ad esempio l'elemento dati denominato employee_ID
potrebbe essere utilizzato due volte nell'organigramma e quindi qualificato come supervisor_employee_ID
e subordinate_employee_ID
rispettivamente.
Ovviamente, le convenzioni di denominazione sono soggettive e una questione di stile. Trovo che le linee guida ISO / IEC 11179 siano un utile punto di partenza.
Per il DBMS, vedo le tabelle come raccolte di entità (eccetto quelle che contengono sempre e solo una riga, ad esempio tabella cofig, tabella di costanti, ecc.) Ad esempio, la tabella in cui my employee_ID
è la chiave sarebbe denominata Personnel
. Quindi subito la TableNameID
convenzione non funziona per me.
Ho visto lo TableName.ID=PK TableNameID=FK
stile utilizzato su modelli di dati di grandi dimensioni e devo dire che lo trovo leggermente confuso: preferisco di gran lunga che il nome di un identificatore sia lo stesso dappertutto, ad esempio non cambia il nome in base alla tabella in cui appare. Qualcosa da notare è lo stile di cui sopra sembra essere utilizzato nei negozi che aggiungono una IDENTITY
colonna (incremento automatico) a ogni tabella evitando le chiavi naturali e composte nelle chiavi esterne. Questi negozi tendono a non avere dizionari di dati formali né costruire da modelli di dati. Ancora una volta, questa è solo una questione di stile e una a cui non mi abbono personalmente. Quindi, alla fine, non è per me.
Detto questo, posso vedere un caso per cui a volte si elimina il qualificatore dal nome della colonna quando il nome della tabella fornisce un contesto per farlo, ad esempio l'elemento denominato employee_last_name
può diventare semplicemente last_name
nella Personnel
tabella. La logica qui è che il dominio è 'cognomi delle persone' ed è più probabile che venga modificato UNION
con last_name
colonne di altre tabelle piuttosto che essere usato come chiave esterna in un'altra tabella, ma poi di nuovo ... potrei semplicemente cambiare idea, a volte non puoi mai dirlo. Questo è il punto: la modellazione dei dati è in parte arte, in parte scienza.