正しいかどうかはわかりませんが、問題があります。外部キー列をnull以外にすることはできないため、「ページ」がカテゴリまたはサブカテゴリのいずれかにあるというルールを適用することはできません。
これを回避するには、次のようにモデルを変更できます。
TABLE: Category
-------------------
CategoryID (PK)
ParentCategoryID (FK)
Name
TABLE: Page
--------------
PageID (PK)
CategoryID (FK)
...
これにより、ページからカテゴリへの NOT NULL 外部キー関係を作成できます。ParentCategoryID が NULL のカテゴリは「最上位」カテゴリであり、parentCategoryID が含まれるカテゴリはサブカテゴリです。
サンプルデータ:
Category
CategoryID ParentCategory Name
-----------------------------------------
1 null Arts
2 1 Painting
3 1 Music
4 null Travel
Page
PageID CategoryID Name
-------------------------------------
1 2 Page about painting
2 3 Page about music
3 3 Another page about music
4 4 Page about travel