0

我正在努力将数据库分解为第一范式。

注意:我已将数据要求分解为 UNF 平面文件表,我将把图片放在下面,但我的声誉目前不高于 10。但是我会列出我的联合国基金会代表

这些是数据要求;

  • 每个办公室都有一名经理(往往也是一名高级讲师)、数名高级讲师、讲师和行政人员。经理负责办公室的日常运作。
  • 客户必须首先在办公室注册,其中包括填写一份申请表,其中记录了他们的个人详细信息。在第一节课之前,客户被要求参加与教练的面谈,以评估客户的需求并确保客户持有有效的临时驾驶执照。在整个学习驾驶过程的任何阶段,客户都可以自由地要求特定的教练或要求更换教练。面试结束后,第一节课就预定好了。客户可以要求单独的课程或以优惠的费用预订一组课程。
  • 一节课为一小时,在办公室开始和结束。课程是在特定时间与特定教练在特定汽车上进行的。课程最早可以在上午 08:00 开始,最晚可以在晚上 8:00 开始。每节课结束后,教练都会记录客户的进度,并记下课程中使用的里程数。
  • 学校有汽车库,可用于教学目的。每个教练都被分配到一辆特定的汽车上。除了教学之外,教师还可以免费使用汽车供个人使用。定期检查汽车是否存在故障。
  • 准备好后,客户申请驾驶考试日期。要获得正式驾驶执照,客户必须通过驾驶和笔试部分。教师有责任确保客户为考试的各个方面做好最好的准备。教练不负责测试客户,并且在测试期间不在车内,但应该可以在测试中心之前和之后接送客户。如果客户未能通过测试,教师必须记录失败的原因。

驾校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]
) 

如果你想看联合国基金会,我会给你发电子邮件。

4

1 回答 1

1

您将需要以下表格:

ROLES
role_id
role_name

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

如果您要为一个人提供多个电话号码,请考虑将它们存储在不同的表中;还要注意单个地址字段的问题。你不应该需要一个单独的桌子供教师使用;这些只是员工,他们的角色是指导员。

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)

不需要“尝试”字段 - 您可以计算每个客户端的“测试”表中有多少条目,以便了解每个客户端尝试测试的次数。

我希望这足以让您开始使用数据库。

编辑 19/12/12:我添加了外键关系和一个新表 RESULTS。

于 2012-12-18T13:42:14.493 回答