In a PHP/MySQL mail system, what are the advantages and disadvantages of duplicating messages for each user's inbox and outbox?

When designing a PHP/MySQL mail system, duplicating messages for each user's inbox and outbox can provide faster retrieval and improved performance when displaying messages. However, this approach can also lead to increased storage requirements and potential data redundancy. To address this issue, a more efficient solution would be to store messages in a single table and use a separate table to track message recipients and senders.

// Table structure for messages
CREATE TABLE messages (
    id INT AUTO_INCREMENT PRIMARY KEY,
    sender_id INT,
    subject VARCHAR(255),
    message TEXT,
    date_sent TIMESTAMP
);

// Table structure for message recipients
CREATE TABLE message_recipients (
    id INT AUTO_INCREMENT PRIMARY KEY,
    message_id INT,
    recipient_id INT,
    is_read TINYINT DEFAULT 0
);

// Table structure for message senders
CREATE TABLE message_senders (
    id INT AUTO_INCREMENT PRIMARY KEY,
    message_id INT,
    sender_id INT
);