首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将表规范化为1NF

将表规范化为1NF
EN

Stack Overflow用户
提问于 2012-12-18 12:48:48
回答 1查看 870关注 0票数 0

我正努力把数据库分解成第一种形式。

注:我已经把数据要求分解成一个联合国基金会的平面文件表,我打算把图片放在下面,但我的声誉还没有超过10。不过,我会列出我的联合国基金会代表

这些是对数据的要求;

  • 每个办公室都有一名经理(往往也是一名高级教官)、几名高级教员、教官和行政人员。经理负责办公室的日常运转.
  • 客户必须首先在办公室注册,其中包括填写申请表,其中记录其个人详细信息。在第一堂课之前,要求客户参加与教师的面谈,以评估客户的需求,并确保客户持有有效的临时驾驶执照。在学习驾驶的过程中,客户可以自由地要求一个特定的指导员,或者要求在任何阶段更换指导员。面试结束后,第一堂课就订好了。客户可以要求个别的课程或预订在一组课程,以减少费用。
  • 一个单独的课程是一个小时,在办公室开始和结束。一堂课是在某一特定时间在一辆特定的汽车上与一位特定的教练一起上的课。上课时间可以早在上午8点,晚到晚上8点。每次上课后,教师记录客户所取得的进步,并记录课程期间使用的里程数。
  • 这所学校有一大群汽车,用于教学目的。每个教练都被分配到一辆特定的汽车上。除了教学之外,教师还可以自由使用汽车供个人使用。定期检查这些汽车是否有故障。
  • 一旦准备就绪,客户就会申请一个驾驶测试日期。要获得完整的驾驶执照,客户必须通过测试的驾驶部分和书面部分。教师有责任确保客户对考试的各个方面都做好了充分的准备。教师不负责对客户进行测试,在测试期间也不在车内,但在测试中心测试之前和之后应该可以下车并接住客户。如果客户端测试失败,教员必须记录失败的原因。

驾驶学校联合国基金会的正常代表:

代码语言:javascript
复制
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]
) 

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

EN

回答 1

Stack Overflow用户

发布于 2012-12-18 13:42:14

您需要下列表格:

代码语言:javascript
复制
ROLES
role_id
role_name

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

如果您要为一个人准备几个电话号码,那么请考虑将它们存储在不同的表中;还要注意单个地址字段的问题。你不应该需要一个单独的教官表;这些员工的角色就是指导员。

代码语言:javascript
复制
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)

我不认为只要每个客户只接受一次面试,你就不需要一个单独的面试表

代码语言:javascript
复制
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)

没有必要使用“尝试”字段--您可以计算每个客户端的“test”表中有多少个条目,以便知道每个客户端尝试测试的次数。

我希望这足以让你开始建立一个数据库。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13933403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档