Pareizi izveidota datu bāze nodrošina piekļuvi aktuālai un precīzai informācijai. Tā kā ka pareizs noformējums ir būtiski svarīgs savu mērķu sasniegšanai darbā ar datu bāzi, ir vērts veltīt laiku, lai apgūtu laba noformējuma principus. Tas palīdzēs izveidot datu bāzi, kas atbilst jūsu vajadzībām un ir viegli pielāgojama, lai ieviestu izmaiņas.
Šajā rakstā sniegti norādījumi par datora datu bāzes plānošanu. Uzzināsit, kā izlemt, kāda informācija ir nepieciešama, kā šo informāciju sadalīt atbilstošās tabulās un kolonnās un kā šīs tabulas ir savstarpēji saistītas. Pirms veidojat savu pirmo datora datu bāzi, izlasiet šo rakstu.
Šajā rakstā
Apgūstamie datu bāzu termini
Access organizē jūsu informāciju tabulās — sarakstos, kas sastāv no rindām un kolonnām un atgādina grāmatvedības dokumentus vai izklājlapu. Vienkāršā datu bāzē var būt tikai viena tabula. Lielākajai daļai datu bāzu ir nepieciešamas vairākas tabulas. Piemēram, jums ir tabula, kurā tiek glabāta informācija par produktiem; cita tabula, kurā tiek glabāta informācija par pasūtījumiem, un vēl viena tabula ar klientu datiem.
Katra rinda precīzāk tiek dēvēta par ierakstu un katra kolonna — par lauku. Ieraksts ir jēgpilns un konsekvents veids, kā apvienot informāciju par kādu tematu. Lauks ir viens informācijas vienums — vienuma tips, kas ietverts katrā ierakstā. Piemēram, tabulā Produkti katrā rindā vai ierakstā ir ietverta informācija par vienu produktu. Katrā kolonnā vai laukā ir noteikta veida informācija par šo produktu, piemēram, tā nosaukums vai cena.
Kā vislabāk veidot datu bāzi?
Datu bāzes izveides process tiek veikts atbilstoši noteiktiem principiem. Pirmais princips — jāizvairās no informācijas dublikātiem (tiek dēvēts arī par liekajiem datiem), jo tie nevajadzīgi aizņem vietu un palielina kļūdu un nekonsekvenču rašanās iespēju. Otrs princips — ir svarīgi, lai informācija būtu pareiza un pilnīga. Ja datu bāzē ir nepareizi dati, atskaitēs, kas izmanto informāciju no šīs datu bāzes, ietvertā informācija arī nav pareiza. Tā rezultātā visi lēmumi, kurus pieņemsit, vadoties pēc šīm atskaitēm, būs balstīti uz maldinošas informācijas.
Vadoties pēc šiem principiem, tālāk ir norādītas labas datu bāzes iezīmes.
-
Informācijai ir iedalīta tabulās pēc tēmas, lai samazinātu lieko datu apjomu.
-
Programmai Access tiek nodrošināta informācija, kas nepieciešama, lai apvienotu informāciju tabulās pēc nepieciešamības.
-
Tiek nodrošināts atbalsts un informācijas precīzums un integritāte.
-
Tiek nodrošināts viss nepieciešamais datu apstrādes un atskaišu izveides vajadzībām.
Izstrādes process
Datu bāzes izstrādes process ietver tālāk norādītās darbības.
-
Datu bāzes mērķa noteikšana
Tas palīdzēs sagatavoties tālāk minētajām darbībām.
-
Nepieciešamās informācijas atrašana un organizēšana
Apkopojiet visus datu tipus, kurus, iespējams, vēlēsities iekļaut datu bāzē, piemēram, produktu nosaukumi un pasūtījuma numuri.
-
Informācijas iedalīšana tabulās
Iedaliet datu vienumus galvenajās jomās vai tēmās, piemēram, Produkti un Pasūtījumi. Katra tēma pēc tam kļūst par tabulu.
-
Datu vienumu pārvēršana kolonnās
Izlemiet, kādu informāciju vēlaties glabāt katrā tabulā. Katrs vienums kļūst par lauku un tiek parādīts kā tabulas kolonna. Piemēram, tabulā Darbinieki iekļautie lauki var būt, piemēram, Uzvārds un Darbā pieņemšanas datums.
-
Primāro atslēgu norādīšana
Izvēlieties katras tabulas primāro atslēgu. Primārā atslēga ir kolonna, kas tiek izmantota, lai unikāli identificētu katru rindu. Piemēram, Produkta ID vai Pasūtījuma ID.
-
Tabulu relāciju iestatīšana
Pārskatiet katru tabulu un izlemiet, kā vienas tabulas dati ir saistīti ar citu tabulu datiem. Ja nepieciešams, pievienojiet tabulās laukus vai izveidojiet jaunas tabulas, lai precizētu relācijas.
-
Noformējuma precizēšana
Analizējiet noformējumu, lai meklētu kļūdas. Izveidojiet tabulas un pievienojiet dažus ierakstus ar parauga datiem. Skatiet, vai varat iegūt nepieciešamos rezultātus no savām tabulām. Pēc vajadzības pielāgojiet noformējumu.
-
Normalizēšanas kārtulu lietošana
Lietojiet datu normalizēšanas kārtulas, lai pārliecinātos, vai tabulas ir strukturētas pareizi. Pēc vajadzības pielāgojiet tabulas.
Datu bāzes mērķa noteikšana
Ieteicams pierakstīt datu bāzes mērķi uz papīra — tās mērķi, kā paredzēts to izmantot un kurš to izmantos. Piemēram, mazai datu bāzei mājas uzņēmējdarbībā varat rakstīt kaut ko vienkāršu, piemēram, "Klientu datu bāzē tiek veidots klientu informācijas saraksts, lai sagatavotu pasta sūtījumus un atskaites". Ja datu bāze ir sarežģītāka vai to izmanto daudzi lietotāji, bieži vien tas notiek korporatīvajā iestatījumā, mērķis var būt rindkopa vai cits iestatījums, un iekļaut, kad un kā katrs lietotājs izmantos datu bāzi. Mērķis ir būt labi izstrādātam mission paziņojumam, uz kuru var norādīt visā izstrādes procesā. Šāds paziņojums palīdz jums koncentrēties uz mērķiem, kad pieņemt lēmumu.
Nepieciešamās informācijas meklēšana un organizēšana
Lai atrastu un organizētu nepieciešamo informāciju, sāciet ar esošo informāciju. Piemēram, varat reģistrēt pirkšanas pasūtījumus kases grāmatā vai saglabāt klientu datus papīra veidlapās. Apkopojiet šos dokumentus un uzskaitiet visus esošos informācijas veidus (piemēram, katru lodziņu, ko aizpildāt formā). Ja jums nav nevienas esošas formas, iedomājieties, ka jums ir jāizveido forma, kurā reģistrēt klientu datus. Kāda informācija tiktu ievadīta formā? Kādus aizpildāmos lodziņus jūs izveidotu? Identificējiet un uzskaitiet visus šos vienumus. Pieņemsim, ka pašreiz klientu sarakstu glabājat kartotēkas kartītēs. Aplūkojot šīs kartītes, ir redzams, ka katrā kartītē ir klienta vārds, adrese, pilsēta, novads, pasta indekss un tālruņa numurs. Katrs no šiem vienumiem ir iespējama kolonna tabulā.
Sagatavojot šo sarakstu, nav jāuztraucas par tā nevainojamu izveidi jau pašā sākumā. Tā vietā uzskaitiet katru vienumu, kas ienāk prātā. Ja kāds cits izmantos datu bāzi, lūdziet arī šai personai paust savas idejas. Sarakstu varat precizēt vēlāk.
Pēc tam apsveriet, kāda tipa atskaites vai sūtījumus vēlaties veidot no datu bāzes. Piemēram, varbūt vēlaties, lai produktu pārdošanas atskaitē tiktu parādīti pārdošanas apjomi pēc reģiona vai krājumu kopsavilkuma atskaitē tiktu parādīti produktu krājumu līmeņi. Vai arī vēlaties izveidot standarta vēstules nosūtīšanai klientiem, lai paziņotu par izpārdošanu vai piedāvātu atlaidi. Izveidojiet atskaiti savās domās un iedomājieties, kā tā izskatīsies. Kāda informācija tiktu ietverta atskaitē? Uzskaitiet katru vienumu. Veiciet to pašu attiecībā uz standarta vēstuli vai jebkuru citu atskaiti, kuru domājat veidot.
Pārdomājot atskaites un vēstules, kuras, iespējams, vēlēsities izveidot, ir vieglāk noteikt, kādi vienumi būs nepieciešami jūsu datu bāzē. Pieņemsim, ka sniedzat klientiem iespēju izvēlēties (pieteikties vai atteikties) saņemt periodiskus informatīvus ziņojumus e-pastā un vēlaties izdrukāt to personu sarakstu, kuras ir piekritušas saņemt šo informāciju. Lai reģistrētu šo informāciju, jūs pievienojat kolonnu "Sūtīt e-pastu" klientu tabulā. Katram klientam šo lauku var iestatīt kā Jā vai Nē.
Prasība nosūtīt e-pasta ziņojumus klientiem norāda citu reģistrējamo vienumu. Ja zināt, ka klients vēlas saņemt e-pasta ziņojumus, ir jāzina arī e-pasta adrese, uz kuru tos nosūtīt. Tādēļ nepieciešams reģistrēt katra klienta e-pasta adresi.
Ir lietderīgi izveidot katras atskaites vai izvades saraksta prototipu un apsvērt, kādi vienumi būs nepieciešami, lai izveidotu atskaiti. Piemēram, izpētot veidlapas vēstuli, var nākties prātā dažas lietas. Ja vēlaties iekļaut īpašvārdu uzrunu, piemēram, virkni "Mr.", "Mrs" vai "Ms.", kas sāk uzrunu, ir jāizveido uzrunas vienums. Parasti burtu varētu sākt ar "Cien. M. Bērziņš", nevis "Cien. Mr. Sylvester Smith". Tas iesaka parasti glabāt uzvārdu atsevišķi no vārda.
Svarīgi atcerēties, ka ikviens informācijas vienums jāsadala vismazākajās noderīgajās daļās. Attiecībā uz vārdu; lai uzvārdu padarītu ērti pieejamu, personas pilns vārds tiek sadalīts divās daļās — vārds un uzvārds. Lai kārtotu atskaiti pēc uzvārda, ir lietderīgi klientu uzvārdus glabāt atsevišķi. Vispār, ja vēlaties kārtot, meklēt, aprēķināt vai veidot atskaites, vadoties pēc kāda informācijas vienums, šis vienums jāievieto tam paredzētā laukā.
Padomājiet par jautājumiem, uz kuriem datu bāzei vajadzētu sniegt atbildes. Piemēram, cik attiecīgā produkta pārdošanas gadījumi bija pagājušajā mēnesī? Kur dzīvo jūsu labākie klienti? Kas piegādā jūsu vislabāk pārdoto produktu? Šo jautājumu izvērtēšana palīdz noteikt papildu vienumus, kurus nepieciešams reģistrēt.
Pēc šo datu apkopošanas esat gatavs nākamajai darbībai.
Informācijas iedalīšana tabulās
Lai datus sadalītu pa tabulām, izvēlieties galvenās entītijas vai tēmas. Piemēram, pēc datu atrašanas un sakārtošanas produktu pārdošanas datu bāzei, sākotnējais saraksts varētu izskatīties šādi:
Galvenās šeit parādītās entītijas ir produkti, piegādātāji, klienti un pasūtījumi. Tādēļ ieteicams sākt ar šīm četrām tabulām: vienu ar faktiem par produktiem, vienu ar faktiem par piegādātājiem, vienu ar faktiem par klientiem un vienu ar faktiem par pasūtījumiem. Lai gan tas nav pilnīgs saraksts, tas ir labs sākuma punkts. Varat turpināt precizēt savu sarakstu, līdz esat ieguvis datu bāzi, kas darbojas labi.
Pirmoreiz pārskatot sākotnējo vienumu sarakstu, iespējams, vēlēsities ievietot tos visus vienā tabulā, nevis četrās, kā iepriekšējā attēlā. Šeit jūs uzzināsit, kādēļ tas nav vēlams. Aplūkojiet tālāk redzamo tabulu:
Šādā gadījumā katrā rindā ir informācija par produktu un tā piegādātāju. Tā kā var būt vairāki produkti no viena piegādātāja, piegādātājs vārds un adrese atkārtojas vairākas reizes. Tādējādi tiek nevajadzīgi aizņemta vieta diskā. Piegādātāja datu reģistrēšana tikai vienreiz atsevišķā tabulā Piegādātāji un pēc tam šīs tabulas piesaistīšana tabulai Produkti ir daudz labāks risinājums.
Otrā problēma saistībā ar šo noformējumu rodas, ja ir jāmaina piegādātāja dati. Piemēram, ja vēlaties mainīt piegādātāja adresi. Tā kā tā ir redzama daudzās vietās, iespējams nejauši nomainīt adresi vienā vietā, bet aizmirst to nomainīt pārējās vietās. Reģistrējot piegādātāja adresi tikai vienā vietā, šī problēma tiek atrisināta.
Veidojot datu bāzi, centieties reģistrēt katru faktu tikai vienreiz. Ja konstatējat, ka viena un tā pati informācija atkārtojas vairākās vietās, piemēram, konkrēta piegādātāja adrese, ievietojiet šos datus atsevišķā tabulā.
Visbeidzot, pieņemsim, ka ir tikai viens produkts, ko piegādā Coho Winery, un jūs vēlaties izdzēst šo produktu, bet saglabāt piegādātāja nosaukuma un adreses datus. Kā var izdzēst produkta ierakstu, nezaudējot piegādātāja datus? Nevar. Tā kā katrā ierakstā ir informācija par produktu, kā arī informācija par piegādātāju, nevar izdzēst vienu, neizdzēšot otru. Lai šos faktus saglabātu atsevišķi, viena tabula ir jāsadala divās: viena tabula informācijai par produktiem, savukārt otra tabula informācijai par piegādātājiem. Dzēšot produkta ierakstu, būtu jāizdzēš tikai fakti par attiecīgo produktu, nevis fakti par piegādātāju.
Kad esat izvēlējies tēmu, uz kuru attiecas tabula, šīs tabulas kolonnās jābūt tikai faktiem par šo tēmu. Piemēram, produktu tabulā jātiek glabātiem tikai faktiem par produktiem. Tā kā piegādātāja adrese ir fakts par piegādātāju, nevis fakts par attiecīgo produktu, tas iederas piegādātāju tabulā.
Datu vienumu pārvēršana kolonnās
Lai noteiktu tabulas kolonnas, izlemiet, kāda informācija ir jāreģistrē par tabulas tēmu. Piemēram, tabulai Klienti labs sākuma kolonnu saraksts būtu Vārds, Adrese, Pilsēta/rajons/pasta indekss, Sūtīt e-pastu, Uzruna un E-pasta adrese. Katrā tabulas ierakstā ir tāda pati kolonnu kopa un katram ierakstam tādējādi var saglabāt vārda, adreses, pilsētas/rajona/pasta indeksa, e-pasta sūtīšanas, uzrunas un e-pasta adreses informāciju. Piemēram, adreses kolonnā ir norādītas klientu adreses. Katrs ieraksts satur datus par vienu klientu, un adreses laukā ir ietverta šī klienta adrese.
Kad esat noteicis sākotnējo kolonnu kopu katrā tabulā, varat papildus precizēt kolonnas. Piemēram, ir lietderīgi saglabāt klienta vārdu divās atsevišķās kolonnās (Vārds un Uzvārds), lai varētu kārtot, meklēt un indeksēt tikai šīs kolonnas. Tāpat arī adrese faktiski sastāv no pieciem dažādiem komponentiem (adreses, pilsētas, novada, pasta indeksa un valsts/reģiona) un ir noderīgi tos glabāt atsevišķās kolonnās. Piemēram, ja vēlaties veikt meklēšanu, filtrēšanu vai kārtošanu pēc valsts, ir nepieciešama valsts informācija, kas glabājas atsevišķā kolonnā.
Ir arī jāapsver, vai datu bāzē tiks iekļauta tikai iekšzemes informācija, vai arī starptautiskā. Piemēram, ja plānojat saglabāt starptautiskas adreses, ir labāk izmantot kolonnu Reģions, nevis Valsts, jo šādā kolonnā var ietilpt iekšzemes informācija un uz citām valstīm/reģioniem attiecināmā informācija. Tāpat pasta indekss ir labāka izvēle nekā pasta kods, ja plānojat saglabāt starptautiskas adreses.
Šajā sarakstā sniegti daži padomi par kolonnu noteikšanu.
-
Neiekļaujiet aprēķinātos datus
Lielākajā daļā gadījumu aprēķinu rezultāti nav jāglabā tabulās. Tā vietā varat likt programmai Access veikt aprēķinus, kad vēlaties redzēt rezultātu. Piemēram, ja atskaitē Pasūtītie produkti ir parādīta pasūtīto vienību starpsumma katrai kategorijai produktu datu bāzē. Tomēr nevienā tabulā nav starpsummu kolonnas Pasūtītās vienības. Tā vietā tabulā Produkti ir kolonna Pasūtītās vienības, kurā ir norādītas pasūtītās katra produkta vienības. Izmantojot šos datus, programma Access aprēķina starpsummu ikreiz, kad drukājat atskaiti. Pašai starpsummai nav jātiek glabātai tabulā.
-
Glabājiet informāciju tās mazākajās loģiskajās daļās
Jums var rasties kārdinājums izmantot vienu lauku pilniem vārdiem vai produktu nosaukumiem kopā ar produktu aprakstiem. Ja laukā apvienojat vairāk nekā viena veida informāciju, vēlāk ir grūti izgūt atsevišķus faktus. Mēģiniet datus sadalīt loģiskās daļās; piemēram, izveidot atsevišķus laukus vārdiem un uzvārdiem, vai arī produktu nosaukumiem, kategorijai un aprakstiem.
Kad ir precizētas datu kolonnas katrā tabulā, jūs esat gatavs izvēlēties katras tabulas primāro atslēgu.
Primāro atslēgu norādīšana
Katrā tabulā jāiekļauj kolonna vai kolonnu kopa, kas unikāli identificē katru rindu, kas tiek glabāta tabulā. Tas bieži vien ir unikāls identifikācijas numurs, piemēram, darbinieka ID numurs vai sērijas numurs. Datu bāzu terminoloģijā šī informācija tiek dēvēta par tabulas primāro atslēgu. Programma Access izmanto primārās atslēgas laukus, lai ātri saistītu datus no vairākām tabulām un apvienotu datus jūsu vietā.
Ja jums jau ir tabulas unikāls identifikators, piemēram, produkta numurs, kas unikāli identificē katru produktu katalogā, varat izmantot šo identifikatoru kā tabulas primāro atslēgu, taču tikai tad, ja šajā kolonnā esošās vērtības vienmēr atšķirsies katram ierakstam. Primārajā atslēgā nevar būt dublētas vērtības. Piemēram, neizmantojiet personu vārdus kā primāro atslēgu, jo vārdi nav unikāli. Vienā tabulā varētu būt divi cilvēki ar vienādu vārdu.
Primārajai atslēgai vienmēr ir jābūt vērtībai. Ja kolonnas vērtība kādā brīdī var kļūt nepiešķirta vai nezināma (trūkstošas vērtība), to nevar izmantot kā primārās atslēgas komponentu.
Vienmēr izvēlieties primāro atslēgu, kuras vērtība netiks mainīta. Datu bāzē, kas izmanto vairāk nekā vienu tabulu, tabulas primāro atslēgu var izmantot kā atsauci citās tabulās. Ja primārā atslēga tiek mainīta, šīs izmaiņas ir arī jāpiemēro visur, kur ir atsauces uz šo atslēgu. Izmantojot primāro atslēgu, kas netiek mainīta, tiek samazināta iespēja primārajai atslēga kļūt nesinhronizētai ar citām tabulām, kurās ir iekļautas atsauces uz to.
Kā primārā atslēga bieži tiek izmantots pieņemts unikāls skaitlis. Piemēram, katram pasūtījumam var piešķirt unikālu pasūtījuma numuru. Pasūtījuma numura vienīgais mērķis ir identificēt pasūtījumu. Pēc piešķiršanas tas vairs netiek mainīts.
Ja jums prātā nav kolonnas vai kolonnu kopas, kas būtu laba primārā atslēga, izmantojiet kolonnu, kuras datu tips ir AutoNumber. Ja izmantojat datu tipu AutoNumber, programma Access automātiski piešķir vērtību jūsu vietā. Identifikatoram nav faktiskās vērtības, tas nesatur faktiskus datus, kas apraksta attiecīgo rindu. Identifikatori bez faktiskās vērtības ir vispiemērotākie kā primārā atslēga, jo tie nemainās. Primārā atslēga, kas satur informāciju par rindu (piemēram, tālruņa numuru vai klienta vārdu), var tikt mainīta, jo pati faktiskā informācija var mainīties.
1. Kolonna, kuras datu tips iestatīts kā AutoNumber, bieži ir piemērota kā primārā atslēga. Katrs produkta ID ir unikāls.
Dažos gadījumos, iespējams, vēlēsities izmantot divus vai vairākus laukus, kas kopā veido tabulas primāro atslēgu. Piemēram, tabula Detalizēta informācija par pasūtījumu, kurā tiek glabāti pasūtījumu rindas vienumi, varētu izmantot divas kolonnas tās primārajā atslēgā: Pasūtījuma ID un Produkta ID. Ja primārajā atslēgā ir izmantotas vairākas kolonnas, tā tiek dēvēta arī par salikto atslēgu.
Produktu pārdošanas datu bāzē var izveidot AutoNumber kolonnu katrai tabulai, kas kalpos kā primārā atslēga: Produkta ID tabulai Produkti, OrderID tabulai Pasūtījumi, Klienta ID tabulai Klienti un Piegādātāja ID tabulai Piegādātāji.
Tabulu relāciju izveide
Tagad, kad informācija ir iedalītas tabulās, ir nepieciešams veids, kā šo informāciju atkal jēgpilni apkopot. Piemēram, šajā formā ir apkopoti dati no vairākām tabulām.
1. Šajā formā iekļautā informācija iegūta no tabulas Klienti...
2. ...tabula Darbinieki...
3. ...tabula Pasūtījumi...
4. ...tabula Produkti...
5. ...un tabula Pasūtījumu informācija.
Access ir relāciju datu bāzu pārvaldības sistēma. Relāciju datu bāzē informācija ir iedalīta atsevišķās tabulās pēc tēmas. Pēc tam tiek izmantotas tabulu relācijas, lai apkopotu datus pēc nepieciešamības.
Relācijas viens pret daudziem izveide
Aplūkojiet šo piemēru: tabulas Piegādātāji un Produkti produktu pasūtījumu datu bāzē. Piegādātājs var piegādāt jebkādu skaitu produktu. Var secināt, ka jebkuram piegādātājam tabulā Piegādātāji var būt vairāki produkti tabulā Produkti. Līdz ar to relācija starp tabulu Piegādātāji un tabulu Produkti ir relācija viens pret daudziem.
Lai datu bāzes noformējumā atspoguļotu relāciju viens pret daudziem, primāro atslēgtu, kas ir relācijas pusē “viens”, pievienojiet kā papildu kolonnu vai kolonnas tabulā relācijas pusē “daudzi”. Piemēram, šajā gadījumā tabulai Produkti ir jāpievieno kolonna Pasūtītāja ID no tabulas Piegādātāji. Pēc tam programma Access var izmantot tabulā Produkti norādīto piegādātāja ID numuru, lai atrasto pareizo piegādātāju katram produktam.
Kolonna Piegādātāja ID tabulā Produkti tiek dēvēta par ārējo atslēgu. Ārējā atslēga ir citas tabulas primārā atslēga. Kolonna Piegādātāja ID tabulā Produkti ir ārējā atslēga, jo tā ir arī tabulas Piegādātāji primārā atslēga.
Bāze saistīto tabulu savienošanai tiek nodrošināta, izveidojot primāro atslēgu un ārējo atslēgu pārus. Ja neesat pārliecināts, kurām tabulām būtu jābūt kopīgai kolonnai, nosakot relāciju viens pret daudziem, tiek nodrošināts, ka divām saistītajām tabulām patiešām būs nepieciešama kopīga kolonna.
Relācijas daudzi pret daudziem izveide
Apsveriet relāciju starp tabulu Produkti un tabulu Pasūtījumi.
Vienā pasūtījumā var ietilpt vairāk nekā viens produkts. Taču viens atsevišķs produkts var parādīties vairākos pasūtījumos. Tādēļ katram ierakstam tabulā Pasūtījumi var būt daudzi ieraksti tabulā Produkti. Turklāt katram ierakstam tabulā Produkti var būt vairāki ieraksti tabulā Pasūtījumi. Šāda veida relācija tiek dēvēta par relāciju daudzi pret daudziem, jo jebkuram produktam var būt daudzi pasūtījumi un jebkuram pasūtījumam var būt daudzi produkti. Ņemiet vērā — lai noteiktu relācijas daudzi pret daudziem starp savām tabulām, ir svarīgi ņemt vērā abas relācijas puses.
Abām tabulām (pasūtījumiem un produktiem) ir relācija daudzi pret daudziem. Tas rada problēmu. Lai saprastu problēmu, iedomājieties, kas notiktu, ja mēģinātu izveidot relāciju starp abām tabulām, pievienojot lauku Produkta ID tabulai Pasūtījumi. Lai vienam pasūtījumam būtu vairāki produkti, vienam pasūtījumam nepieciešams vairāk nekā viens ieraksts tabulā Pasūtījumi. Jūs būtu atkārtot pasūtījuma informāciju katrai rindai, kas ir saistīta ar vienu secību, rezultātā radīsies kļūdains noformējums, kas var radīt neprecīzus datus. Tās pašas problēmas rodas, ja tabulā Produkti norādījāt lauku Pasūtījuma ID — tabulā Produkti ir vairāki ieraksti katram produktam. Kā atrisināt šo problēmu?
Ir jāizveido trešā tabula, kas bieži tiek dēvēta par savienojuma tabulu, kurā relācijas daudzi pret daudziem ir sadalītas relācijās viens pret daudziem. Primārā atslēga no katras no šīm divām tabulām ir jāievieto trešajā tabulā. Rezultātā trešajā tabulā tiek ierakstīts katrs relācijas gadījums.
Katram ierakstam tabulā Pasūtījuma dati atbilst viens pasūtījuma rindas vienums. Pasūtījuma datu tabulas primārā atslēga sastāv no diviem laukiem — ārējām atslēgām no tabulas Pasūtījumi un Produkti. Tikai lauku Pasūtījuma ID nevar izmantot kā šīs tabulas primāro atslēgu, jo vienā pasūtījumā var būt vairāki rindas vienumi. Pasūtījuma ID tiek atkārtots katram pasūtījuma rindas vienumam un tādēļ šis lauks nesatur unikālas vērtības. Arī tikai lauku Produkta ID nevar izmantot, jo viens produkts var būt ietverts dažādos pasūtījumos. Bet šie abi lauki kopā vienmēr veido unikālu vērtību katram ierakstam.
Produktu pārdošanas datu bāzē tabulas Pasūtījumi un Produkti nav savstarpēji tieši saistītas. Tās ir netieši saistītas caur tabulu Pasūtījuma dati. Relācija daudzi pret daudziem starp pasūtījumiem un produktiem datu bāzē tiek norādīta, izmantojot divas relācijas viens pret daudziem:
-
Tabulai Pasūtījumi un tabulai Pasūtījuma dati ir relācija viens pret daudziem. Katram pasūtījumam var būt vairāki rindas vienumi, bet katrs rindas vienums ir saistīts tikai ar vienu pasūtījumu.
-
Tabulai Produkti un tabulai Pasūtījuma dati ir relācija viens pret daudziem. Katram produktam var būt vairāki ar to saistīti rindas vienumi, bet katrs rindas vienums attiecas tikai uz vienu produktu.
Tabulā pasūtījuma dati varat noteikt visus produktus konkrētā pasūtījumā. Varat arī noteikt visus konkrēta produkta pasūtījumus.
Pēc tabulas Pasūtījuma dati iekļaušanas tabulu un lauku saraksts varētu izskatīties apmēram šādi:
Relācijas viens pret vienu izveide
Cita veida relācija ir relācija viens pret vienu. Piemēram, ja jums jāreģistrē īpaša papildinformācija par produktu, kas būs nepieciešama reti vai attiecas tikai uz dažiem produktiem. Tā kā šī informācija nav nepieciešama bieži un tādēļ, ka saglabājot informāciju tabulā Produkti, tiktu izraisīta tukša vieta katram produktam, uz kuru tā neattiecas, tā jāievieto atsevišķā tabulā. Tāpat kā tabulai Produkti, izmantojiet ProductID kā primāro atslēgu. Relācija starp šo papildu tabulu un tabulu Produkti ir relācija viens pret vienu. Katram ierakstam tabulā Produkti pastāv viens atbilstošs ieraksts papildu tabulā. Kad identificējat šādu relāciju, abās tabulās jābūt kopīgam laukam.
Ja rodas nepieciešamība datu bāzē izmantot relāciju viens pret vienu, apsveriet, vai varat apvienot datus no divām tabulām vienā tabulā. Ja kāda iemesla dēļ nevēlaties tā rīkoties, piemēram, jo tas varētu radīt daudz brīvas vietas, šajā sarakstā ir redzams, kā relāciju varat iekļaut savā datu bāzē.
-
Ja abām tabulām ir vienāda tēma, jūs, iespējams, varat izveidot relāciju, izmantojot vienu primāro atslēgu abās tabulās.
-
Ja abām tabulām ir atšķirīgas tēmas un atšķirīgas primārās atslēgas, izvēlieties vienu no tabulām (jebkuru) un ievietojiet tās primāro atslēgu otrā tabulā kā ārējo atslēgu.
Relāciju starp tabulām noteikšana palīdz nodrošināt, ka jums ir pareizās tabulas un kolonnas. Ja pastāv relācija viens pret vienu vai viens pret daudziem, saistītajām tabulām jābūt kopīgai kolonnai vai kolonnām. Ja pastāv relācija daudzi pret daudziem, ir nepieciešama trešā tabula, lai norādītu relāciju.
Noformējuma precizēšana
Kad jums ir nepieciešamās tabulas, lauki un relācijas, izveidojiet tabulas, aizpildiet tās ar parauga datiem un mēģiniet strādāt ar informāciju — izveidot vaicājumus, pievienot jaunus ierakstus un tā tālāk. Tas palīdz pamanīt potenciālās problēmas — piemēram, varbūt būs jāpievieno kolonna, kuru esat aizmirsis ievietot noformēšanas laikā, vai kāda tabula jāsadala divās tabulās, lai noņemtu dublēšanos.
Skatiet, vai datu bāzi var izmantot, lai saņemtu vēlamās atbildes. Izveidojiet aptuvenus formu un atskaišu melnrakstus un pārbaudiet, vai tie parāda plānotos datus. Meklējiet nevajadzīgu datu dublēšanos un, kad atrodat, mainiet datu bāzi, lai atbrīvotos no tās.
Izmēģinot sākotnējo datu bāzi, droši vien būs redzams, kur var veikt uzlabojumus. Tālāk ir norādītas dažas lietas, ko pārbaudīt.
-
Vai neesat aizmirsis kādu kolonnu? Ja tā ir, vai šai informācijai jābūt iekļautai esošajās tabulās? Ja tā ir informācija par kaut ko citu, iespējams, ir jāizveido jauna tabula. Izveidojiet kolonnu katram datu vienumam, kas ir jāizseko. Ja informāciju nevar aprēķināt no citām kolonnām, visticamāk, tai ir nepieciešama jauna kolonna.
-
Vai pastāv nevajadzīgas kolonnas, jo tās var aprēķināt, izmantojot esošus laukus? Ja informācijas vienumu var aprēķināt no citām esošajām kolonnām (piemēram, aprēķināt atlaidi no mazumtirdzniecības cenas), parasti labāk ir rīkoties tā un neveidot jaunu kolonnu.
-
Varat atkārtoti ievadāt dublikātu informāciju kādā no tabulām? Ja tā ir, iespējams, ir nepieciešams tabulu sadalīt divās tabulās, kurām ir relācija viens pret daudziem.
-
Vai jums ir tabulas ar daudziem laukiem, ierobežots ierakstu skaits un daudzi tukši lauki atsevišķos ierakstos? Ja tā ir, padomājiet par tabulas pārveidošanu tā, lai tajā būtu mazāk lauku un vairāk ierakstu.
-
Vai katrs informācijas vienums ir sadalīts tā mazākajās lietojamās daļās? Ja vēlaties veidot atskaites, kārtot, meklēt, vai aprēķināt, vadoties pēc kāda informācijas vienuma, šis vienums jāievieto tam paredzētā laukā.
-
Vai katrā kolonnā ir ietverts fakts par tabulas tēmu? Ja kolonnā nav informācijas par tabulas tēmu, tai jābūt citā tabulā.
-
Vai visas relācijas starp tabulām ir norādītas, izmantojot kopīgus laukus vai trešo tabulu? Relācijām viens pret vienu un viens pret daudziem ir nepieciešamas kopējās kolonnas. Relācijām daudzi pret daudziem ir nepieciešama trešā tabula.
Tabulas Produkti precizēšana
Pieņemsim, ka katrs produkts produktu pārdošanas datu bāzē ietilpst vispārīgā kategorijā, piemēram, dzērieni, garšvielas vai jūras veltes. Tabulā Produkti var tikt iekļauts lauks, kurā redzama katra produkta kategorija.
Pieņemsim, ka pēc datu bāzes izpētes un precizēšanas jūs nolemjat glabāt kategorijas aprakstu kopā ar tās nosaukumu. Ja pievienojat lauku Kategorijas apraksts tabulā Produkti, katrs kategorijas apraksts būs jāatkārto katram produktam, kas ietilpst kategorijā — tas nav labs risinājums.
Labāks risinājums ir Kategorijas pārveidot par jaunu tēmu, kas datu bāzei jāizseko, ar savu tabulu un savu primāro atslēgu. Pēc tam varat pievienot primāro atslēgu no tabulas Kategorijas tabulai Produkti kā ārējo atslēgu.
Tabulām Kategorijas un Produkti ir relācija viens pret daudziem — kategorijā var būt iekļauti vairāki produkti, bet produkts var būt iekļauts tikai vienā kategorijā.
Pārskatot tabulu struktūras, vērojiet, vai grupas neatkārtojas. Piemēram, apsveriet tabulu ar šādām kolonnām:
-
Produkta ID
-
Nosaukums
-
Produkta ID1
-
Nosaukums1
-
Produkta ID2
-
Nosaukums2
-
Produkta ID3
-
Nosaukums3
Šeit katrs produkts ir atkārtota kolonnu grupa, kas atšķiras no citiem tikai ar skaitļa pievienošanu kolonnas nosaukuma beigās. Ja parādās šādi numurētas kolonnas, ieteicams pārskatīt izveidoto datu bāzi.
Šādam noformējumam ir vairāki trūkumi. Iesākumā tas pieprasa noteikt maksimālā produktu skaita ierobežojumu. Tiklīdz pārsniedzat šo ierobežojumu, tabulas struktūrai jāpievieno jauna kolonnu grupa, kas ir viens no galvenajiem administratīvajiem uzdevumiem.
Vēl viena problēma ir tas, ka piegādātājiem, kuriem produktu skaits nesasniedz maksimālo, tiek izniekots noteikts daudzums vietas, jo papildu kolonnas būs tukšas. Visnopietnākā problēma saistībā ar šo noformējumu ir tas, ka tiek apgrūtināta daudzu uzdevumu veikšana, piemēram, tabulas kārtošana vai indeksēšana pēc produkta ID vai nosaukuma.
Ja ir redzamas atkārtotas grupas, rūpīgi pārskatiet noformējumu, īpašu uzmanību pievēršot tabulas sadalīšanu uz pusēm. Iepriekšējā piemērā, ieteicams izmantot divas tabulas (vienu piegādātājiem un vienu produktiem), kuras saista piegādātāja ID.
Normalizēšanas kārtulu lietošana
Datu normalizēšanas kārtulas (dažreiz dēvētas par normalizēšanas kārtulām) varat izmantot kā nākamo darbību datu bāzes izveidē. Izmantojiet šīs kārtulas, lai pārliecinātos, vai tabulas ir strukturētas pareizi. Kārtulu lietošanas datu bāzes noformējumā procesu dēvē par datu bāzes normalizēšanu jeb vienkārši normalizēšanu.
Normalizēšana ir visnoderīgākā pēc tam, kad ir iekļauti visi datu vienumi un esat nonācis pie sākotnējā noformējuma. Mērķis ir palīdzēt nodrošināt, lai datu vienumi būtu iedalīti atbilstošajās tabulās. Normalizēšana nevar nodrošināt, lai jums sākumā būtu pareizie dati vienumu.
Kārtulas tiek lietotas pēc kārtas, katrā darbībā pārliecinoties, vai noformējums atbilst "normālformai". Piecas normālformas ir vispārīgi pieņemtas — no pirmās normālformas līdz piektajai normālformai. Šajā rakstā tiek aplūkotas pirmās trīs, jo tās ir viss, kas nepieciešams lielākajai daļai datu bāzes noformējumu.
Pirmā normālforma
Pirmā normālforma norāda, ka ikvienā tabulas rindu un kolonnu krustpunktā pastāv viena vērtība un tā nekad nav vērtību saraksts. Piemēram, nevar būt lauks ar nosaukumu Cena, kurā tiek ievadītas vairākas cenas. Ja aplūkojat katru rindu un kolonnu krustpunktu kā šūnu, katrā šūnā var būt tikai viena vērtība.
Otra normālforma
Otrā normālforma pieprasa, lai katra kolonna, kas nav atslēgas kolonna, būtu pilnīgi atkarīga no visas primārās atslēgas, nevis tikai tās daļas. Šī kārtula tiek izmantota, ja ir primārā atslēga, kas sastāv no vairāk nekā vienas kolonnas. Pieņemsim, ka jums ir tabula ar šādām kolonnām, kur Pasūtījuma ID un Produkta ID veido primāro atslēgu:
-
Pasūtījuma ID (primārā atslēga)
-
Produkta ID (primārā atslēga)
-
Produkta nosaukums
Šis noformējums pārkāpj otru normālformu, jo produkta nosaukums ir atkarīgs no Produkta ID, bet ne Pasūtījuma ID, un tātad tas nav atkarīgs no visas primārās atslēgas. Produkta nosaukums ir jānoņem no tabulas. Tas pieder pie citas tabulas (Produkti).
Trešā normālforma
Trešā normālforma pieprasa, lai katra kolonna, kas nav atslēgas kolonna, būtu ne tikai atkarīga no visas primārās atslēgas, bet kolonnas, kas nav atslēgas kolonnas, būtu savstarpēji atkarīgas.
Citiem vārdiem — katrai kolonnai, kas nav atslēgas kolonna, ir jābūt atkarīgai no primārās atslēgas un tikai no primārās atslēgas. Pieņemsim, ka jums ir tabula ar šādām kolonnām:
-
Produkta ID (primārā atslēga)
-
Nosaukums
-
IMC
-
Atlaide
Pieņemsim, ka Atlaide ir atkarīga no ieteicamās mazumtirdzniecības cenas (IMC). Šī tabula pārkāpj trešo normālformu, jo kolonna, kas nav atslēgas kolonna (Atlaide), ir atkarīga no citas kolonnas, kas nav atslēgas kolonna (IMC). Kolonnu neatkarība nozīmē, ka varat mainīt jebkuru kolonnu, kas nav atslēgas kolonna, neietekmējot citas kolonnas. Ja maināt vērtību laukā IMC, attiecīgi mainās atlaide, tādējādi pārkāpjot šo kārtulu. Šajā gadījumā Atlaide ir jāpārvieto uz citu tabulu, kas ir saistīta ar IMC.