What are the drawbacks of not normalizing database tables in PHP applications and how can this impact data retrieval and manipulation?

Not normalizing database tables in PHP applications can lead to redundant data, data inconsistencies, and difficulties in maintaining and updating the database. This can impact data retrieval and manipulation as it can result in slower query performance, increased storage requirements, and potential data integrity issues.

// Example of normalizing database tables in PHP using PDO

// Connect to the database
$pdo = new PDO('mysql:host=localhost;dbname=mydatabase', 'username', 'password');

// Create a normalized table for users
$pdo->exec("CREATE TABLE users (
    id INT(11) AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL,
    password VARCHAR(255) NOT NULL
)");

// Create a separate table for user profiles
$pdo->exec("CREATE TABLE user_profiles (
    id INT(11) AUTO_INCREMENT PRIMARY KEY,
    user_id INT(11) NOT NULL,
    full_name VARCHAR(100) NOT NULL,
    bio TEXT
)");

// Establish a foreign key relationship between users and user_profiles
$pdo->exec("ALTER TABLE user_profiles ADD FOREIGN KEY (user_id) REFERENCES users(id)");