Mike ripped into the Invoice app dictionary, which he acknowledged wasn't designed as a teaching tool for database design, but a teaching tool for Clarion app development.
He considered many different possibilities for how a business would actually need to deal with invoice data. What about product versions? What about the possibility of getting the same product from different vendors? If your database doesn't accurately reflect the problem domain then you'll expend a lot of energy trying to code around those database insufficiencies. And ultimately you probably won't be able to do that.
Get the database design right and you'll save yourself a lot of work.