売上を記録するテーブルの設計について教えて下さい。

例えば商品マスタが以下の構造だとします。
----------------------------
| 商品コード | 商品名 | 単価 |
----------------------------

販売履歴を記録するテーブルは、
  -----------------------------------
@| 商品コード | 商品名 | 単価 | 数量 |
  -----------------------------------
と、
  --------------------------
A| 商品コード | 単価 | 数量 | ※商品名は、商品コードをキーにしてマスタから取得
  --------------------------

  -----------------------
B| 商品名 | 単価 | 数量 | ※商品コードは、商品名をキーにしてマスタから取得
  -----------------------
の3つのどれがいいのでしょうか?


Aの場合、販売後に商品コードが変わると、販売時の商品名が分からなくなり、
Bの場合、販売後に商品名が変わると、販売時の商品コードが分からなくなるので、
@が一番いいのかな、と思うのですが、本当にそれでいいのでしょうか?