Duomenų bazės kūrimo pagrindai

Duomenų bazės kūrimo pagrindai

Tinkamai sukurta duomenų bazė suteikia prieigą prie atnaujintos ir tikslios informacijos. Kadangi siekiant numatytų tikslų vienas iš esminių veiksnių yra tinkama duomenų bazės struktūra, verta skirti laiko ir susipažinti su svarbiausiais duomenų bazių kūrimo principais. Jie padės sukurti duomenų bazę, kuri atitinka jūsų poreikius ir kurią galima lengvai keisti.

Šiame straipsnyje pateikiamos rekomendacijos, kaip suplanuoti duomenų bazės kompiuteriui kūrimą. Sužinosite, kaip nuspręsti, kokios informacijos jums reikia, kaip padalyti informaciją į atitinkamas lenteles ir stulpelius ir kaip lentelės yra susijusios vien su kita. Prieš kurdami pirmąją savo kompiuterio duomenų bazę turėtumėte perskaityti šį straipsnį.

Svarbu : „Access“ suteikia galimybes kurti internetines duomenų bazių programas. Kuriant internetines programas skiriasi daug dalykų, todėl šiame straipsnyje neaptariamas internetinių duomenų bazių kūrimas. Daugiau informacijos žr. straipsnyje Duomenų bazės, bendrinamos internete, kūrimas.

Šiame straipsnyje

Keletas duomenų bazių terminų

Kaip reikia tinkamai kurti duomenų bazę

Kūrimo procesas

Duomenų bazės tikslo nustatymas

Reikiamos informacijos paieška ir tvarkymas

Informacijos skirstymas į lenteles

Informacijos elementų vertimas stulpeliais

Pirminių raktų nurodymas

Lentelių ryšių kūrimas

Struktūros tikslinimas

Normalizavimo taisyklių taikymas


Keletas duomenų bazių terminų

„Access“ suskirsto informaciją į lenteles: eilučių ir stulpelių sąrašus, primenančius buhalterio bloknotą ar skaičiuoklę. Paprastoje duomenų bazėje gali būti tik viena lentelė. Tačiau daugumoje duomenų bazių jų yra daugiau nei viena. Pavyzdžiui, galite turėti lentelę, kurioje saugoma informacija apie produktus, kitoje lentelėje bus informacija apie užsakymus, o dar viena – su informacija apie klientus.

Paveikslėlis, vaizduojantis tris lenteles duomenų lapuose

Kiekvieną eilutę tiksliau būtų vadinti įrašu, o stulpelį – lauku. Įrašas yra prasmingas ir nuoseklus būdas sujungti informaciją apie kokį nors dalyką. Laukas yra atskiras informacijos elementas (tokio tipo elementai yra kiekviename įraše). Pavyzdžiui, kiekvienoje lentelės Produktai eilutėje arba įraše bus saugoma informacija apie vieną produktą. Kiekviename stulpelyje arba lauke yra tam tikro tipo informacijos apie tą produktą, pavyzdžiui, jo pavadinimas arba kaina.

Puslapio viršus

Kaip tinkamai kurti duomenų bazę?

Duomenų bazės kūrimas paremtas tam tikrais principais. Pirmasis principas – pasikartojanti informacija (dar vadinama pertekliniais duomenimis) yra nereikalinga, nes užima vietą ir padidina klaidų ir neatitikimų tikimybę. Antras principas pabrėžia informacijos tikslumo ir išsamumo svarbą. Jei jūsų duomenų bazėje laikoma neteisinga informacija, tai visos ataskaitos, kurios grindžiamos iš duomenų bazės gauta informacija, taip pat bus neteisingos. Todėl visi sprendimai, kuriuos priimsite remdamiesi šiomis ataskaitomis, bus klaidingi.

Duomenų bazė sukurta tinkamai, kai:

  • Jūsų informacija suskirstoma į temines lenteles, kad sumažėtų perteklinių duomenų kiekis.

  • Suteikia „Access“ informaciją, reikalingą norint sujungti informaciją į lenteles.

  • Padeda palaikyti ir užtikrinti informacijos tikslumą ir vientisumą.

  • Atitinka jūsų duomenų apdorojimo ir ataskaitų rengimo poreikius.

Puslapio viršus

Kūrimo procesas

Kūrimo procesas apima šiuos veiksmus:

  • Duomenų bazės tikslo nustatymas    

    Padeda pasirengti kitiems veiksmams.

  • Reikiamos informacijos radimas ir tvarkymas    

    Surinkite visų tipų informaciją, kuri norėtumėte įrašyti į duomenų bazę, pavyzdžiui, produkto pavadinimą ir užsakymo informaciją.

  • Informacijos skirstymas į lenteles    

    Suskirstykite savo informaciją į pagrindines kategorijas ar temas, pavyzdžiui, produktai arba užsakymai. Kiekviena tema taps lentele.

  • Informacijos elementų vertimas stulpeliais    

    Nuspręskite, kokia informacija turi būti saugoma kiekvienoje lentelėje. Kiekvienas elementas tampa lauku ir rodomas kaip lentelės stulpelis. Pavyzdžiui, lentelėje Darbuotojai gali būti tokie laukai kaip Pavardė ir Priėmimo į darbą data.

  • Pirminių raktų nurodymas    

    Pasirinkite kiekvienos lentelės pirminį raktą. Pirminis raktas yra stulpelis, kuris unikaliai identifikuoja kiekvieną eilutę. Pavyzdžiui, produkto ID arba užsakymo ID.

  • Lentelių ryšių kūrimas    

    Išanalizuokite kiekvieną lentelę ir nuspręskite, kaip vienos lentelės duomenys susiję su duomenimis kitose lentelėse. Įtraukite į lenteles laukų arba prireikus formuoti ryšius sukurkite naujų lentelių.

  • Struktūros tikslinimas    

    Patikrinkite, ar struktūroje nėra klaidų. Sukurkite lenteles ir pridėkite kelis įrašus su duomenų pavyzdžiais. Pažiūrėkite, ar iš lentelių pavyksta gauti norimus rezultatus. Jei reikia, pakoreguokite struktūrą.

  • Normalizavimo taisyklių taikymas    

    Pritaikykite duomenų normalizavimas taisykles, kad pamatytumėte, ar jūsų lentelių struktūra tinkama. Jei reikia, pakoreguokite lenteles.

