mandarīnpīle Posted January 18, 2014 Report Share Posted January 18, 2014 Kādi ir plusi un mīnusi foreign key norādīšanai jau datubāzes schemā, kādos gadījumos to darīt un kādos ne? Vai tas ir nepieciešams, ja visas šīs saistības ir norādītas jau php pusē Modeļos? Cik pats saprotu: Plusi: Neļauj insertot, updeitot tādus ID, kas nemaz neeksistē Neļauj izdzēst tādus ierakstus, kas kaut kur ir referencēti Mīnusi: inserti, updeiti ir daudz lēnāki, jo jāpārraksta viss indexs. Piemēram, ja man ir tabula, kurai ir PK un kādi 6-7 FK. Vai SELECT pieprasījumi strādās ātrāk, ja norādīšu, ka tie ir FK? I mean - tik pati labi šīs saistības var uzrakstīt tikai php pusē Modeļos. Quote Link to comment Share on other sites More sharing options...
briedis Posted January 18, 2014 Report Share Posted January 18, 2014 Mīnusi: * Var kko pa daudz nodzēst, ja ir cascade delete (tas gan arī tā kā pluss) * Mūždien kaut kāds čakars ar datu eksportiem/importiem, kad nevar kaut ko izdarīt kaut kādu key'u dēļ. Vienīgie plusi, ko redzu: * Datu integritāte (kā jau pats uzskaitīji) * Kaut kādos rīkos sql pārlūkošanas rīkos var ļoti ērti aizlekt uz attiecīgo ierakstu (softs pats saprot, uz ko referencējas konkrētais id), bet nu ši tāds mazums Quote Link to comment Share on other sites More sharing options...
spameris Posted January 18, 2014 Report Share Posted January 18, 2014 Manuprāt svarīgākais iemesls foreign key lietošanai is datu integritāte, kas kautkur ir mazāk svarīga, un kautkur ir kritiski svarīga. PIemēram kautkādā grāmatvedības uzskaites sistēmā ja rādītu pavadzīmi ar precēm, bet bez firmas, nebūtu labi :) . Datubāzes foreign key ir uzticamāks kā datubāzes klients, vienalga kas tas ir php, vai kas cits. Ja ir ļoti daudz tabulu, daudz transakciju tad agrāk vai vēlāk tā datu integritāte kaut nedaudz bet sašķobīsies, iemesli var būt daudz un dažādi. Bet nu runājot par php un web esmu vairāk entuziasts :) Quote Link to comment Share on other sites More sharing options...
F3llony Posted January 18, 2014 Report Share Posted January 18, 2014 Mīnusi: * Mūždien kaut kāds čakars ar datu eksportiem/importiem, kad nevar kaut ko izdarīt kaut kādu key'u dēļ. MySQL ļauj atslēgt FK uz laiku, līdz ar to čakars atkrīt. FK galvenais mīnuss ir impact uz veiktspēju, galvenais pluss ir datu konsistence - nepaliek "artefakti" no izdzēstiem ierakstiem, neļauj pievienot acīmredzami kļūdainus ierakstus utt utjp. Tas arī pamatā viss, kas jāzina, lai varētu izdarīt izvēli. Quote Link to comment Share on other sites More sharing options...
marrtins Posted January 18, 2014 Report Share Posted January 18, 2014 Man šķiet, ka optimizatoram arī dikti patka FK. Tas palīdz izvēlēties labākus kverija izpildes ceļus. 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.