2011-12-09 8 views
2

なぜasp.netはMembership、Role、Profileプロバイダにbigintの代わりにGUID列を使用するのですか?asp.netがbigintの代わりにGUID列を使用する理由

私が聞いたように、int/bigintでguidsを使うのが最も受け入れられる理由は、これらのテーブルを複製したり、別のテーブルにマージする必要があるかどうかはわかりません。

+3

を買う余裕ができます。 –

+0

ASP.NETメンバーシップサブシステムはおそらくSharepointの人々によって設計されていたでしょう.....--) –

+0

@marc_s - 正直言って、ASP.NET 2.0の機能の大部分メンバーシップを含む)はSharePoopのために指定されました。 –

答えて

4

これは、それが必要かどうか疑問に思う理由の反対側にGUIDの種類を使用する可能性があります。そのデータベースの作成者は、さまざまなサイトで使用することを意図していたため、 を他のデータとマージする必要がある状況で使用されないことを保証しません。

2

ガイドの主な利点は、すべてのデータとテーブルで完全に一意であることです。ところで、値の面でより多くのヘッドルーム

2

Guidsを使用すると、Active DirectoryとWindows SIDのメンバシップを仲介するのに役立ちます。間違いなく、システム生成整数でそれを行うことはできませんでした。

+0

なぜあなたは整数でそれをすることができないのか説明できますか? – jim

+0

Windows SIDはGUIDです。 –

+0

まあ、メンバーシップ、役割、プロファイルプロバイダーには選択肢のないアクティブなディレクトリを使用したかったからだと思います。情報のおかげで – jim

1

メンバシップ、ロール、およびプロファイルプロバイダが、1組のテーブル内の複数のアプリケーションのロールとメンバシップをサポートしていることにも注意してください。これらすべてのアプリケーションに対して自動インクリメント列を維持しなければならない場合は、エンタープライズソリューション全体で発生するすべての削除を伴うメンテナンスの悪夢となります。 MS SQL Serverのユニークな識別子であるGUIDは、これをずっと簡単に管理できます。

+0

ありがとうございます。 – jim

0

他の方法を見てみると、なぜGUIDを使用しないのですか? インデックスのサイズと非効率性が主なものになります。これらの両方は、膨大な量のデータを含む本当の懸念事項であり、あなたの例はそうではありません。

bigintでしたが、3つのプロファイルが作成されていれば、誰もが最初に4つのプロファイルを作成していましたが、今度は2つのインスタンスをマージする必要があります。あなたが責任を持っておらず、どこでも代理キーを使用していたら、悪夢。 Microsoftがそう言ったので

だから私は私の設計でこれを探していたとき、私の質問があり、私は、GUIDを使用しない....

+0

ちょうど[クラスタリングキーとしての**悪いGUIDの読み方](http://www.sqlskills.com/BLOGS/KIMBERLY/post/GUIDs-as-PRIMARY-KEYs-andor-the-clustering-key.aspx )あなたはあなたの心を変えるかもしれない..... –