Puslapio viršus

Duomenų bazės tikslo nustatymas

Rekomenduojama užsirašyti duomenų bazės tikslą ant popieriaus – jos paskirtį, kaip ir kas ją turėtų naudoti. Jei namuose įkurtam verslui reikalinga maža duomenų bazė, pavyzdžiui, galite užsirašyti ką nors paprasto, tarkime, „klientų duomenų bazėje saugoma klientų informacija, kuri bus naudojama siunčiant el. laiškus ir kuriant ataskaitas.“ Jei duomenų bazė yra sudėtingesnė arba ją naudoja daug žmonių, kaip dažnai pasitaiko įmonėse, paskirties aprašymas gali būti viena ar kelios pastraipos, kuriose nurodyta, kada ir kokiu būdu kiekvienas vartotojas ketina ją naudoti. Šio aprašymo tikslas – tinkamai suformuluoti misiją, kuria būtų galima remtis kūrimo proceso metu. Toks aprašymas priimant sprendimus padės susitelkti į suformuluotus tikslus.

Puslapio viršus

Reikiamos informacijos paieška ir tvarkymas

Pradėkite nuo turimos informacijos, pavyzdžiui, nuo apskaitos knygoje registruojamų pirkimo užsakymų arba duomenų apie klientus, saugomų popierinėse bylose. Surinkite šiuos dokumentus ir sudarykite visų naudojamų informacijos tipų sąrašą (pavyzdžiui, visų formos laukų). Jei formų nenaudojate, įsivaizduokite, kad jums reikia sukurti formą, kurioje būtų surašyti duomenys apie klientus. Kokią informaciją norėtumėte įtraukti į ją? Kokius užpildomus langelius reikėtų sukurti? Išsiaiškinkite visus šiuos elementus ir sudarykite jų sąrašą. Tarkime, šiuo metu jūsų klientų sąrašas saugomas katalogo kortelėse. Išanalizavus šias korteles gali paaiškėti, kad kiekvienoje kortelėje nurodytas kliento pavadinimas, adresą, miestas, regionas, pašto kodas ir telefono numeris. Kiekvienas iš šių elementų gali būti lentelės stulpelis.

Rengdami šį sąrašą, nesistenkite, kad jau nuo pat pradžių jis būtų išbaigtas. Užsirašykite kiekvieną elementą, kuris ateina į galvą. Jei duomenų bazę naudos ir kiti asmenys, paprašykite taip pat pateikti savo idėjas. Sąrašą galėsite patobulinti vėliau.

Tada pagalvokite, kokių tipų ataskaitas arba el laiškus siųsite remdamiesi duomenų bazės informacija. Pavyzdžiui, tai gali būti produkto pardavimo pagal regioną ataskaita arba atsargų suvestinė, kurioje rodomas produktų atsargų lygis. Taip pat galite būti, kad klientams siųsite standartinius laiškus, informuojančius apie tam tikrus įvykius ar specialiuosius pasiūlymus. Apgalvokite ataskaitos struktūrą ir įsivaizduokite, kaip ji atrodys. Kokią informaciją norėtumėte įtraukti į ataskaitą? Sudarykite visų elementų sąrašą. Apgalvokite standartizuotų laiškų ir kitų ataskaitų, kurias norėtumėte kurti, struktūrą.

Asmuo, įsivaizduojantis produktų atsargų ataskaitą

Galvodami apie laiškus ir ataskaitas, kuriuos galbūt norėsite sukurti, galėsite nustatyti elementus, kurie turėtų būti duomenų bazėje. Tarkime, kad klientai suteikiate galimybę el. paštu užsiprenumeruoti periodiškai siunčiamą naujienlaiškį, o jūs norite išspausdinti prenumeratorių sąrašą. Norėdami įrašyti šią informaciją, į klientų lentelę įtraukite stulpelį Siųsti el. paštą. Šiame lauke kiekvienam klientui galima pasirinkti Taip ar Ne.

Norint siųsti el. laiškus klientams reikia įrašyti dar vieną elementą. Kai jau žinote, kad klientas nori gauti el. laiškus, reikės ir el. pašto adresų, kuriais siųsti tuos laiškus. Todėl reikia įrašyti kiekvieno kliento el. pašto adresą.

Būtų naudinga sudaryti kiekvienos ataskaitos prototipą arba gavėjų sąrašą ir nuspręsti, kokių elementų reikės norint sukurti ataskaitą. Pavyzdžiui, planuodami standartizuotus el. laiškus, galite apibrėžti keletą dalykų. Jei norite įtraukti pasveikinimą, kuris būtų atitinkamo tipo, pavyzdžiui, eilutę ponas, ponia arba panele, kuriais pradedamas sveikinimas, turėsite sukurti pasveikinimo elementą. Gali būti, kad laiškus paprastai pradedate kreipiniu „Gerb. pone Norkau“, o ne „Gerb. pone Ažuolai Norkau“. Todėl greičiausiai vardą norėsite saugoti atskirai nuo pavardės.

