私のデザインが正しいかどうか、そしてどのようにクエリ/挿入するかを解決しようとしています。従業員には、一連のコア コンピテンシーとジョブ固有のコンピテンシーがあります。Web サイトは、コア コンピテンシーのスコアリングを要求し、その後、ジョブ タイプに応じて一連の特定のコンピテンシーを要求します。
これまでのところ、従業員、部門 (つまり、ジョブ タイプ)、コンピテンシー (コア コンピテンシー、ソフトウェア コンピテンシーなど) を表す一連のテーブルがあります。
デパートメント:
Id
Department
従業員:
EmployeeId
LoginName
FK_DepartmentId
したがって、各コンピテンシー テーブルは次のようになります。
CompetencyId
Code
Description
計画では、各人がコア コンピテンシーと、対応するジョブ タイプとスコアを持っているということです。私が最初に考えたのは、スコアを獲得するための最善の方法は、次のようにテーブルをスコアリングする能力を持つことだったということです。
CompetencyScoreId
EmployeeId_FK
CompetencyCode_FK
Score
次に、個人の ID を使用してテーブルからフィルター処理できます。複数のテーブルスコアを持つことで、誰かが部門を変更した場合、古いテーブルから削除され、新しいテーブルに追加されることを確認する必要があると思います
新しいユーザーを追加するときは、コア テーブルを大きなテーブルに一連の行として貼り付ける必要があります。これは可能ですか、それとも賢明ですか?ユーザー名とコードの組み合わせがテーブル内で一意になるような制約を作成することは可能ですか?
別の方法は、コンピテンシー コードが列で、各ユーザーが列に対するスコアを含む行をテーブルに持つテーブルを用意することでした。これを行うと、列を追加するのが難しくなり、列名を説明に関連付ける方法がわかりませんでした。