PK u zboží nemusí být nutně ID. Čárový kód je jednoznačný pro zboží každého výrobce. Takže i kdybys měl "máslo farmářské" od 2 výrobců, tak každé bude mít svůj čárový kód.
Co se týká redundace, té se v praxi občas nevyhneš, hlavně u hodně velkých dat. Už jen třeba kvůli rozdělení hodně velkých tabulek na partitions, kde se musíš řídit nějakým časovým ůdajem, takže nestačí mít datum v hlavičce dokladu.
Teorie je o tom, jak by se to dělat mělo
Praxe je o tom, jak to udělat, aby to optimálně fungovalo
Podle teorie to navrhneš a podle praxe to pak zoptimalizujes.