Evo kreirao sam nesto koliko sam pre mogao, nije original, ali to je to, ti podaci se koriste za uslove u upitima, bez index koji mozda ovde nisu kljucni po pitanju funkcionalnosti, dok za optimzaciju jesu:
CREATE TABLE `proizvodi` (
`id` int(5) NOT NULL,
`akt` int(1) NOT NULL DEFAULT '0',
`naziv` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL,
`opis` text COLLATE utf8_unicode_ci
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
INSERT INTO `proizvodi` (`id`, `akt`, `naziv`, `opis`) VALUES
(1, 1, 'Proizvod 1', 'Opis opis opis opis'),
(2, 1, 'Proizvod 2', 'Opis opis opis opis'),
(3, 1, 'Proizvod 3', 'Opis opis opis opis'),
(4, 1, 'Proizvod 4', 'Opis opis opis opis'),
(5, 1, 'Proizvod 5', 'Opis opis opis opis'),
(6, 1, 'Proizvod 6', 'Opis opis opis opis'),
(7, 1, 'Proizvod 7', 'Opis opis opis opis'),
(8, 1, 'Proizvod 8', 'Opis opis opis opis'),
(9, 1, 'Proizvod 9', 'Opis opis opis opis');
ALTER TABLE `proizvodi`
ADD PRIMARY KEY (`id`);
ALTER TABLE `proizvodi`
MODIFY `id` int(5) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10;
CREATE TABLE `filteri` (
`id` int(5) NOT NULL,
`akt` int(1) NOT NULL DEFAULT '0',
`naziv` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL,
`id_parent` int(10) NOT NULL DEFAULT '0'
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
INSERT INTO `filteri` (`id`, `akt`, `naziv`, `id_parent`) VALUES
(1, 1, 'Proizvodjac', 0),
(2, 1, 'Chipset', 0),
(3, 1, 'Asus', 1),
(4, 1, 'Gigabyte', 1),
(5, 1, 'Biostar', 1),
(6, 1, 'X399', 2),
(7, 1, 'Z390', 2);
ALTER TABLE `filteri`
ADD PRIMARY KEY (`id`);
ALTER TABLE `filteri`
MODIFY `id` int(5) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8;
CREATE TABLE `pro_filters` (
`id_pro` int(10) NOT NULL DEFAULT '0',
`id_filt` int(10) NOT NULL DEFAULT '0'
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
INSERT INTO `pro_filters` (`id_pro`, `id_filt`) VALUES
(1, 3),
(1, 6),
(2, 3),
(2, 7),
(3, 4);
Potrebna funkcionalnost:
Slucaj 1 -> Cekirane stavke Asus i Gigabyte da vrati sve Maticne ploce (proizvode) koje pripadaju cekiranim stavkama.
U ovom slucaju, vratilo bi proizvode 1, 2 i 3
Slucaj 2 -> Cekirani proizvodjaci iz prethodnog slucaja Asus i Gigabyte, a onda ide dodatno cekiranje stavki za Chipset, npr samo stavka X399, sto bi prema ovom uslovu, trebalo da mi vrati samo proizvod 1, jer samo taj proizvod poseduje cekirane stavke iz obe grupe (Asus i X399).
Naravno, postoje druge grupe filtera, pored Proizvodjaca i Chipseta, koje mogu da budu cekirane, naveo sam samo dva.
Valjda sam dobro objasnio.