-1

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

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

员工

  • 员工ID
  • 员工姓氏
  • 员工名字
  • 员工家庭电话
  • 员工工作电话
  • 员工手机
  • 手机号

手机

  • 手机号
  • 手机制造
  • 手机型号

这是一种更规范化/可扩展的方式,但随后需要弄清楚将手机品牌/型号信息放在哪里,以获取 type = cell(但不是 type = home 或 work)的电话号码:

员工

  • 员工ID
  • 员工姓氏
  • 员工名字

员工电话

  • 员工电话号码
  • 员工电话号码
  • 电话类型 ID

电话类型

  • 电话类型 ID
  • 电话类型名称
  • CellPhoneTypeId <--非手机号码为空?似乎是糟糕的设计。

我的倾向总是倾向于可扩展(尽管更复杂)而不是简单(但可扩展性较差),但在这里我不确定.. 特别是当您考虑到员工可能永远不会拥有每种类型的手机只有一部时。如果您采用可扩展性,那么未来的代码就不能做出这样的假设,并且总是必须适应同一类型的多个数字的可能性(这不太现实)。

感谢您的任何想法。

4

2 回答 2

1

员工
EmployeeID
EmployeeLastName, EmployeeFirstName

电话
PhoneID
PhoneTypeID, PhoneNumber

Phonetype
PhoneTypeID
Phonemake, Phonemodel

EmployeePhone
EmployeeID、Contact
PhoneId、Notes

我建议Phonetype完全放弃的地方。实际上,这无关紧要——它很快就会充满陈旧的垃圾。我看不出有任何高级主管会觉得有必要将他们最新玩具的详细信息告知 IT 部门。毕竟,IT 应该自动知道,不是吗?

我会添加一个Contact字段 - 看,我对字段名称不太擅长,好吗?我的意思是reason for contact可能是“工作”或“家”或“周末”或“高尔夫俱乐部(星期四)”或其他。Notes可以用于well-notes,例如“医疗紧急Ask for Jacinta情况contact”。

至于拥有多部手机——我认识的一位医生携带三部手机——除了他的办公室电话、实习电话、至少 2 部医院办公室电话、家中的公共电话和家中的私人电话(以及多户人家……)他能记住所有的数字真是一个奇迹……

于 2013-04-05T07:45:48.227 回答
0

像这样的东西?

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

Employee
ID 
EmployeeLastName 
EmployeeFirstName 

EmployeePhone
ID
EmployeeID
PhoneID
于 2013-04-05T02:11:15.993 回答