4

Visual Studio、SQL Server 2008 R2 & EF Code First 4.1を使用してASP.NET MVC3 Webアプリケーションを構築しています。ルックアップ/参照テーブルを新しいスキーマに移動する

「ルックアップ」テーブルは、しばしば小さくなりました。たとえば、「ステータス」テーブルには「Id」と「名前」が含まれています。アプリケーションが大きくなるにつれて、これらのテーブルは非常に頻繁になります。これらの重要でないテーブルをアプリケーションの要点から「グループ化」するための最良の方法を知りたいと思います。

"LkStatus"のようなプレフィックスを追加することをお勧めしますが、すべてのルックアップテーブルをdboから自分のスキーマに移動するのはどうですか?

誰にでもこの方法の欠点がありますか?

ありがとうポール

答えて

4

この方法では欠点はありません。私は個人的にスキーマのファンです。これはダウンの好みになるだろう

ALTER SCHEMA Lookup TRANSFER dbo.SomeTable 

または

ALTER AUTHORIZATION ON dbo.SomeTable TO Lookup 
+0

+1、ALTER SCHEMA ... TRANSFERは私にとって初めてのものでした。クールと感謝! –

1

:私はあなたが2つの方法があり、あなたのテーブルのスキーマを変更するにはLookup

かかわらを使用すると思います。いずれにしても、本当に「つかまえ」はありません。私はテーブルのプレフィックスを好むがどちらにも気にならないだろう。 LU_ *を使用します。いずれかのオプションが適用されている限り、回線のメンテナンスが容易になります。

0

テーブルが小さいので、それらをまとめて1つのテーブルにまとめるのはどうですか?擬似キーとしてテーブル名を使用する代わりに、実際のキーを使用します。たとえば、ID、タイプ、名前、および値を持つLookupという表を作成できます。ここでは、Status = StatusのType = 'Status'です。クラスタード・インデックスを(Type、Name)に設定すると、同じタイプのすべての行が物理的にグループ化され、必要に応じてすべてをグループとして高速に読み取ることができます。

名前が異なるデータ型を持つことができる場合は、整数型、文字列型、浮動小数型型など、必要な型ごとに余分な列を追加します。 T-SQLは少しだけ手間がかかります。

+1

これは悪い考え方の例です。ステータスが「ピンク」でないことを確認するには、ステータスと色が混在しているためです。これは、「1つの真のルックアップテーブル」のアンチパターンとして知られています。 http://stackoverflow.com/a/5374136/27535 – gbn

+0

入力RickNZをありがとう、私はgbnのリンクを読むまでこれも素晴らしいアイデアだと思った:http://www.projectdmx.com/dbdesign/lookup .aspx –

+0

これは、テーブルの使い方によって異なります。彼らが単に "検索"のためのもので、FKとして参照されていない場合は、FKとして使用するよりも、私が提案するアプローチが適切です。ルックアップでは、コードはテーブル名または型のような列の値を選択する必要があります。それは本当に同じことです。ステータス値の別の表がある場合、それらのいずれかを「ピンク」に設定することを妨げるものは何もありません。 – RickNZ

関連する問題