Chiave primaria - puo' essere una sola e mai NULL. Puo' essere estesa su piu' colonne ed essere autoincrement. E' univoca. Ci sono poi una serie di regole per ottenere la miglior chiave primaria.
Indice UNIQUE - Puo' essere NULL ed essercene piu' di uno e puo' essere esteso su piu' colonne.
ovviamente parlando di mysql
edit: dimenticavo.
Chiave primaria ha lo scopo di identificare un record. La chiave UNIQUE ha lo scopo di impedire la presenza di piu' record con lo stesso valore. A volte lo scopo coincide, ma mentre una voce di una chiave UNIQUE puo' essere cancellata, solitamente a piacere e rimpiazzata, non lo stesso si puo' sempre fare con una chiave primaria, anzi e' assolutamente sconsigliato anche solo pensare di farlo.

Rispondi quotando