Svarbiausia prisiminti, kad bet kokia informacija turi būti suskaidyta į mažiausias įmanomas naudingas dalis. Šiuo atveju, kad būtų patogiau naudoti, vardą ir pavardę reikėtų atskirti. Pavyzdžiui, norint surikiuoti ataskaitą pagal pavardes, klientų pavardės turi būti saugomos atskirai. Dažniausiai, jei norite rikiuoti, ieškoti, suskaičiuoti ar sukurti ataskaitą pagal konkrečią informaciją, tas informacijos elementas turi būti atskirame lauke.

Pagalvokite apie klausimus, į kuriuos turi atsakyti duomenų bazė. Pavyzdžiui, kiek praėjusį mėnesį parduota tam tikro produkto? Kur gyvena geriausi jūsų klientai? Kas yra geriausiai parduodamų produktų tiekėjas? Numačius šiuos klausimus, bus paprasčiau nustatyti, kokius papildomus elementus įrašyti.

Surinkę šią informaciją esate pasiruošę kitam veiksmui.

Puslapio viršus

Informacijos skirstymas į lenteles

Norėdami suskirstyti informaciją į lenteles, pasirinkite pagrindines kategorijas, arba temas. Pavyzdžiui, suradus ir sutvarkius produktų pardavimo duomenų bazės informaciją, pirminis sąrašas gali atrodyti maždaug taip:

Ranka užrašyti informacijos elementai, sugrupuoti pagal temas

Pagrindinės temos yra produktai, tiekėjai, klientai ir užsakymai. Todėl būtų prasminga naudoti keturias lenteles: vieną informacijai apie produktus, kitą – apie tiekėjus ir po vieną informacijai apie klientus ir užsakymus. Tai nėra baigtinis sąrašas, tačiau nebloga pradžia. Galite toliau tikslinti šį sąraše tol, kol sukursite efektyvią struktūrą.

Pirmą kartą peržiūrint pradinį elementų sąrašą, gali kilti idėja perkelti juos visus į vieną lentelę, vietoj keturių, rodomų ankstesniame paveikslėlyje. Dabar suprasite, kodėl tai nėra gera idėja. Pažvelkite į čia rodomą lentelę:

Paveikslėlis, kuriame rodoma lentelė, kurioje yra ir produktai, ir tiekėjai

Šiuo atveju kiekvienoje eilutėje yra informacijos apie produktą ir jo tiekėją. Kadangi galite turite daug produktų iš to paties tiekėjo, tiekėjo pavadinimo ir adreso informacija bus kartojama daug kartų. Taip eikvojama disko vieta. Žymiai geriau įrašyti tiekėjo informaciją vieną kartą į atskirą lentelę Tiekėjai ir susieti tą lentelę su lentele Produktai.

Antroji tokios struktūros problema paaiškėja, kai reikia modifikuoti informaciją apie tiekėją. Tarkime, turite pakeisti tiekėjo adresą. Kadangi jis rodomas daugelyje vietų, galite pakeisti adresą vienoje, bet pamiršti jį pakeisti kitur. Šią problemą galima išspręsti įrašius tiekėjo adresas įrašomas tik vienoje vietoje.

Kai kuriate duomenų bazę, visada stenkitės įrašyti visus faktus tik vieną kartą. Jei pastebėsite, kad kartojate tą pačią informaciją, pavyzdžiui, konkretaus tiekėjo adresą, daugiau nei vienoje vietoje, perkelkite šią informaciją į atskirą lentelę.

Galiausiai, įsivaizduokime, kad „Coho Winery“ tiekia jums tik vieną produktą. Jūs norite tą produktą panaikinti, bet išsaugoti tiekėjo pavadinimą ir adresą. Kaip panaikinti produkto įrašą neprarandant tiekėjo informacijos? Neįmanoma. Kadangi kiekviename įraše yra informacijos ir apie produktą, ir apie tiekėją, negalite panaikinti vieno nepanaikindami kito. Jei norite, kad ši informacija būtų saugoma atskirai, reikia išskaidyti vieną lentelę į dvi: produkto informacija bus vienoje lentelėje, o kitoje lentelėje – tiekėjo informacija. Panaikinus produkto įrašą, turėtų būti panaikinta tik informacija apie produktą, o ne apie tiekėją.

Kai pasirinksite lentelės temą, tos lentelės stulpeliuose turi būti tik informacija apie tą temą. Pavyzdžiui, produktų lentelėje turi būti tik informacija apie produktus. Kadangi tiekėjo adresas yra informacija apie tiekėją, o ne apie produktą, todėl jis turi būti tiekėjų lentelėje.

Puslapio viršus

Informacijos elementų vertimas stulpeliais

Norėdami nustatyti lentelės stulpelius, turite nuspręsti, kokia su lentelės tema susijusi informacija jums reikalinga. Pavyzdžiui, į lentelę Klientai naudinga įtraukti tokius stulpelius kaip Pavadinimas, Adresas, Miestas, valstybė, pašto kodas, Siųsti el. paštą, Pasveikinimas ir El. pašto adresas. Visiems lentelės įrašams bus priskirtas toks pat stulpelių rinkinys, todėl stulpelių Pavadinimas, Adresas, Miestas, valstybė, pašto kodas, Siųsti el. paštą, Pasveikinimas ir El. pašto adresas informaciją galite saugoti kiekvienam įrašui. Pavyzdžiui, adreso stulpelyje yra klientų adresai. Kiekviename įraše yra vieno kliento duomenys, o adreso lauke yra to kliento adresas.

