Souhlas - základ je zabezpečení databáze. Osobně se s mírnou duplicitou kódu dokážu smířit - např. validace datumu (formátu) v javascriptu, a pak ještě další v db. Databáze je poslední instance - tu mi nikdo neobejde - na druhou stranu je docela daleko, a tak není na škodu některé kontroly umístit na klienta - výsledkem je duplicitní kód (jasně) ale také vyšší ergonomie aplikace a zároveň robustní aplikace (čím více kontrol, tím lépe).
Na úrovni databáze se poměrně snadno zajistí bezpečný přístup k datům - hůře už se bude omezovat přístup k funkcím aplikací (takže i určitá implementace práv uživatelů je od věci i na úrovni aplikace). Do jisté míry jde i o dvě různé věci - zabezpečení dat X zabezpečení funkcí (procesů) aplikace - je nutné řešit obojí.