Mysql chei străine și setările lor în phpMyAdmin

De ce avem nevoie de chei străine în tabel

chei externe reglementează relațiile dintre tabele. Datorită lor, un control foarte mult simplificat al structurii de bază, reduce și simplifică codul de aplicație, deoarece o mare parte din responsabilitate pentru aceasta trece de la umeri la baza de date în sine. Configurat corespunzător chei străine - este o garanție că va crește integritatea datelor prin reducerea redundanței.

Într-un cuvânt - în cheile străine o mulțime de avantaje, de aceea este util să se știe cum funcționează.

Configurarea chei externe

Voi demonstra în configurația ADMIN PHP favorit, deoarece este foarte convenabil, în plus, administratorul nu ascunde codul generat de interogare și puteți vedea întotdeauna (amintiți-vă, copia, tăiate în sus).

EXEMPLUL ManyToOne și OneToMany

Două tabele: mărfuri (id, nume, catalog_id) și cataloage (id, nume). Intr-un set de articole catalog (OneToMany), precum și orice număr de produse pot fi în același director (ManyToOne). cheie externă în acest exemplu este în câmpul catalog_id tabel mărfuri.

Crearea tabelelor în phpMyAdmin

Mysql chei străine și setările lor în phpMyAdmin

Mysql chei străine și setările lor în phpMyAdmin

interogările generate

Setarea catalog_id cheie externă

Este timpul pentru a crea o legătură între produsele și cataloagele. Deschideți mărfuri de masă. du-te la tab-ul butonul „Structură“ și să căutați „conexiuni“.

În „constrângerile străine cheie“ umple-line și selectați acțiunea «ON DELETE» și «ON UPDATE».

Cererea generată

Valorile de pe UPDATE și DELETE ON

CASCADE - Cascade ștergerea sau editarea. Această setare înseamnă că, atunci când ștergeți un director, toate produsele din aceasta, de asemenea, șterse. Când editați, dacă vom schimba directorul ID-ul de mărfuri schimbă automat în domeniul «catalog_id».

RESTRICT - În această setare, dacă încercăm să ștergeți un director care are bunurile, sau pentru a schimba ID-ul său, baza de date ne va da o eroare și de eliminare nu are loc.

SET NULL - Din numele este clar că, dacă dispar (șterge sau modifica), directorul cu id-ul, apoi la mărfurile în domeniul «catalog_id» Setați valoarea NULL. Cu această setare, trebuie să fie atent, deoarece indicii implicit «NOT NULL».

Nici o acțiune - Ignoră și șterge editarea director, și să «catalog_id» câmp va fi identitate inexistentă, pur și simplu ignora-l.

exemplu ManyToMany

Crearea de relații de masă

În phpMyAdmin

Mysql chei străine și setările lor în phpMyAdmin

Mysql chei străine și setările lor în phpMyAdmin

Cererea generată

author_id book_id și sunt împreună un indice compozit, rămâne doar să adăugați restricții pe fiecare dintre ele în tab-ul „conexiuni“ și ați terminat!

concluzie

Nu pierdeți ocazia de a stabili mai multe taxe pe baza de date, pentru a facilita munca sa cu privire la aplicarea, și să se gândească la structura sa și nu pe relațiile de masă de control. Mult noroc cu design-ul de baze de date, vă mulțumesc pentru atenție!