All items in the items table have a category that can be derived from the item_category table.
+---------------------------------------------+
| items                                       |
+---------------------------------------------+
| id                 | PK                     |
+--------------------+------------------------+
| item_category_id   | FK(item_categories.id) |
+--------------------+------------------------+
The item_category table references itself. I wanted to create a category->sub-category->sub-sub-category etc. system. I don't know how many nested sub-categories there will be so I thought my best bet would be to enclose that structure in a single table. If the item_category_id is NOT NULL then it has a parent, otherwise it is a super-category and does not have a parent.
+-------------------------------------------+
| item_categories                           |
+-------------------------------------------+
| id               | PK                     |
+------------------+------------------------+
| item_category_id | FK(item_categories.id) |
+------------------+------------------------+
This is where my question lies. The doll_item table is a pivot table. Basically a doll can have many items and an item can belong to many dolls. But there's more to it than that. I want to make sure that for every doll, in the doll_item table, its corresponding item comes from a unique category.
I have tried to pull in the item_category_id for the item in each row; however, I fear that this relation does not enforce that the item_id and item_category_id from the items table necessarily come from the same row. Without this requirement, the addition of the two latter rows in the doll_item table is pointless.
Is it possible to enforce this using MySQL?
+-------------------------------------------------------+
| doll_item                                             |
+-------------------------------------------------------+
| doll_id              | FK(dolls.id)                   |
+----------------------+--------------------------------+
| item_id              | FK(items.id)                   |
+----------------------+--------------------------------+
| item_category_id     | FK(items.item_category_id)     |
+----------------------+--------------------------------+
| unique(doll_item.doll_id, doll_item.item_category_id) |
+-------------------------------------------------------+
Thanks
 
    