假设您正在设计一个 Employee 表,并且必须容纳不同的电话号码。现在是 Home、Work 和 Cell,但我想将来可能会有其他人。还可以说,企业关心知道每个员工使用什么样的手机。你会如何设计它?
这是一种非规范化的方式。很简单,但意味着为任何新电话类型添加一列:
员工
- 员工ID
- 员工姓氏
- 员工名字
- 员工家庭电话
- 员工工作电话
- 员工手机
- 手机号
手机
- 手机号
- 手机制造
- 手机型号
这是一种更规范化/可扩展的方式,但随后需要弄清楚将手机品牌/型号信息放在哪里,以获取 type = cell(但不是 type = home 或 work)的电话号码:
员工
- 员工ID
- 员工姓氏
- 员工名字
员工电话
- 员工电话号码
- 员工电话号码
- 电话类型 ID
电话类型
- 电话类型 ID
- 电话类型名称
- CellPhoneTypeId <--非手机号码为空?似乎是糟糕的设计。
我的倾向总是倾向于可扩展(尽管更复杂)而不是简单(但可扩展性较差),但在这里我不确定.. 特别是当您考虑到员工可能永远不会拥有每种类型的手机只有一部时。如果您采用可扩展性,那么未来的代码就不能做出这样的假设,并且总是必须适应同一类型的多个数字的可能性(这不太现实)。
感谢您的任何想法。