Jump to content
php.lv forumi

Vai lietot FK jau datubāzē?


mandarīnpīle

Recommended Posts

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.

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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 :)

Link to comment
Share on other sites

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. 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...