Nustatę pradinį kiekvienos lentelės stulpelių rinkinį, galite dar patikslinti stulpelius. Pavyzdžiui, gali būti naudinga saugoti kliento vardą dviejuose atskiruose stulpeliuose: vardas ir pavardė, kad galėtumėte rikiuoti, ieškoti ir indeksuoti tik tuos stulpelius. Be to, adresą iš tikrųjų sudaro keletas atskirų komponentų: adresas, miestas, pašto kodas ir šalis / regionas, todėl geriau ir juos saugoti atskiruose stulpeliuose. Jei norite atlikti jei norite ieškoti, filtruoti arba rikiuoti pagal, pavyzdžiui, miestą, informacija apie miestą turi būti saugoma atskirame stulpelyje.

Taip pat reikėtų atsižvelgti į tai, kokio tipo informacija bus saugoma duomenų bazėje – vietinė ar tarptautinė. Pavyzdžiui, jei ketinate saugoti tarptautinius adresus, geriau turėti stulpelį Regionas vietoje stulpelio, tarkime, Apskritis, nes tokiame stulpelyje būtų galima saugoti tiek informaciją apie apskritis, tiek apie kitų šalių / regionų administracinius vienetus. Taip pat universaliame lauke Pašto kodas galima saugoti tiek pašto kodų, tiek indeksų informaciją.

Toliau pateikiame kelis patarimus, kaip nustatyti stulpelius.

  • Neįtraukite apskaičiuojamųjų duomenų    

    Lentelėse nereikėtų saugoti skaičiavimų rezultatų. Geriau tegul prireikus duomenų „Access“ kaskart atlieka skaičiavimus. Tarkime, turite užsakytų produktų ataskaitą, kurioje rodomos atskirų kategorijų užsakytų produktų tarpinės sumos. Tačiau nė vienoje lentelėje nėra stulpelio su vienetų užsakyme tarpinėmis sumomis. Vietoje to lentelėje Produktai yra stulpelis Vienetai užsakyme, kuriame nurodyta, kiek kiekvieno produkto vienetų yra užsakyta. Naudodama tuos duomenis, „Access“ apskaičiuoja tarpines sumas kiekvieną kartą, kai spausdinate ataskaitą. Pačių tarpinių sumų nereikėtų laikyti lentelėje.

  • Saugokite informaciją suskaidę į mažiausias logines dalis    

    Jums gali pasirodyti, kad geriau turėti vieną lauką vardams ir pavardėms arba produktų pavadinimams kartu su aprašymais. Jei lauke sujungsite daugiau nei vieno tipo informaciją, vėliau bus sunku gauti atskirus faktus. Pabandykite suskaidyti informaciją į logines dalis, pavyzdžiui, kurti atskirus laukus vardui ir pavardei arba produkto pavadinimui, kategorijai ir aprašui.

Paveikslėlis, kuriame rodomi informacijos elementai kūrimo metu

Kai patikslinsite kiekviename lentelės stulpelyje esančią informaciją, būsite pasirengę pasirinkti kiekvienos lentelės pirminį raktą.

Puslapio viršus

Pirminių raktų nurodymas

Kiekvienoje lentelėje turėtų būti stulpelis arba stulpelių rinkinys, kuris unikaliai identifikuoja kiekvieną eilutę, saugomą lentelėje. Tam dažnai naudojamas unikalus identifikacinis numeris, pavyzdžiui, darbuotojo ID numeris arba serijos numeris. Duomenų bazių terminais ši informacija vadinama lentelės pirminiu raktu. „Access“ naudoja pirminių raktų laukus, kad greitai susietų duomenis iš kelių lentelių ir pateiktų jums.

Jei jau turite unikalų lentelės identifikatorių,pavyzdžiui, produkto numerį, kuris unikaliai identifikuoja kiekvieną kataloge esantį produktą, galite naudoti tą identifikatorių kaip lentelės pirminį raktą, bet tik tuo atveju, jei kiekvienam įrašui skirtos šio stulpelio reikšmės visada bus skirtingos. Pirminiame rakte negali būti reikšmių dublikatų. Pavyzdžiui, kaip pirminių raktų nenaudokite žmonių vardų, nes jie nėra unikalūs. Labai tikėtina, kad toje pačioje lentelėje gali būti du žmonės, turintys tokį patį vardą.

Pirminis raktas visuomet turi būti reikšmė. Jei kokiu nors metu stulpelio reikšmė gali tapti nepriskirta arba nežinoma (reikšmės nėra), jos negalima naudoti kaip pirminės reikšmės komponento.

Visada reikia rinktis tokį pirminį raktą, kurio reikšmė nepasikeis. Duomenų bazėje, kurioje naudojama daugiau nei viena lentelė, lentelės pirminis raktas gali būti naudojamas kaip nuoroda į kitas lenteles. Pakeitus pirminį raktą keitimas taip pat turi būti pritaikytas visur, kur naudojama nuorodą į šį raktą. Naudojant nekeičiamą pirminį raktą, sumažėja tikimybė, kad bus sutrikdyta sinchronizacija su kitomis lentelėmis, kuriose jis nurodomas kaip pirminis raktas.

