MS SQL Server 2005 を使用しています。
Wiki のようなシステムに最適なスキーマは何ですか? ユーザーが提出物を編集/修正し、システムがこれらの提出物を追跡する場所。
単純な wiki ベースのシステムを実行しているとしましょう。各リビジョンに加えて、各リビジョンのビューと最新のアクティビティを追跡します。他の画面では、システムは「最新の提出物」と「最も閲覧されたもの」を一覧表示し、さらにタイトルで検索します。
私の現在のスキーマ (そして私はそれが悪いことを知っています) は単一のテーブルを使用しています。「最新の提出物」を確認する必要がある場合は、「LatestActivity」で並べ替え、「DocumentTitle」でグループ化し、最初の N レコードを取得します。多くのグループ化 (特に nvarchar でのグループ化) は悪いニュースだと思います。最も閲覧されたものをリストするために、私も同じことを行います: ビューで並べ替え、名前でグループ化し、最初の N レコードを取得します。ほとんどの場合、「WHERE DocumentName LIKE '%QUERY-HERE%'」も実行します。
私の現在のスキーマは「バージョン 1」です。以下を参照してください: 代替テキスト http://www.anaimi.com/junk/schemaquestion.png
これは受け入れられないと思います。だから私は別の/よりパフォーマンスの高いデザインを考え出そうとしています. バージョン 2 はどのように聞こえますか? バージョン 2 では、数値である WikiHeadId でグループ化する利点があります。数値でグループ化する方が nvarchar よりも優れていると想定しています。
または、グループ化を行わないバージョン 3 の極端なケースですが、値の重複、コード内でのこれらの値の維持など、いくつかの欠点があります。
または、そのようなシステムのためのより良い/既知のスキーマはありますか?
ありがとう。
(ServerFault から移動 - IT の問題というよりは開発の問題だと思います)