私はこれらのテーブルを持っています:
Projects(projectID, CreatedByID)
Employees(empID,depID)
Departments(depID,OfficeID)
Offices(officeID)
CreatedByID
の外部キーですEmployees
。ほぼすべてのページの読み込みに対して実行されるクエリがあります。
3つの結合を削除するために、冗長なOfficeID
列を追加するのは悪い習慣ですか?Projects
または、次のことを行う必要があります。
SELECT *
FROM Projects P
JOIN Employees E ON P.CreatedBY = E.EmpID
JOIN Departments D ON E.DepID = D.DepID
JOIN Offices O ON D.officeID = O.officeID
WHERE O.officeID = @SomeOfficeID
アプリケーションプログラミングでは、「最初にベストプラクティスで記述し、後で最適化する」のですが、データベース管理者は常に結合のコストについて警告しています。