データベースを正規化しているので、これは確かに良い考えです。私が書いているアプリで同様の設計を行いました。そこでは、従業員テーブルとユーザー テーブルがあります。ユーザーは外部の会社または従業員の場合があるため、従業員は常にユーザーですが、ユーザーは従業員ではない可能性があるため、別のテーブルを用意しています。
遭遇する問題は、user テーブルを使用するときはいつでも、表示したい名前やその他の共通属性を person テーブルに取得させたいということです。
コーディングの観点から言えば、単純な SQL を使用している場合、select ステートメントを頭の中で解析するにはもう少し労力が必要です。ORM ライブラリを使用している場合は、もう少し複雑になる可能性があります。私はそれらについて十分な経験がありません。
私のアプリケーションでは、Ruby on Rails で書いているので、employee.user.name のようなことを常に行っています。これらをまとめると、employee.name または user.name になります。
パフォーマンスの観点からは、1 つではなく 2 つのテーブルにヒットしていますが、適切なインデックスがあれば、無視できるはずです。たとえば、主キーと個人名を含むインデックスがある場合、データベースはユーザー テーブルにヒットし、次に個人テーブルのインデックスにヒットします (ほぼ直接ヒットします)。 1つのテーブルを持つこと。
データベースにビューを作成して、両方のテーブルを結合したままにして、パフォーマンスをさらに向上させることもできます。Oracle の新しいバージョンでは、必要に応じてビューにインデックスを付けてパフォーマンスを向上させることもできます。