Eksterlanda ŝlosilo malfermas la pordon al tuta mondo de datumoj
La diseñadores de datumbazoj faras ampleksan uzon de ŝlosiloj kiam ili disvolvas datumbazojn relacionales. Inter la plej oftaj ŝlosiloj estas primaraj ŝlosiloj kaj eksterlandaj ŝlosiloj. Datumara eksterlanda ŝlosilo estas kampo en rilata tablo, kiu kongruas kun la ĉefa ŝlosila kolumno de alia tablo. Por kompreni kiel fremda ŝlosilo funkcias, ni rigardu pli proksime al la ideo de rilata datumbazo.
Kelkaj bazajxoj de Relaciaj Datumbazoj
En rilata datumbazo, datumoj estas stokitaj en tabuloj enhavantaj vicojn kaj kolumnojn, faciligante ĝin kaj manipuli ĝin. Estas iu serioza matematiko malantaŭ la koncepto de rilata datumbazo (rilata algebro, proponita de EF
Codd ĉe IBM en 1970), sed tio ne estas la temo de ĉi tiu artikolo.
Por praktikaj celoj (kaj ne-matematikistoj), rilata datumbazo tendencas "rilatajn" datumojn en vicoj kaj kolumnoj. Plue-kaj jen estas kie ĝi akiras interesa-plej datumbazoj estas desegnitaj tiel ke la datumoj en unu tablo povas aliri la datumojn en alia tablo. Ĉi tiu kapablo krei interrilatojn inter tabloj estas la vera potenco de rilata datumbazo.
Uzanta Eksterlandajn Ŝlosilojn
Plej multaj tabloj, precipe tiuj en grandaj, kompleksaj datumbazoj, havas primajn klavojn. Tabuloj, kiuj estas desegnitaj por aliri al aliaj tabloj, devas ankaŭ havi eksterlandan ŝlosilon.
Por uzi la komune nomitan Nordokcidentan datumbazon, jen ekstrakto de Produkta tablo:
ProductID | ProduktoName | KategorioID | KvantoPeru | Prezo unuopa |
---|---|---|---|---|
1 | Chai | 1 | 10 skatoloj x 20 sakoj | 18.00 |
2 | Chang | 1 | 24 - 12 oz boteloj | 19.00 |
3 | Anizita Syrup | 2 | 12 - 550 ml boteloj | 10.00 |
4 | Chef Anton's Cajun Sezonado | 2 | 48 - 6 oz-kruĉoj | 22.00 |
5 | Chef Anton's Gumbo-Miksaĵo | 2 | 36 skatoloj | 21.35 |
6 | Abomenindaj infanoj de Grandma | 2 | 12 - 8 oz-kruĉoj | 25.00 |
7 | Onklo Bob's Organic Dry Pears | 7 | 12 - 1 lb pkgs. | 30.00 |
La kolumno ProductID estas la ĉefa ŝlosilo de ĉi tiu tablo. Ĝi atribuas solan ID al ĉiu produkto.
Ĉi tiu tablo ankaŭ enhavas fremdan ŝlosilon, CategoryID . Ĉiu produkto en la Produkta tablo ligas al eniro en la Kategorioj-tablo, kiu difinas la kategorion de tiu produkto.
Notu ĉi tiun ekstrakton el la Kategorioj-tablo de la datumbazo:
KategorioID | KategorioName | Priskribo |
---|---|---|
1 | Trinkaĵoj | Molaj trinkaĵoj, kafoj, teoj, bieroj, kaj ales |
2 | Kondimentoj | Dolĉaj kaj sovaĝaj saŭcoj, kovras, disvastiĝos kaj aĉaĵoj |
3 | Konfekcioj | Desertoj, frandaĵoj kaj dolĉaj bukedoj |
5 | Laktaĵoj | Fromaĝoj |
La kolumno CategoryID estas la ĉefa ŝlosilo de ĉi tiu kolumno. (Ĝi ne havas eksterlandan ŝlosilon ĉar ĝi ne bezonas aliri alian tablon.) Ĉiu fremda ŝlosilo en la Produkta tablo ligas al primara ŝlosilo en la Kategorioj-tablo. Ekzemple, la produkto Chai estas atribuita kategorio "Trinkaĵoj", dum Aniseed Syrup estas en la kategorio Kondimentoj.
Ĉi tiu ligo kreas multajn manierojn uzi kaj reutiligi datumojn en rilata datumbazo.