Per essere chiari, questa domanda e risposta riguardano l'utilizzo di numeri negativi per chiavi surrogate, non per chiavi naturali.
Per quanto ne so, ci sono tre motivi per ritenerlo una cattiva pratica.
- viola lo principle of least surprise.
- Alcune persone assumono che tutti i numeri ID siano non negativi.
- Alcune persone utilizzano numeri negativi per indicare errori.
Il primo ha una certa validità. Non vedi mai esempi SQL o risposte su SO che utilizzano numeri ID negativi. (Lo cambierò, a partire da oggi.)
Il secondo e il terzo sono corollari al primo, in quanto i programmatori spesso assumono comportamenti privi di sorprese. (Questo mi ricorda di scoprire che VBA mi permetterebbe di moltiplicare due date, restituendo un numero che sarebbe espresso, credo, in date quadrate.)
Per il numero 2, i programmatori di applicazioni potrebbero introdurre errori sottili non consentendo spazio per il codice UI di accesso, che potrebbe rendere -123456 come 123456.
Il terzo ha a che fare con la scrittura del codice che restituisce i numeri di identificazione. Il codice che restituisce un singolo numero ID potrebbe restituire -1 come codice di errore. Ma -1 è un numero ID valido nella maggior parte dei casi. (La maggior parte dei database non limita i numeri di identificazione all'intervallo di numeri interi non negativi.)
fonte
2012-01-21 19:14:04
Avete qualcosa per documentare questa "cattiva pratica"? Immagino che i numeri negativi siano più sgradevoli da leggere e leggermente più difficili da scrivere. Non riesco davvero a vedere alcun motivo tecnico per evitarli. In effetti è un ottimo modo per estendere la portata di un tipo di dati firmato. – Yuck
Sul lato, questo è utile quando si creano record sul lato client che in seguito devono essere inseriti sul server: http://msdn.microsoft.com/en-us/library/ms971502.aspx – Niklas
Immagino sia popolare che i numeri negativi sono "considerati" una "cattiva pratica", qualcosa di "brutto" da "evitare". Non è vero? Ma davvero non riesco a capire perché ... Quindi, @Yuck, pensi che sia dovuto alla leggibilità? – falsarella