Dažnai kaip pirminis raktas naudojama pasirenkama unikali reikšmė. Pavyzdžiui, kiekvienam užsakymui galite priskirti unikalų eilės numerį. Vienintelė užsakymo numerio paskirties yra identifikuoti užsakymą. Kartą priskirtas, jis niekada nesikeičia.

Jei nežinote, koks stulpelis arba stulpelių rinkinys būtų geras pirminis raktas, naudokite stulpelį, kuriame yra duomenų tipas „AutoNumber“. Kai naudojamas duomenų tipas „AutoNumber“, „Access“ automatiškai priskiria reikšmę už jus. Tokiame identifikatoriuje nėra jokių faktinių duomenų apie įrašą, kurį jis nurodo, todėl tokie duomenų identifikatoriai yra itin tinkami naudoti kaip pirminis raktas, nes nesikeičia. Pirminis raktas, kuriame yra faktinės informacijos apie eilutę – telefono numeris arba kliento pavadinimas ar vardas – tikėtina, kad gali pasikeisti.

Paveikslėlis, kuriame rodoma lentelė Produktai su pirminio rakto lauku.

1. Stulpelis, kurio duomenų tipas yra „AutoNumber“ dažnai yra geras pirminis raktas. Produktų ID niekuomet nesutampa.

Kai kuriais atvejais lentelės pirminį raktą galima sudaryti iš dviejų ar daugiau laukų. Pavyzdžiui, lentelėje Užsakymų išsami informacija, kurioje saugomi užsakymų eilučių elementai, pirminis raktas gali būti sudarytas iš dviejų stulpelių: Užsakymo ID ir produkto ID. Kai pirminis raktas sudaromas iš daugiau nei vieno stulpelio, jis vadinamas sudėtiniu raktu.

Produktų pardavimo duomenų bazėje kiekvienai lentelei galite sukurti stulpelį, kurio duomenų tipas „AutoNumber“, ir naudoti šį stulpelį kaip pirminį raktą: Produkto ID bus skirtas lentelei Produktai, Užsakymo ID – lentelei Užsakymai, o Tiekėjo ID – lentelei Tiekėjai.

Paveikslėlis, kuriame rodomi informacijos elementai kūrimo metu


Puslapio viršus

Lentelių ryšių kūrimas

Dabar, suskirsčius informaciją į lenteles, reikia vėl ją prasmingu būdu sujungti. Pavyzdžiui, žemiau pateiktoje formoje yra informacijos iš kelių lentelių.

Užsakymų forma

1. Šioje formoje pateikta informacija yra iš lentelės Klientai...

2. ...lentelės Darbuotojai...

3. ...lentelės Užsakymai...

4. ...lentelės Produktai...

5. ...ir lentelės Užsakymų išsami informacija.

„Access“ yra sąryšinių duomenų bazių valdymo sistema. Sąryšinėje duomenų bazėje galite suskirstyti informaciją į atskiras temines lenteles. Tuomet, norėdami sujungti informaciją, naudokite lentelių ryšius.

Puslapio viršus

Ryšio „vienas su daugeliu“ kūrimas

Panagrinėkime tokį pavyzdį: duomenų bazėje yra lentelės Tiekėjai ir Produktai. Tiekėjas gali tiekti bet kokį produktų skaičių. Todėl lentelėje Produktai gali būti daug produktų, kuriuos tiekia kuris tiekėjas, įtrauktas į lentelę Tiekėjai. Ryšys tarp lentelės Tiekėjai ir lentelės Produktai vadinamas ryšiu „vienas su daugeliu“.

Koncepcinis Vienas su daugeliu

Norėdami, kad ryšys „vienas su daugeliu“ būtų įtrauktas į duomenų bazės struktūrą, pirminį raktą, esantį ryšio pusėje „vienas“, įtraukite į lentelės ryšio pusę „daugelis“ kaip papildomą stulpelį arba stulpelius. Šiuo atveju lentelės Tiekėjai stulpelį Tiekėjo ID reikia įtraukti į lentelę Užsakymai. Tuomet „Access“, naudodama lentelėje Produktai esantį tiekėjo ID, gali rasti kiekvieno produkto tiekėją.

Lentelėje Produktai esantis stulpelis Tiekėjo ID vadinamas išoriniu raktu. Išorinis raktas yra kitos lentelės pirminis raktas. Lentelėje Produktai esantis stulpelis Tiekėjo ID yra išorinis raktas todėl, kad jis yra ir lentelės Tiekėjai pirminis raktas.

Paveikslėlis, kuriame rodomi informacijos elementai kūrimo metu

Kurdami susijusių lentelių pirminių ir išorinių raktų poras sukuriate pagrindą, kuriuo remiantis galima sujungti lentelių informaciją. Jei nesate tikri, kuriose lentelėse reikia naudoti bendrą stulpelį, nustačius ryšį „vienas su daugeliu“ galima būti tikriems, kad dviem susijusioms lentelėms išties reikės bendro stulpelio.

Puslapio viršus

Ryšio „daugelis su daugeliu“ kūrimas

Panagrinėkime ryšį tarp lentelės Tiekėjai ir lentelės Produktai.

Į vieną užsakymą gali būti įtrauktas daugiau nei vienas produktas. Kita vertus, vienas produktas gali būti nurodytas keliuose užsakymuose. Todėl lentelėje Produktai gali būti po kelis kiekvieną lentelės Užsakymai įrašą atitinkančius įrašus. Taip pat lentelėje Užsakymai gali būti po kelis kiekvieną lentelės Produktai įrašą atitinkančius įrašus. Toks ryšys vadinamas „daugelis su daugeliu“, nes gali būti daug kiekvieno produkto užsakymų, ir atvirkščiai – kiekviename užsakyme gali būti daug produktų. Nepamirškite, kad norint aptikti lentelių ryšį „daugelis su daugeliu“, svarbu atsižvelgti į abi ryšio puses.

