私はリレーショナルデータベースでかなりの作業を行ってきましたが、優れたスキーマ設計の基本概念はかなりよく理解していると思います。私は最近、DBが高給コンサルタントによって設計されたプロジェクトを引き継ぐことを任されました。私の腸の本能-「WTF ??!?」-保証されていますか、それともこの男は私の天才であるかのような天才ですか?
問題のDBは、従業員からのリクエストを入力するために使用される社内アプリです。そのほんの一部を見るだけで、ユーザーに関する情報と、行われているリクエストに関する情報が得られます。私はこれを次のように設計します:
ユーザー表:
UserID (primary Key, indexed, no dupes)
FirstName
LastName
Department
リクエスト表
RequestID (primary Key, indexed, no dupes)
<...> various data fields containing request details
UserID -- foreign key associated with User table
シンプルでしょ?
コンサルタントは次のように設計しました(サンプルデータを使用)。
UsersTable
UserID FirstName LastName
234 John Doe
516 Jane Doe
123 Foo Bar
部門テーブル
DepartmentID Name
1 Sales
2 HR
3 IT
UserDepartmentTable
UserDepartmentID UserID Department
1 234 2
2 516 2
3 123 1
RequestTable
RequestID UserID <...>
1 516 blah
2 516 blah
3 234 blah
データベース全体はこのように構築され、すべてのデータは独自のテーブルにカプセル化され、数値IDがすべてをリンクしています。コンサルタントはOLAPについて読んでいて、「整数検索の速度」を望んでいたようです。
また、これらすべてのテーブルを相互参照するための多数のストアドプロシージャも持っています。
これは、小規模から中規模のSQL DBに有効な設計ですか?
コメント/回答をありがとう...