I am building a financial app, and it requires the following tables:

1. tax
2. item, which can have one tax
3. invoice, which can have many items

**To the question:**

An invoice must have the ability to contain 3 categories of emails:

1. Recipient emails
2. CC emails
3. BCC emails

So far I just have a recipients/cc/bcc column, but I don't think it's good because I'd basically have to concatenate the emails together and separate them by a comma or something. 

I also thought about a generic email table, but then I'd have to create `invoice_recipient_email`, `invoice_cc_email` and `invoice_bcc_email` tables respectively, in order to link the emails back to the particular invoice ID as well as categorize them by the 3 types.

Can someone advice me on my second solution, or provide a better way to do this?

Here is my current schema:

```
CREATE TABLE tax (
    id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,

    name VARCHAR(255) NOT NULL,
    rate INT(3) NOT NULL,

    PRIMARY KEY (id)
);

CREATE TABLE item (
    id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,

    name VARCHAR(255) NOT NULL,
    description VARCHAR(1000) NOT NULL,
    quantity INT(10) NOT NULL,
    price INT(10) NOT NULL,

    CONSTRAINT `f_tax_item_tax_id` FOREIGN KEY (`tax_id`) REFERENCES `tax` (`id`),

    PRIMARY KEY (id)
);

CREATE TABLE invoice (
    id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,

    invoice_number VARCHAR(255) NOT NULL,
    recipients VARCHAR(1000) NOT NULL,
    cc VARCHAR(1000) NOT NULL,
    bcc VARCHAR(1000) NOT NULL,
    discount INT(10) NOT NULL,
    note VARCHAR(500) NOT NULL,
    terms VARCHAR(2000) NOT NULL,
    due_date TIMESTAMP NOT NULL,

    PRIMARY KEY (id)
);

```