0

データベースを第 1 正規形に分解するのに苦労しています。

注: データ要件を UNF フラット ファイル テーブルに分割しました。下に画像を配置するつもりでしたが、私の評価はまだ 10 を超えていません。ただし、UNF表現をリストします

これらはデータ要件です。

  • 各オフィスには、マネージャー (上級インストラクターでもある傾向があります)、複数の上級インストラクター、インストラクター、および管理スタッフがいます。マネージャーは、オフィスの日常的な運営に責任を負います。
  • クライアントは、最初にオフィスで登録する必要があります。これには、個人情報を記録する申請書への記入が含まれます。最初のレッスンの前に、クライアントは、クライアントのニーズを評価し、クライアントが有効な暫定運転免許証を保持していることを確認するために、インストラクターとの面接に出席するように求められます。クライアントは、特定のインストラクターを依頼したり、運転の学習過程のどの段階でもインストラクターの変更を依頼したりすることができます。面談後、初回レッスン予約となります。クライアントは、個別のレッスンをリクエストするか、割引料金でレッスンのブロックを予約することができます.
  • 個人レッスンは、オフィスで始まりオフィスで終わる1時間です。レッスンは、特定の時間に特定の車で特定のインストラクターと一緒に行われます。レッスンは、早くて午前 8 時から、遅くて午後 8 時まで開始できます。各レッスンの後、インストラクターはクライアントの進捗状況を記録し、レッスン中に使用した走行距離を記録します。
  • 学校には、教育目的に適した車のプールがあります。各インストラクターは特定の車に割り当てられます。指導だけでなく、インストラクターは個人的な使用のために車を自由に使用できます。車は定期的に故障がないか検査されます。
  • 準備が整うと、クライアントは運転免許試験の日程を申請します。完全な運転免許証を取得するには、クライアントはテストの運転部分と筆記部分の両方に合格する必要があります。クライアントがテストのあらゆる面で最善の準備ができるようにすることは、インストラクターの責任です。インストラクターはクライアントをテストする責任はなく、テスト中は車に乗っていませんが、テスト センターでのテストの前後にクライアントを降ろしたり迎えに行ったりすることができる必要があります。クライアントがテストに失敗した場合、インストラクターは失敗の理由を記録する必要があります。

自動車教習所のUNFの正規化表現:

OFFICE(
OfficeID,OfficeName,OfficeAddress,OfficePostcode,ManagerID,ManagerNAME,
ManagerTelephone,

[StaffID,StaffRole,StaffName,StaffSurname,StaffAddress,StaffPostcode,StaffSex,StaffD.O.B,
InstructorID,InstructorName,InstructorSurname,InstructorTelephone, CarID,CarRegistration,CarFaults,FaultDescription,

[ClientID,ClientName,ClientSurname,ClientAddress,ClientPostcode,ClientTelephone,ClientSex, 
InterviewID,Interviewer,ValidProvisional LessonID,LessonTime,LessonType,LessonPrice,LessonMileage,LessonProgress,
TestID,TestType,TestResult,Attempts,Failure Reason,Date Achieved]
) 

UNF をご覧になりたい場合は、電子メールでお知らせします。

4

1 に答える 1

1

次のテーブルが必要です。

ROLES
role_id
role_name

EMPLOYEES
employee_id
forename
surname
role  (fk, -> roles.role_id)
telephone 
gender
address
postcode
dob

1 人の電話番号を複数持つ場合は、それらを別のテーブルに格納することを検討してください。単一の住所フィールドの問題にも注意してください。インストラクター用に別のテーブルは必要ありません。これらは単にインストラクターの役割を持つ従業員です。

OFFICES
office_id
office_name
address
manager (fk, -> employees.employee_id)

CLIENTS
client_id
forename
surname
address
postcode
telephone
gender
has_driving_license
interviewdate
interviewer   (fk, -> employees.employee_id)

各クライアントが一度だけインタビューを受ける限り、個別のインタビュー表は必要ないと思います

CARS
license
description

LESSONS
lesson_id
curdate
client   (fk, -> clients.client_id)
instructor  (fk, -> employees.employee_id)
car      (fk, -> cars.license)
price
invoice
receipt

RESULTS
result_id
description

TESTS
test_id
client   (fk, -> clients.client_id)
curdate
result   (fk, -> results.result_id)

「試行」フィールドは必要ありません。各クライアントがテストを試行した回数を知るために、各クライアントの「テスト」テーブルにあるエントリの数を数えることができます。

データベースを使い始めるには、これで十分だと思います。

EDIT 19/12/12: 外部キー関係と新しいテーブル RESULTS を追加しました。

于 2012-12-18T13:42:14.493 に答える