Dviejų lentelių temos – užsakymai ir produktai – yra susietos ryšiu „daugelis su daugeliu“. Tai yra problema. Įsivaizduokite, kas nutiktų, jei bandydami sukurti ryšį tarp dviejų lentelių, įtrauktumėte lauką Produkto ID į lentelę Užsakymai. Kad viename užsakyme būtų daugiau nei vienas produktas, lentelėje Užsakymai kiekvienas užsakymas turi turėti daugiau nei vieną įrašą. Tokiu atveju užsakymo informaciją reikės kartoti kiekvienoje užsakymo eilutėje, todėl lentelės struktūra bus neefektyvi ir duomenys gali tapti netikslūs. Su tokia pačia problema susidursite, jei lentelėje Produktai įtrauksite lauką Užsakymo ID – tokiu atveju lentelėje Produktai kiekvienam produktui bus skirta daugiau nei vienas įrašas. Kaip išspręsti šią problemą?

Reikia sukurti trečią lentelę, dažnai vadinamą jungiamąja lentele, kuri ryšį „daugelis su daugeliu“ suskaido į du ryšius „vienas su daugeliu“. Abiejų lentelių pirminius raktus įterpsite į trečią lentelę. Todėl trečioje lentelę bus įrašyti visi ryšio atvejai ir egzemplioriai.

Ryšys Daugelis su daugeliu

Kiekvienas įrašas lentelėje Užsakymų išsami informacija atitinka vieną užsakymo eilutės elementą. Lentelės Užsakymų išsami informacija pirminis raktas sudarytas iš dviejų laukų – lentelių Užsakymai ir Produktai išorinių raktų. Kaip pirminį šios lentelės raktą naudoti tik lauką Užsakymo ID negalima, nes viename užsakyme gali būti daug eilutės elementų. Užsakymo ID kartojamas kiekvienam užsakymo eilutės elementui, todėl lauko reikšmės nėra unikalios. Taip pat negalima naudoti tik lauko Produkto ID, nes produktas gali būti įtrauktas į daug skirtingų užsakymų. Tačiau naudojami kartu abu laukai visuomet sukuria unikalią kiekvieno įrašo reikšmę.

Produktų pardavimo duomenų bazėje lentelės Užsakymai ir Produktai nėra viena su kita susietos tiesiogiai. Tačiau jos yra netiesiogiai susietos per lentelę Užsakymų išsami informacija. Ryšys „daugelis su daugeliu“ tarp užsakymų ir produktų duomenų bazėje sukurtas naudojant du ryšius „vienas su daugeliu“.

  • Lentelės Užsakymai ir Užsakymų išsami informacija susietos ryšiu „vienas su daugeliu“. Kiekviename užsakyme gali būti daugiau nei vienas eilutės elementas, bet kiekvienas eilutės elementas sujungtas tik su vienu užsakymu.

  • Lentelės Produktai ir Užsakymų išsami informacija susietos ryšiu „vienas su daugeliu“. Kiekvienas produktas gali turėti daug su juo susietų eilutės elementų, bet kiekvienas eilutės elementas nurodo tik vieną produktą.

Lentelėje Užsakymų išsami informacija galite nustatyti visus į tam tikrą užsakymą įtrauktus produktus. Taip pat galite nustatyti visus tam tikro produkto užsakymus.

Įtraukus lentelę Užsakymų išsami informacija, lentelių ir laukų sąrašas gali atrodyti maždaug taip:

Paveikslėlis, kuriame rodomi informacijos elementai kūrimo metu


Puslapio viršus

Ryšio „vienas su vienu“ kūrimas

Dar galimas ryšys „vienas su vienu“. Tarkime, jums reikia įrašyti specialią papildomą informaciją apie produktą, kurios reikės retai arba ji bus taikoma tik keliems produktams. Kadangi šios informacijos reikės nedažnai, o saugant informaciją lentelėje Produktai atsirastų tuščių kiekvieno produkto, kuriam ši informacija netaikoma, laukų, šiai informacijai reikia sukurti atskirą lentelę. Pavyzdžiui, lentelėje Produktai naudojamas pirminis raktas produkto ID. Ryšys tarp šios papildomos lentelės ir lentelės Produktai „vienas su vienu“. Kiekvienas lentelėje Produktai esantis įrašas turi po vieną įrašą papildomos lentelėje. Nustačius tokį ryšį, abiejose lentelės turi būti bendras laukas.

Jei paaiškės, kad duomenų bazėje reikia sukurti ryšį „vienas su vienu“, pagalvokite, ar nebūtų galima sujungti informaciją iš abiejų lentelių į vieną. Jei dėl kažkokių priežasčių nenorite to daryti, pavyzdžiui, kad atsiras daug tuščios vietos, toliau tolesniame sąraše parodyta, kaip pateikti ryšį duomenų bazės struktūroje:

  • Jei abiejų lentelių tema ta pati, nustatyti ryšį galima naudojant abiem lentelėms vieną pirminį raktą.

  • Jei abiejų lentelių temos ir pirminiai raktai skiriasi, pasirinkite vieną iš lentelių (bet kurią) ir jos pirminį raktą įterpkite į kitą lentelę kaip išorinį.

