0

私は基本的にウェブチェックリストをデザインしています。プロセスは次のとおりです。ユーザーがログインし、リストの「ジョブ名」を選択してクリックし、次のページに移動し、リストから「手順リスト」を選択してクリックし、次のページに移動します。基本的にコメントを追加できるチェックリストで、個々のリストのチェックボックスをクリックします。私はそのほとんどをコーディングする方法を知っていますが、現時点では、関係を設定する方法と、情報を保持するために追加する追加のテーブルを理解しようとしています。

私が現在持っている一般的なレイアウト:

Table: User_list
User_ID
Username

Table: Job_list
Job_ID
Job Name

Table: Procedure_List
Procedure_ID
Procedure Name
Job_ID

Table: Check_List
Job_ID
Checklist_ID
Description

Job_ID-> Procedure_ID-> Checklist_IDは1対多ですが、ユーザーが行ったすべての変更を保存するためにユーザーリストを追加する方法。

したがって、基本的に、次の1つのページを表示できます。

Job Name
Procedure
Checklist done

そして、ユーザーによって行われたすべての詳細。

4

1 に答える 1

0

関係はジョブ1:m手順1:mチェックリストであると想定しています。また、ユーザーは任意の数のジョブを選択できます。ジョブ/手順/チェックリストの組み合わせは、ユーザーが選択します。たとえば、ジョブに10個の関連するプロシージャがあり、ユーザーがこれらの1つ以上を選択するとします。手順についても同じ:特定の手順には特定のチェックリストが関連付けられており、ユーザーはこれらのチェックリストをいくつでも選択できます。

「テーブルの結合」を使用します。

  1. User_Jobテーブル。ユーザーは、任意のジョブまたは任意の数のジョブに関連付けることができます。user_IDとjob_IDはUser_Jobテーブルに入ります。主キーをUser_ID+job_IDにします。
  2. Job_Procedureテーブル。User_Jobキー(両方の列)とprocedure_idをこのテーブルに配置します。主キーをUser_ID、Job_ID、Procedure_IDにします
  3. Procedure_Checklistテーブル。Job_procedureキー(すべての列)とchecklist_idをこのテーブルに配置します。すべての列を使用して、主キーを複合にします。

主キーの考え

各テーブルの主キーのシーケンス番号により、関連するテーブルの列数が制限されます。ただし、このキーには実際の意味はありません。たとえば、Procedure_Checklistテーブルを見ている場合、他のテーブル(PITA)にクエリを実行しないと、どのジョブとユーザーかを判断できません。そのようなキーをソートすることも無意味です。また、行の重複を防ぐことはできません。

于 2013-03-25T15:23:48.743 に答える