質問: sql serverでの1対1の関係の定義 1対1の関係を定義する必要がありますが、sql serverでそれを行う適切な方法を見つけることができないようです。なぜ1対1の関係を求めるのですか?wcfをdal(linq)として使用していて、blob列を含むテーブルがあります。 blobはほとんど変更されず、クエリが行われるたびにblobを転送することは帯域幅の無駄になります。私は this solution を確認しましたが、素晴らしいアイデアのように見えますが、このアプローチを実装しようとすると、linqが少しヒス状にフィットしているのがわかります。何か案は?
回答: 1:1の関連アイテムを同じテーブルの同じ行に入れます。これが、「リレーショナルデータベース」の「関係」の由来です。関連するものが同じ行に入ります。ネットワーク上を移動するデータのサイズを減らしたい場合は、必要な列のみを投影することを検討してください。select c1, c2, c3 from t1 または、関連する列のみを投影するビューを作成し、必要なときにそのビューを使用します。create view v1 as select c1, c2, c3 from t1 select * from t1 update v1 set c1=5 where c2=7 blobはsql serverの行外に格納されるため、データを垂直分割することでディスクioを大幅に節約することはできません。これらが非blob列である場合、ベーステーブルのスキャンに使用するディスクioが少なくなるため、前述のようにフォームの垂直分割が役立つ場合があります。