1

このデータベースでは、従業員が1つの管轄区域にいる場合もあれば、複数の管轄区域にいる場合もあります。たとえば、ボブの管轄は北アメリカ、南アメリカ、およびアフリカになります。Janesは北米だけですが。ただし、各従業員には常に部門があります。

一部の従業員には1つの管轄区域しか割り当てられていない場合もあれば、それ以上の管轄区域が割り当てられている場合もあるため、これが管轄区域を実装するための最良の方法ですか?または、より効率的な方法はありますか?

結合ステートメントを使用し、クエリを部門別に選択します。

employees
-----------------
userID (primary key)
deptID (foreign key and NOT NULL references departments)
firstName
lastName
jurisdiction1 (foreign key references jurisdictions)
jurisdiction2 (foreign key references jurisdictions)
jurisdiction3 (foreign key references jurisdictions)
jurisdiction4 (foreign key references jurisdictions)
jurisdiction5 (foreign key references jurisdictions)
jurisdiction6 (foreign key references jurisdictions)
jurisdiction7 (foreign key references jurisdictions)

jurisdictions
-------------------
jurID primary key
jurisdictionName


departments
--------------------
deptID primary key
departmentName
4

2 に答える 2

2

管轄テーブルの設計がスキームで正しくありません。ユーザーとリージョンの関係を格納するための中間テーブルが必要です。このような。

employee table
--------------
user_id
first_name
depart_id
j_id

jurisdiction table
-----------------
j_id
region

employee_jurisdiction
------------------
id
user_id 
j_id
(Set INDEX as no duplicate for user_id+j_id)     
于 2012-12-13T06:51:41.890 に答える
1

この場合、新しいテーブルjurisdictionsを用意することをお勧めしEmployeesJurisdictionsます。

Jurisdictions

  • Id
  • JurisdictionName

UsersJurisdictions

  • EmployeeId外部キー参照Employees(EmployeeId)
  • JurisdictionId外部キー参照jurisdictions(jurisdictionId)
于 2012-12-13T06:48:20.323 に答える