たとえなのですが、ショッピングサイトを作っているとします。
そして化粧品とゲームが買えるとします。
また買った物の履歴を見れる機能もあるとします。

テーブルの設計をするとき、自分だとこのような場合は、
履歴テーブル、化粧品テーブル、ゲームテーブル
と作ります。

化粧品テーブルのカラムは
id, 値段、材料
ゲームテーブルのカラムは
id, 値段、対応ハードウェアとします。

ただここで問題なのは履歴テーブルのカラムです。
単純に考えるとこう考えました。
id, 化粧品id, ゲームid, 時間

しかしこの構造には問題があります。
化粧品idとゲームidのカラムはどちらか一つしか使われないため、後はnullが入ることになります。
さらに、玩具や食品などを追加すると空のカラムが増大していきます。

どのように設計するのが良いでしょうか?ご回答よろしくお願いします。