Topic: Lentelės pavadinimas kaip lentelės įrašas?
Radau čia Povilo klausimą, kuris kiek panašus į mano, bet vistiek nesupratau, kaip geriau daryti...
(Beje, kol kas tik planuoju DB ant popieriaus, tai jokių MySQL konkretybių negaliu pateikt.
Situacija tokia: tarkime, kad aprašinėjam gražias vietas Lietuvoje. Vietos aprašymas kaip kokiame Yahoo! Directory susideda iš id, pavadinimo, aprašymo, kategorijos, iliustracijos, nuorodos į svetainę ir t.t. Daugiausiai man keblumų keliantis dalykas yra 'kategorija'. Pradedant pildyti duomenų bazę sunku numatyti visas reikalingas kategorijas ir smulkesnį jų skirstymą. Kol tuščia norėtųsi skirstyti labai stambiai: pvz., "Aukštaitija", "žemaitija" ir pan. Bet jau dabar aišku, kad ateity prireiks smulkesnio skirstymo. Taigi mano Kategorijų lentelė (su pvz. CatName, CatDescription) turės kažkaip plėstis. Pavyzdžiui "Aukštaitijos" kategorijai bus priskirta 20 įrašų apie Uteną, 15 apie Zarasus ir po 2-3 įrašus apie įvairias smulkesnes vietoves. Tęsiant Yahoo! analogiją, norėtųsi, kad atsirastų "Utena" ir "Zarasai" kaip "Aukštaitijos" subkategorijos, o smulkmė gultų tiesiai po pagrindine kategorija. Bet kaip suplanuoti lenteles, kad redaktoriams/administratoriams būtų paprasčiau tai padaryti? Dar daugiau - jei duomenis pildys lankytojas, kaip patogiau suplanuoti, kad pasirinkus pagrindinę kategoriją ("Aukštaitija"), tolesnis pasirinkimas atsirastų tik pagal realiai esamas subkategorijas ("Utena", "Zarasai", "bendras sąrašas")?
Dabar dėl pačios temos. Galvodamas apie sprendimą įsivaizdavau tokią kategorijų lentelę:
CatName, CatDescription, CatSubTableName
kur CatSubTableName būtų lentelės kiekvienai iš pagrindinių kategorijų pavadinimas. Tada pasirinkus kategoriją galima būtų per jos vardą surasti subkategorijų lentelę, įlįsti į ją, pažiūrėt ar ten yra skaidymas (default - nėra) ir jei toks yra, visus variantus pateikti pildytojui.
Tikriausiai labai kreivai čia sugalvota. Nes su MySQL dar nedirbau. Tai ir būtų įdomu sužinot, kaip tinkamiau tokiais atvejais planuoti duomenų bazę. Problema dažnam turėtų būti aktuali, nes duomenų kategorizavimas nežinant galutinio kategorijų kiekio ar net struktūros pasitaiko neretai :)