Cela dépend de ce que vous allez faire avec les données. Pour de nombreuses raisons, il est utile de stocker sous chaque article le prix unitaire de cet article, la quantité achetée et le prix calculé. Le prix calculé est la quantité multipliée par le prix unitaire. Est-ce redondant? Hé bien oui. Est-ce que cela viole une forme normale? Hé bien oui. Mais ça marche plutôt bien. Pourquoi enregistrer le prix dans la ligne d'article (enregistrement) et ne pas simplement compter sur les mêmes données de prix stockées dans la table de produit maître? Car si vous modifiez le prix après cette vente, vous ne souhaitez pas modifier le prix que ce client a dû payer pour cet achat. Pourquoi stocker le prix étendu, puisque cela peut être recalculé à la volée? Parce qu'il simplifie l'agrégation (somme ou moyenne) sur certains ensembles d'éléments plus tard.
Si vous stockez le prix étendu, vous pouvez utiliser les outils d'analyse point-clic (voir OLAP) pour une analyse ultérieure, sans autre programmation. Si vous comptez recalculer le prix étendu lorsque vous en avez besoin, vous pouvez constater que l'outil de zoom avant n'est pas assez intelligent pour effectuer la multiplication pour vous.
"articles" seront normalement enfants d'une plus grande unité de travail. Dans un système de facturation, un article fait partie d'une facture. Dans un système de comptabilité générale, un article fait partie d'une transaction. Les éléments ne sont pas équilibrés, mais la transaction est. Dans un grand nombre de systèmes de commerce, la fonction de facturation et la fonction de comptabilité sont issues de la même base de données, mais cela dépasse votre question.
Normalement, j'essaie de garder mes données normalisées. C'est un endroit où de nombreux experts s'écartent intentionnellement des exigences de la normalisation pure.
"Mieux"? Que signifie "mieux" dans ce contexte? Il y a des compromis spécifiques. Qu'est-ce qui est le plus important pour toi? –