Tabulka kde bude umělé id společně s unikátním username nebude ve 3. NF. Když se budeš někdy prohrabávat v tabulkách, kde se používá cizí klíč z této tabulky tak budeš vědět prd a budeš si muset tabulky spojovat, abys viděl kdo udělal tuhle změnu etc. Otázku rychlosti bych u aplikací menších než obrovských zanedbal.

Podle mě na tuto otázku neexistuje vyloženě správná nebo špatná odpověď, teoreticky je určitě správnější nepřidávat id zbytečně, v praxi se to tak dělá nejenom z nevědomosti, ale i kvůli tomu, že by časem někoho mohlo napadnout, že je potřeba mít možnost měnit username a v ten moment budeš za umělá id zatraceně rád.