このデータベースの構造に応じて大きなコードベースを持つ mssql2005 の巨大なデータベース。
ファイル名またはファイルへのフルパスが含まれる同様のテーブルが約 10 個あります。フル パスは常にアイテム ID に依存するため、データベースに保存しても意味がありません。これらのテーブルから有用なデータを取得するには、次のようにします。
SELECT a.item_id
, a.filename
FROM (
SELECT id_item AS item_id
, path AS filename
FROM xMedia
UNION ALL
-- media_path has a different collation
SELECT item_id AS item_id
, (media_path COLLATE SQL_Latin1_General_CP1_CI_AS) AS filename
FROM yMedia
UNION ALL
-- fullPath contains more than just the filename
SELECT itemId AS item_id
, RIGHT(fullPath, CHARINDEX('/', REVERSE(fullPath))-1) AS filename
FROM zMedia
-- real database has over 10 of these tables
) a
これらすべてのテーブルの単一のビューを作成して、このデータ災害を使用する新しいコードがすべての異なるメディア テーブルについて知る必要がないようにしたいと考えています。また、insert ステートメントと update ステートメントにもこのビューを使用したいと思います。明らかに、古いコードはテーブルが最新であることを依然依存しています。
mssql2005 でのビューの作成に関するmsdn ページを読んだ後、SCHEMABINDINGを使用したビューでは十分ではないと思います。
このような更新可能なビューを作成するにはどうすればよいですか?
これは正しい方法ですか?