如何为许多电话号码设计员工表?

时间:2013-04-05 02:00:52

标签: database-design

假设您正在设计一个Employee表,并且必须容纳不同的电话号码.. Home,Work和Cell,但我想将来可能会有其他人。我们还要说,企业关心每个员工使用哪种手机。你会如何设计它?

这是一种非规范化的方式。很简单,但后来意味着为任何新手机类型添加一列:

员工

  • EMPLOYEEID
  • EmployeeLastName
  • EmployeeFirstName
  • EmployeeHomePhone
  • EmployeeWorkPhone
  • EmployeeCellPhone
  • CellPhoneId

手机

  • CellPhoneId
  • CellPhoneMake
  • CellPhoneModel

这是一种更加规范化/可扩展的方式,但是后来确定将CellPhone制作/模型信息放在type = cell(但不是type = home或work)的电话号码的位置:

员工

  • EMPLOYEEID
  • EmployeeLastName
  • EmployeeFirstName

EmployeePhone

  • EmployeePhoneId
  • EmployeePhoneNumber
  • PhoneTypeId

PHONETYPE

  • PhoneTypeId
  • PhoneTypeName
  • CellPhoneTypeId< - 非小区号码为空?好像很糟糕 设计。

我的倾向总是倾向于可扩展(虽然更复杂),而不是简单(但不那么可扩展),但在这里我不确定......特别是当你认为一个员工可能永远不会只有1个电话如果你可扩展,那么未来的代码就不能做出这样的假设,并且总是必须适应同一类型的多个数字的可能性(这不太现实)。

感谢您的任何想法。

2 个答案:

答案 0 :(得分:1)

员工
    EmployeeID
  EmployeeLastName,EmployeeFirstName

电话
   PhoneID
  PhoneTypeID,PhoneNumber

PHONETYPE
   PhoneTypeID
  Phonemake,Phonemodel

EmployeePhone
员工ID,联系
PhoneId,Notes

我建议完全放弃Phonetype。实际上,这是不相关的 - 它很快就会变得陈旧垃圾。我看不出任何高级管理人员会觉得有必要打扰他们告诉IT他们最新玩具的细节。毕竟,IT应该自动知道,不应该吗?

我要添加一个Contact字段 - 看,我对字段名称不太好,好吗?我的意思是reason for contact可能是'工作'或'家'或'周末'或'高尔夫俱乐部(星期四)'或其他什么。如果Notes是'医疗紧急',Ask for Jacinta可以用于contact

至于拥有多部手机 - 我认识的医生带有三部手机 - 除了他的办公室电话,练习电话,至少2部办公室医院电话,公共电话在家和私人电话 - 家(以及多个家庭......)他很难记住所有的数字......

答案 1 :(得分:0)

这样的东西?

Phone
ID 
Name 
Number 
Type ENUM('Work', 'Home','Cell')

Employee
ID 
EmployeeLastName 
EmployeeFirstName 

EmployeePhone
ID
EmployeeID
PhoneID