CREATE TABLE `Products` ( `id` int PRIMARY KEY, `name` varchar(255), `price` varchar, `...` varchar(255) ); CREATE TABLE `SpecificationAttributes` ( `id` int PRIMARY KEY, `name` varchar(255) ); CREATE TABLE `SpecificationOptions` ( `id` int, `name` varchar(255), `attribute_id` int, FOREIGN KEY(`attribute_id`) REFERENCES `SpecificationAttributes` (`id`) ); CREATE TABLE `Product_Option` ( `id` int, `Option_id` int, `product_id` int, `displayOrder` int, `AllowFilter` bool, `ShowOnProductPage` bool, FOREIGN KEY(`Option_id`) REFERENCES `SpecificationOptions` (`id`), FOREIGN KEY(`product_id`) REFERENCES `Products` (`id`) );