私は現在、真に最初の PHP アプリケーションを作成しています。MySQL ビューを適切にプロジェクト/設計/実装する方法を知りたいです。
私の特定のケースでは、ユーザーデータは(データベースの正規化の結果として)複数のテーブルに分散されており、ビューを使用してデータを1つの大きなテーブルにグループ化することを考えていました:
CREATE VIEW `Users_Merged` (
name,
surname,
email,
phone,
role
) AS (
SELECT name, surname, email, phone, 'Customer'
FROM `Customer`
)
UNION (
SELECT name, surname, email, tel, 'Admin'
FROM `Administrator`
)
UNION (
SELECT name, surname, email, tel, 'Manager'
FROM `manager`
);
このようにして、PHP アプリからビューのデータを簡単に使用できますが、これがパフォーマンスにどの程度影響するかはよくわかりません。
例えば:
SELECT * from `Users_Merged` WHERE role = 'Admin';
ビューのデータをフィルタリングする正しい方法ですか、それともビュー自体を作成する前にフィルタリングする必要がありますか? (これは、ユーザーのリストと、ユーザーをロールでフィルタリングする機能を持たせるために必要です)。
編集
具体的に私が取得しようとしているのは、3 つのテーブルを 1 つに非正規化することです。私の解決策は正しいですか? ウィキペディアの非正規化を参照してください