shurix Posted September 22, 2009 Report Share Posted September 22, 2009 Vajadzīgs izveidot atslēgvārdu mākoni. Viss būtu labi tikai nezinu pareizāko veidu kā skaitīt visus tagus. Ja pie katra ieraksta ir kādi 5 tagi un ieraksti ir daudz tad katru reizi pie lapas ielādes skaitīt viņus pa jaunu laikam nebūtu gudri? Izdomāju variantu kaut kā ar cron ik pa stundai. Vai arī pēc katra pievienotā ieraksta pārbaudīt vai tādi tagi jau ir un veikt pieskaitīšanas darbību. Bet arī ja viņu ir baigi daudz tas arī būs lēnu? Quote Link to comment Share on other sites More sharing options...
bubu Posted September 22, 2009 Report Share Posted September 22, 2009 Dari to tikai pie taga pievienošanas/izmešanas, nevis cron'ā. Quote Link to comment Share on other sites More sharing options...
shurix Posted September 23, 2009 Author Report Share Posted September 23, 2009 (edited) Izveidot tabulu tagi un likt tur iekšā pilnīgi visus jaunos tagus arī ja tie jau atkārtojas vai katram tagam pievienot arī reižu skaitu un pievienošanas brīdī baudīt vai tāds jau nav? Edited September 23, 2009 by shurix Quote Link to comment Share on other sites More sharing options...
Web Developer Posted September 23, 2009 Report Share Posted September 23, 2009 Nē. Izveidot tabulu "atlēgvārdi", kur glabāt atslēgvārdu, tā id un valodu - tas būs kombinētais ID, kā arī protams pašu atslēgvārdu (vārdus), izveidot arī kolonu "count", kur glabās reižu skaitu, cik reizes atslēgvārds parādās. Tad pieņemsim, ka tev ir galvenā ierakstu tabula (kā tam vajadzētu būt), kur katram ierakstam var pievienot atslēgvārdus. Vajag šo ierakstu tabulu ar starptabulu sasaistīt ar attiecīgajiem atslēgvārdiem no atslēgvārdu tabulas. Starptabulai var būt divas kolonas - ieraksta ID, atslēgvārda ID, viss. Tikai vēlami FK (Foreign Key) abiem ID ar CASCADE variantu, lai dzēšot ierakstu, automātiski izdzēšas ar šo ierakstu saistītie starptabulas ieraksti un tas pats arī ar tagiem - dzēšot tagus. Tagad pie katra ieraksta izveides/dzēšanas/rediģēšanas tiek izpildīts "triggeris", kurš dzēš vai pievieno vai arī atstāj kā ir - ierakstus no ierakstu un atslēgvārdu starptabulas, kā arī "updeito" count vērtību atslēgvārdu tabulā. Vēl var protams, darīt tā, ka to "count" kolonu neveidot, bet skaitīt pie katra pieprasījuma no starptabulas - nezinu, kas būtu labāk no veiktspējas viedokļa. Var arī nepildīt trigeri, bet piekodēt klāt ieraksta modelim klāt vienkārši attiecīgās darbības - SQL pieprasījumus. Ieguvumi: 1. Visi atslēgvārdi glabājas vienā tabulā, kur tie ir pieejami no jebkuras vietas aplikācijā. 2. Lielākā noslodze parādās tikai pie ierakstu rediģēšanas, kas visticamāk būs krietni retāk izsaukts process, nekā parastie apskates pieprasījumi. Pie tam - arī šeit nekāda dižā noslodze nebūs, ja viss būs pareizi uztaisīts. 3. Iespēja darīt datubāzei to, kas ir domāts datubāzei, bet aplikācijai darīt to, kas ir domāts tai. Quote Link to comment Share on other sites More sharing options...
shurix Posted September 23, 2009 Author Report Share Posted September 23, 2009 Web Developer paldies ka izskaidroji, bet nevari izveidot un uztaisīt sql dumpu. Īsti neizportu un tos foreign key ari nekad neesmu lietojis. Quote Link to comment Share on other sites More sharing options...
shurix Posted September 24, 2009 Author Report Share Posted September 24, 2009 Izdomāju kaut kādu savu variantu ar 2 tabulām. Viena jaunumiem otra tagiem. Jaunumu tabulā glabā katra taga id atdalot tos ar komatu (1,2,3,5,7,8). Tagu tabulā glabā taga id, nosaukumu un reizes. Kad vajg parādīt tagus konkrētajam jaunumam explodē (1,2,3,5,7,8) un izvada attiecīgos. Pie pievienošanas un dzēšanas mazliet piņķerīgāk. Quote Link to comment Share on other sites More sharing options...
bubu Posted September 24, 2009 Report Share Posted September 24, 2009 Tieši tāpēc nevajag neko ar komatiem atdalīt - jo piņķerīgāk. Vajag starptabulu taisīt - tipiskis N:N relācijas risinājums: jaunumi (id, nosaukums, apraksts, ...) tagi (id, nosaukums, skaits) jaunumu_tagi (taga_id, jaunuma_id) Un šādi, piemēram, dabū visus tagus konkrētajam jaunumam: SELECT tagi.nosaukums FROM tagi JOIN jaunumu_tagi ON tagi.id = jaunumu_tagi.taga_id WHERE jaunumu_tagi = $jaunuma_id Ja vajag pievienot/izdzēst jaunu/vecu tagu - ieliek/izdzēš ierakstu no tagi tabulas. Vajag pievienot jaunumam kādu tagu - pievienot ierakstu jaunumu_tagi tabulai. Utt.. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.