È una domanda interessante - c'è una strong argomentazione secondo cui molti sviluppatori decenti dovrebbero capire come strutturare correttamente un database relazionale, vale a dire che dovrebbero essere in grado di produrre uno schema normalizzato e - basato su esperienza e modelli comuni - prendere decisioni ragionevoli su come archiviare i dati archiviati (per me è per lo più ovvio, ma so che non tutti la vedono in quel modo).
Inoltre, se si esamina il codice di Entity Framework, in primo luogo che suggerisce che lo stesso pensiero che va alla creazione di un modello di dati di basso livello produrrà uno schema ragionevole - o almeno un suggerimento in uno.
Quindi no, non penso particolarmente che sia necessario un esperto di database per progettare uno schema di database, almeno non per database di piccole e medie dimensioni (che sono le cose su cui ho lavorato).
Il problema è che la progettazione di uno schema buono (o almeno adeguato) non è l'intera storia, specialmente se il database non è in scala. Mi sembra che il "valore aggiunto" apportato da un DBA sia nell'ottenere le cose diverse dallo schema di base a destra: indici, configurazione dello storage, manutenzione del database (tenere sotto controllo le dimensioni dei file, ricostruzione degli indici, ecc.), Essere più intelligenti con utenti e ruoli e così via e così via.
Un buon programmatore dovrebbe portare un portfolio diversificato di competenze - dovrebbe essere più di un codificatore [insert langugage of choice] e includerei la comprensione dei database in quel portfolio.