Ryšiai tarp lentelių padeda užtikrinti, kad lentelės ir stulpeliai bus tinkami. Jei nustatyti „vienas su vienu“ arba „vienas su daugeliu“ ryšiai, lentelėse turi būti vienas arba keli bendri stulpeliai. Jei nustatytas ryšys „vienas su daugeliu“, reikalinga trečia ryšiui skirta lentelė.

Puslapio viršus

Struktūros tikslinimas

Sukūrus reikiamas lenteles, laukus ir ryšius, reikia užpildyti lenteles duomenų pavyzdžiais ir pabandyti atlikti su jais įvairius veiksmus: kurti užklausas, įtraukti naujus įrašus ir t. t. Taip galėsite aptikti potencialias problemas, pavyzdžiui, gali paaiškėti, kad kurdami pamiršote įtraukti kokį nors stulpelį arba reikia išskaidyti vieną lentelę į dvi, kad pašalintumėte dublikatus.

Patikrinkite, ar galima iš duomenų bazės gauti norimus atsakymus. Sukurkite formų ir ataskaitų juodraščius ir patikrinkite, ar juose yra duomenys, kurių tikitės. Paieškokite nereikalingų duomenų dublikatų, ir jei tokių rastumėte, pakeiskite duomenų bazės struktūrą.

Bandydami pradinę duomenų bazę tikriausiai atrasite tobulintinų dalykų. Štai keletas dalykų, kuriuos reikėtų patikrinti:

  • Ar nepamiršote kokių nors stulpelių? Jei taip, ar ši informacija susijusi su esamomis lentelėmis? Jei tai su kita tema susijusi informacija, reikės sukurti kitą lentelę. Sukurkite stulpelį kiekvienam informacijos elementui, kurį reikia sekti. Jei informacijos negalima apskaičiuoti remiantis kitais stulpeliais, greičiausiai reikės naujo stulpelio.

  • Ar nėra nebūtinų stulpelių, kuriuos galima apskaičiuoti pagal esamus laukus? Jei informacijos elementą galima apskaičiuoti pagal kitus esamus stulpelius, tarkime, kaina su nuolaida pagal mažmeninę kainą, geriau nekurti naujų stulpelių.

  • Ar tenka keletą kartų įvesti pasikartojančią informaciją į vieną iš lentelių? Jei taip, tikriausiai turite lentelę suskaidyti į dvi lenteles, kuriose yra ryšys „viensa su daugeliu“.

  • Ar turite lentelių su daugeliu laukų, nedideliu kiekiu įrašų ir daug tuščių laukų atskiruose įrašuose? Jei taip, pagalvokite apie lentelės pertvarkymą, kad joje būtų mažiau laukų ir daugiau įrašų.

  • Ar kiekvienas informacijos elementas suskirstytas į mažiausias įmanomas naudingas dalis? Informacijos elementus, kuriuos reikia naudoti kuriant ataskaitas, rikiuojant, ieškant arba apskaičiuojant, reikia įtraukti atskirame stulpelyje.

  • Ar kiekviename stulpelyje esantys duomenys susiję su lentelės tema? Jei stulpelyje nėra informacijos, susijusios su lentelės temą, ji turi būti kitoje lentelėje.

  • Ar visiems ryšiams tarp lentelių yra sukurti bendri laukai arba trečia lentelė? Jei naudojami ryšiai „vienas su vienu“ ir „vienas su daugeliu“, reikia daugiau bendrų laukų. Jei ryšys yra „daugelis su daugeliu“, reikalinga trečia lentelė.

Lentelės Produktai tikslinimas

Tarkime, kad kiekvieną produktų pardavimo duomenų bazėje esantį produktą galima priskirti bendrajai kategorijai, pavyzdžiui, gėrimai, prieskoniai arba jūros gėrybės. Lentelėje Produktai gali būti laukas, kuriame rodoma kiekvieno produkto kategorija.

Tarkime, kad išanalizavę ir patikslinę duomenų bazės struktūrą galite nuspręsti, kad kategorijos aprašas būtų saugomas kartu su jos pavadinimu. Jei įtrauksite lauką Kategorijos aprašas į lentelę Produktai, kiekvienos kategorijos aprašą turėsite pakartoti kiekvienam produktui, priskirtam tai kategorijai – tai nėra geras sprendimas.

Vertėtų kategorijas paversti nauja duomenų bazės tema ir sukurti joms lentelę ir atskirą pirminį raktą. Tada galėsite įtraukti pirminį raktą iš lentelės Kategorijos į lentelę Produktai kaip išorinį raktą.

Lentelės Kategorijos ir Produktai susietos ryšiu „vienas su daugeliu“: kategorija gali apimti daugiau nei vieną produktą, tačiau produktas gali priklausyti tik vienai kategorijai.

Peržiūrėdami lentelių struktūrą, atkreipkite dėmesį, ar nėra pasikartojančių grupių. Išanalizuokime lentelę, kurioje yra šie stulpeliai:

  • Produkto ID

  • Pavadinimas

  • 1 produkto ID

  • 1 pavadinimas

  • 2 produkto ID

  • 2 pavadinimas

  • 3 produkto ID

  • 3 pavadinimas

Čia kiekvienas produktas yra pasikartojanti grupė stulpelių, kurie skiriasi tik tuo, kad pavadinimo pradžioje įtraukiamas skaičius. Jei stulpeliai sunumeruoti tokiu būdu, turėtumėte peržiūrėti struktūrą.

