Type of content RESTAURANT. Fields for the company name, company address, phone, fax, website, email, chat, twitter, business owner, business contacts (e.g. manager), restaurant description, logo and google map link (or implementation of location modules and gmap) etc. Perhaps use the five-star module to enable user ratings in restaurants.
The ideological taxonomy of FOOD (you need a module for this). Product categories are drinks (alcoholic, nonalcoholic, etc.), soups, salads, breakfasts, lunch, dinner, desserts, dishes, sandwiches, seafood, etc.
Content Type FOOD. Fields for the node reference field for the RESTAURANT name so that their menu is properly built and organized, iterative FOOD taxonomy selection, product name (McRib, Whopper, Bloomin Onion, etc.), prices, preparation options (medium, well-made, and etc.), the food product and supplements that can be combined with this dish should either be the selected list options, or node links to other types of food contents (mashed potatoes or baked potatoes with this?)
As for images, use imagecache to create several different usable sizes for all photos, so you can create thumbnails, medium-sized images, and full-size gorgeous photos of dishes.
A CSS rendering that looks like a menu. Look at national restaurant sites like Chilis.com to see how they do it. Provide links to the menu of food taxonomy terms for each restaurant and the types of restaurants with open filters so that users can easily find restaurants by type, location, star rating, etc.
Sounds like a fun project. I would like a case study to be published when you are done.