Flattening the hierarchy is a good idea for reporting systems but not for OLTP in general. The concept shares some properties of the schema design technique for OLAP and Data Warehouse applications and is commonly known as Star Schema. The more flat the hierarchy is, the easier it is to write and build a query. Also, queries could run faster.
The problem with such a design is that some business rules can't be detected on the daatabase level directly from the schema. For example, in the case of your second design, an Order row could have any combination of VendorID and ProductID whereas in the first design this can't happen.
If your database is shared only by your application (not an enterprise application) and you control the code that does the update and you are willing to cover such missing business rule, and you have large data volumes, the 2nd design could be valid in your case.
One important point for you to take care of, is that you have the lines representing most relationships are drawn in reverse. That is, when you have a one-to-many the FK the line with craw's feet shold be at the many's side.