5

企業のユーザーを単純に管理するデータベース設計を開始しようとしています。

  • 各企業には、ユーザーを管理できる管理領域があります
  • 各企業には約 25,000 人のユーザーがいます
  • クライアントは、約 50 社の企業が開始できると考えています

私の主な質問は

会社に基づいてテーブルを作成する必要がありますか? お気に入り

users_company_0001 users_company_0002 users_company_0003...

各企業は「他の」ユーザーを使用することは決してなく、すべての user_company で異なるテーブルを合計/カウントする必要はありません(単純なものでうまくいきJOINますが、より高価(時間)ですが、メインの画像を持つように機能します。これは決して必要とされる。

またはusers、 (50 x 25000) 1 250 000ユーザー (および増加中)を持つテーブルを作成する必要があります。

最初のオプションについて考えていますが、そのようなレイアウトで Entity Framework をどのように使用すればよいかわかりません...おそらく 90 年代に戻って、データ ロジック レイヤーを手動で生成する必要があります。

会社IDを含むストアプロシージャへの単純な呼び出しになりますか

何を提案しますか?

システム アプリケーションはASP.NETになります(おそらく MVC です。Scott Hanselman の MVC ビデオを見ましたが、Web フォームに関するすべての知識があるため、まだこれを理解しようとしていますが、継ぎ目は簡単です。しかし、それほど簡単ではないことはわかっています。問題が発生する可能性があり、それらを修正するにはさらに時間がかかります)、さらにMicrosoft SQL .

4

4 に答える 4

9

これは 1 対多の関係であると説明しましたが、今後の要件の変更を防ぐために、DB を多対多として設計します。何かのようなもの:

代替テキスト

于 2010-09-28T21:16:20.060 に答える
7

数テラバイトのSQLServerデータベースを使用し、数百万行のキャリアの中で数百のテーブルを使用した経験があるので、SQLServerがユーザーcompanyusersパーティション化されていないテーブル。必要なときにいつでも利用できますが、テーブルについて心配する必要はありません。ニーズに合った最も単純なスキーマを選択してください。パフォーマンスを最適化するために何かをしたい場合、ボトルネックはほぼ確実にディスクになります。大きくて遅いディスクを購入しないでください。小さくて高RPMのディスクをたくさん手に入れて、データを可能な限りそれらに分散させ、ディスクをログやデータと共有しないでください。データベースを使用すると、ほとんどの場合、優れたハードウェア、優れたディスクサブシステム、および適切なインデックスを使用してパフォーマンスを達成する方が効果的です。パフォーマンスを予測しようとしてスキーマを妥協したり複雑にしすぎたりしないでください。後悔します。そのようなことが必要な非常に大きなデータベースを見たことがありますが、あなたはそうではありません。

于 2010-09-29T01:31:58.763 に答える
3

re:会社に基づいてテーブルを作成する必要がありますか? はい

お気に入り

users_company_0001 users_company_0002 users_company_0003

いいえ、好きです

companyID  companyName, contactID

または、(50 x 25000) 1 250 000 ユーザー (および増加中) を持つユーザー テーブルを作成する必要があり ます。

于 2010-09-28T20:59:27.843 に答える
1

会社用とユーザー用に別々のテーブルを作成する必要があると思います。次に、2 つを接続する 3 番目のテーブル: CompanyAdmin. 何かのようなもの:

  • 会社( Company_Id、 Company_name 、...)
  • ユーザー( User_Id、 User_name 、...)
  • CompanyAdmin ( Company_id , User_id)

このようにして、管理する必要があるテーブルの数に影響を与えることなく、ユーザーや会社を追加できます。新しいデータ (会社) がシステムに追加されたときに、データベースを変更する (つまり、テーブルを追加する) 必要があるのは、一般的に悪い設計です。

適切なインデックスを作成すれば、数百万行を含むデータベースの結合コストは問題になりません。

最後に、会社、ユーザー、またはそれらの間の関係に関する追加情報を変更または記録する必要がある場合、このセットアップはアプリケーションへの影響を最小限に抑える必要があります。

于 2010-09-28T21:24:21.863 に答える