いろいろ不明な点がありますが、以下の (1) ~ (3) の理解で間違いなければ、「このやり方」は合っています。
(1) Model
ASP.NET MVC (Model-View-Controller) で一般的に使われている Model のことを話しているのだと理解。
WPF の MVVM (Model-View-ViewModel) の話ではなくて、ASP.NET の MVC (Model-View-Controller) の話ですよね。ASP.NET MVC で ViewModel は使わない(少なくとも自分は聞いたことがない)のですが・・・
(2) 正規化
まず、テーブルを正規化して5個くらいのテーブルを作成しました。
その「正規化」というのは質問の文面から以下のように理解。
例えば、Microsoft のサンプルデータベース Northwind の Products テーブル(定義下記)
CREATE TABLE [dbo].[Products](
[ProductID] [int] IDENTITY(1,1) NOT NULL,
[ProductName] [nvarchar](40) NOT NULL,
[SupplierID] [int] NULL,
[CategoryID] [int] NULL,
[QuantityPerUnit] [nvarchar](20) NULL,
[UnitPrice] [money] NULL,
・・・以下略・・・
・・・のように、製品のカテゴリーやサプライヤーの詳細は別テーブル Categories, Suppliers に格納し、Products テーブルの SupplierID, CategoryID フィールドから Categories, Suppliers テーブルの主キーに外部キー制約をかける。
(3) このやり方
せっかく正規化したものをすべて結合してひとつのモデルにする、このやり方は合っているのでしょうか。
「このやり方」とは、Controller のアクションメソッドで、Linq To Entities を使って join したクエリから IEnumerable<T> 型のオブジェクトを作り、それを Model として View に渡すことと理解。