La sesta forma normale è il modo formale per implementarlo. Vai con 3NF per tutte le tabelle e 6NF per una o due tabelle che è necessario aggiungere colonne senza modifiche DDL. Usare con parsimonia.
EAV è il figlio bastardo di 6NF. Ciò che significa è, le persone che lo fanno, e scrivono su di esso, non hanno una comprensione formale di 6NF, così spesso creano mostruosità.
Naturalmente, è necessario mantenere buoni standard: utilizzare i tipi di dati; Integrità referenziale dichiarativa (chiavi esterne); ecc. Non rinunciare a quelli ottenere nulla. Corri via come l'inferno da chiunque ti dica che devi rinunciare.
6NF/EAV è molto veloce, non vi è alcun impedimento all'utilizzo della capacità di elaborazione dei set del server. Di nuovo, scappa via da chiunque ti dica che devi usare l'elaborazione riga per fila o i cursori o che non puoi costruire facilmente le colonne dalle righe. Invia di nuovo se hai problemi specifici.
Ciò richiede di andare oltre la capacità corrente (controlli, DDL) di SQL; per farlo in modo controllato ed evitare di creare mostri non mantenibili, è necessario un piccolo catalogo, per contenere i meta-dati. Se sei intelligente, puoi usarlo per generare l'SQL necessario per l'interrogazione e quindi eliminare un sacco di lavoro manuale.
C'è molta disinformazione in giro, e alcune persone con "rappresentante" sono senza tracce. Per avere successo tecnicamente, abbiamo bisogno di informazioni accurate, non di miti e di spasimanti. Potresti essere interessato a un post recente in cui ho provato a set the recond straight.
'Una ricerca rapida di "modello EAV"' si spera includerà la raccomandazione che dovrebbe essere evitato a meno che non ci sia alternativa - è molto flessibile, ma non scala bene e può essere difficile da interrogare. Ecco un link a un case study: http://www.simple-talk.com/opinion/opinion-pieces/bad-carma/ –