Tokia struktūra turi kelis trūkumus. Pirmiausia reikės nustatyti viršutinę produktų skaičiaus ribą. Kuo viršysite šią ribą, turėsite į lentelės struktūrą įtraukti naują stulpelių grupę, o tai nėra paprasta administravimo užduotis.

Kita problema, kad tų tiekėjų, kurie turi mažiau prekių nei didžiausias leidžiamas produktų skaičius, papildomi stulpeliai bus tušti ir užims vietą. Tačiau didžiausias tokios struktūros trūkumas, kad daug užduočių tampa sunku atlikti, pavyzdžiui, rikiuoti ar indeksuoti lentelę pagal produkto ID arba pavadinimą.

Aptikę pasikartojančių grupių, patikrinkite, ar nebūtų galima vieną lentelę suskaidyti į dvi. Anksčiau pateiktame pavyzdyje būtų parankiau naudoti dvi lenteles, vieną tiekėjams, kitą produktams, susietiems naudojant tiekėjo ID.

Puslapio viršus

Normalizavimo taisyklių taikymas

Kitas duomenų bazės kūrimo veiksmas galėtų būti duomenų normalizavimo taisyklių (kartais vadinamų tiesiog normalizavimo taisyklėmis) pritaikymas. Šios taisyklės naudojamos tikrinant, ar jūsų lentelių struktūra tinkama. Taisyklių taikymas duomenų bazės struktūrai vadinamas duomenų bazės normalizavimu arba tiesiog normalizavimu.

Normalizavimą naudingiausia atlikti turint visus informacijos elementus ir sukūrus pradinę struktūrą. Šio proceso tikslas – patikrinti, ar informacijos elementus suskirstėte į tinkamas lenteles. Pačių duomenų elementų teisingumas normalizavimo proceso metu nėra tikrinamas.

Normalizavimo taisykles reikia taikyti nuosekliai, kiekviename etape tikrinant, ar duomenų bazės struktūra atitinka vadinamąsias normalines formas. Dažniausiai naudojamos penkios normalinės formos – nuo pirmos iki penktos. Šiame straipsnyje aptariamos trys pirmosios, nes paprastai jų užtenka daugumai duomenų bazių.

Pirmoji normalinė forma

Pirmoji normalinė forma nurodo, kad kiekvienos eilutės ir stulpelio susikirtime lentelėje turi būti viena reikšmė ir niekada reikšmių sąrašas. Pavyzdžiui, negali būti lauko, pavadinto Kaina, kuriame nurodyta daugiau nei viena kaina. Jei įsivaizduotumėte kiekvieną eilutes ir stulpelio sankirtą kaip langelį, kiekviename langelyje gali būti tik viena reikšmė.

Antroji normalinė forma

Antroji normalinė forma reikalauja, kad kiekvienas neraktinis stulpelis būtų visiškai priklausomas nuo viso pirminio rakto, o ne tik jo dalies. Ši taisyklė taikoma, kai turite pirminį raktą, kurį sudaro daugiau nei vienas stulpelis. Tarkime, turite lentelę, kurioje yra šie stulpeliai, be to, stulpeliai Užsakymo ID ir Produkto ID sudaro pirminį raktą:

  • Užsakymo ID (pirminis raktas)

  • Produkto ID (pirminis raktas)

  • Produkto pavadinimas

Tokia struktūra pažeidžia antrosios normalinės formos reikalavimus, nes Produkto pavadinimas priklauso nuo Produkto ID, bet ne nuo Užsakymo ID, todėl jis nepriklauso nuo viso pirminio rakto. Turite pašalinti stulpelį Produkto pavadinimas iš lentelės. Ji turi būti kitoje lentelėje (Produktai).

Trečioji normalinė forma

Trečioji normalinė forma reikalauja, kad ne tik kiekvienas stulpelis, kuris nėra raktinis, priklausytų nuo viso pirminio rakto, bet taip pat kad neraktiniai stulpeliai būtų nepriklausomi vienas nuo kito.

Kitaip tariant, kiekvienas stulpelis, kuris nėra raktinis, turi būti priklausyti tik nuo pirminio rakto. Tarkime, turime lentelę, kurioje yra šie stulpeliai:

  • Produkto ID (pirminis raktas)

  • Pavadinimas

  • Rekomenduojama mažmeninė kaina

  • Nuolaida

Nuolaida priklauso nuo rekomenduojamos mažmeninės kainos. Ši lentelė neatitinka trečios normalizuotos formos, nes stulpelis Nuolaida, kuris nėra raktinis, priklauso nuo kito neraktinio stulpelio Rekomenduojama mažmeninė kaina. Stulpelio nepriklausomumas reiškia, kad jį galėsite pakeisti bet kuriuo stulpeliu, kuris nėra raktinis, ir šis pakeitimas neturės įtakos jokiam kitam stulpeliui. Jei pakeisite lauko Rekomenduojama mažmeninė kaina reikšmę, atitinkamai pasikeis ir Nuolaida, todėl bus pažeista taisyklė. Šiuo atveju stulpelį Nuolaida reikia perkelti į kitą lentelę, kur stulpelis Rekomenduojama mažmeninė kaina būtų raktinis.

Puslapio viršus

Tobulinkite savo įgūdžius
Ieškoti mokymo
Pirmiausia gaukite naujų funkcijų
Prisijunkite prie „Office Insider“ dalyvių

Ar ši informacija buvo naudinga?

Dėkojame už jūsų atsiliepimus!

Dėkojame už jūsų atsiliepimą! Panašu, kad gali būti naudinga jus sujungti su vienu iš mūsų „Office“ palaikymo agentų.

×