All depends on your
- Functional specifications: If in most of your queries, promotions will be dealt with just as any other sales, you're better off with one table only. If you go for a separate table, you'll need a view with a union to support all those queries. If most of your sales queries ignore the promotions, go for 2 tables.
- Database technology. If your underlying database supports column-based tables (e.g. HANA), there's no need at all for separting into two tables. Your moel will be simpler, easier to maintain and no negative performance impact whatsoever.