Nella mia formazione mi è stato detto che è un'idea sbagliata quella di esporre le chiavi primarie reali (non solo le chiavi DB, ma tutte le principali utilità di accesso) all'utente.
Ho sempre pensato che fosse un problema di sicurezza (perché un utente malintenzionato potrebbe tentare di leggere cose non proprie).
Ora devo controllare se l'utente è autorizzato ad accedere comunque, quindi c'è un motivo diverso dietro di esso?
Inoltre, poiché i miei utenti devono accedere comunque ai dati, dovrò avere una chiave pubblica per il mondo esterno da qualche parte nel mezzo. Ora quella chiave pubblica ha gli stessi problemi della chiave primaria, vero?
C'è stata la richiesta di un esempio sul perché farlo comunque, quindi eccone uno. Tieni presente che la domanda è intesa a riguardare il principio stesso non solo se si applica in questo esempio. Le risposte che affrontano altre situazioni sono esplicitamente benvenute.
Applicazione (Web, Mobile) che gestisce l'attività, ha più interfacce utente e almeno un'API automatizzata per la comunicazione tra sistemi (e.G. il reparto contabilità desidera sapere quanto addebitare il cliente in base a ciò che è stato fatto). L'applicazione ha più clienti quindi la separazione dei loro dati (logicamente, i dati sono memorizzati nello stesso DB) è un must del sistema. Ogni richiesta verrà verificata per la validità non importa quale.
L'attività è molto dettagliata, quindi è insieme in un oggetto contenitore, chiamiamola "Attività".
Tre casi d'uso:
- L'utente A desidera inviare l'utente B a qualche attività in modo che gli invii un collegamento (HTTP) per ottenere un'attività svolta lì.
- L'utente B deve uscire dall'edificio, quindi apre l'attività sul suo dispositivo mobile.
- Contabilità desidera addebitare al cliente l'attività, ma utilizza un sistema di contabilità di terze parti che carica automaticamente l'attività / attività da un codice che fa riferimento a REST - API dell'applicazione
Ciascuno dei casi d'uso richiede (o diventa più facile se) l'agente di avere un identificatore indirizzabile per l'attività e l'attività.