-1

従業員テーブルを設計していて、さまざまな電話番号に対応する必要があるとしましょう..今のところ自宅、職場、セルですが、将来的には他にもあると思います. また、企業が各従業員が使用している携帯電話の種類を知りたいと考えているとしましょう。どのように設計しますか?

これが非正規化された方法です。シンプルですが、新しい電話タイプの列を追加することを意味します。

従業員

  • 従業員ID
  • 従業員の姓
  • 社員名
  • 従業員自宅電話
  • 従業員勤務電話
  • 社員携帯電話
  • 携帯電話 ID

携帯電話

  • 携帯電話 ID
  • 携帯電話メーカー
  • 携帯電話モデル

これはより正規化された/拡張可能な方法ですが、タイプ = セルの電話番号の携帯電話のメーカー/モデル情報をどこに配置するかを考え出す必要があります (ただし、タイプ = 自宅または職場ではありません):

従業員

  • 従業員ID
  • 従業員の姓
  • 社員名

従業員の電話番号

  • 従業員の電話番号
  • 従業員の電話番号
  • PhoneTypeId

電話の種類

  • PhoneTypeId
  • 電話の種類名
  • CellPhoneTypeId <-- セル番号以外の場合は null ですか? 悪いデザインのようです。

私の傾向は常に、単純な (ただし拡張性が低い) よりも拡張可能な (より複雑ですが) に傾いていますが、ここでは確信が持てません.. 特に、従業員が各タイプの電話を 1 つしか持っていない可能性が高いことを考えると. 拡張可能にすると、将来のコードはその仮定を行うことができず、常に同じ型の複数の数値の可能性に対応する必要があります (これはあまり現実的ではありません)。

ご意見ありがとうございます。

4

2 に答える 2

0

このようなもの?

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

Employee
ID 
EmployeeLastName 
EmployeeFirstName 

EmployeePhone
ID
EmployeeID
PhoneID
于 2013-04-05T02:11:15.993 に答える