Kebergantungan fungsional dan pangkalan data hubungan. Normalisasi Data

Kaedah bentuk biasa

cikgu

Nama penuh Sepatutnya Gaji Pengalaman Nadb Kaf Subjek Kumpulan VidZan
Ivanov I.M. Rev. DBMS Makmal
Ivanov I.M. Rev. Maklumkan Makmal
Petrov M.I. guru kanan DBMS Syarahan
Petrov M.I. guru kanan Seni grafik Makmal
Sidorov N.G. Rev. Maklumkan Syarahan
Sidorov N.G. Rev. Seni grafik Syarahan
Egorov V.V. Rev. PC Syarahan

nasi. 6.4. Sikap awal GURU

Lebihan tersirat menunjukkan dirinya dalam gaji yang sama untuk semua guru dan dalam bonus gaji yang sama untuk tempoh perkhidmatan yang sama. Jika gaji berubah dari 500 gosok. sehingga 510 rubel, maka nilai ini mesti diubah untuk semua guru. Jika Sidorov diabaikan, pangkalan data akan menjadi tidak konsisten. Ini ialah contoh anomali pengeditan hubungan dengan lebihan tersirat.

Penghapusan redundansi terdiri daripada menormalkan hubungan.

Kaedah bentuk normal ialah kaedah klasik untuk mereka bentuk pangkalan data hubungan. Ia berdasarkan konsep asas pergantungan antara sifat-sifat perhubungan.

Atribut B bergantung secara fungsional daripada atribut A, jika setiap nilai A sepadan dengan tepat satu nilai B. Secara matematik, pergantungan fungsi B pada A dilambangkan dengan tatatanda A ® B. Ini bermakna bahawa dalam semua tupel dengan nilai atribut a yang sama, ATRIBUT B JUGA AKAN MEMPUNYAI NILAI YANG SAMA. Atribut A dan B boleh menjadi komposit - terdiri daripada dua atau lebih atribut. Berhubung dengan Guru, tanggungan fungsi adalah seperti berikut: Nama Penuh ® Jabatan, Nama Penuh ® Tugas, Duti ® Gaji, dsb.

Saling bergantungan fungsional. Jika terdapat pergantungan fungsi bentuk A ® B dan B ® A, maka antara A dan B terdapat korespondensi satu dengan satu, atau saling kebergantungan berfungsi. Secara matematik, saling bergantung dilambangkan sebagai A "B atau B "A.

Contoh. Atribut N (siri dan nombor pasport) secara fungsional saling bergantung dengan atribut nama penuh (nama keluarga, nama pertama dan patronimik), jika diandaikan bahawa situasi kebetulan lengkap nama keluarga, nama pertama dan patronimik dua orang dikecualikan. .

Pergantungan fungsi separa Kebergantungan atribut bukan kunci pada bahagian kunci komposit dipanggil. Dalam hubungan Guru, kuncinya adalah komposit dan terdiri daripada atribut Nama Penuh, Subjek dan Kumpulan. Semua atribut bukan kunci bergantung secara fungsi pada kunci dengan tahap pergantungan yang berbeza-beza. Sebagai contoh, atribut Position bergantung pada atribut Nama Penuh, yang merupakan sebahagian daripada kunci, i.e. sebahagiannya bergantung kepada kunci.

Pergantungan fungsi penuh - Pergantungan atribut bukan kunci pada keseluruhan kunci komposit. Sebagai contoh, atribut ViewZan bergantung sepenuhnya pada kunci komposit.

Atribut C bergantung pada atribut A secara transitif (wujud pergantungan transitif ), jika untuk atribut A, B, C syarat A ® B dan B ® C dipenuhi, tetapi tiada hubungan songsang. Dalam contoh, atribut disambungkan oleh kebergantungan transitif:

Nama penuh ® Jawatan pekerjaan ® Gaji

Berhubung dengan R, atribut B banyak bergantung daripada atribut A jika setiap nilai A sepadan dengan set nilai B yang tidak dikaitkan dengan atribut lain daripada R. Kebergantungan berbilang nilai boleh menjadi satu-ke-banyak (1:M), banyak-ke-satu (M :1) atau banyak-ke-satu kepada ramai” (M:M), masing-masing dilambangkan: A Þ B, A Ü B dan A Û B.

Dalam contoh yang dipertimbangkan, terdapat hubungan M:M yang bernilai pelbagai antara atribut Nama Penuh Û Mata Pelajaran (seorang guru boleh mengajar beberapa mata pelajaran dan satu mata pelajaran boleh diajar oleh beberapa orang guru).

Oleh kerana pergantungan antara atribut adalah punca anomali, mereka cuba membahagikan hubungan tersebut kepada beberapa hubungan. Hasilnya, satu set hubungan berkaitan (jadual) dengan sambungan bentuk 1:1, 1:M, M:1 dan M:M terbentuk. Perhubungan antara jadual mencerminkan pergantungan antara atribut perhubungan yang berbeza.

Atribut saling bebas. Dua atau lebih atribut dikatakan saling bebas jika tiada satu pun atribut berfungsi bergantung pada atribut lain. Secara matematik, ketiadaan pergantungan atribut A pada atribut B dilambangkan sebagai A Ø® B. Jika A Ø® B dan B Ø® A berlaku, maka kebebasan bersama ditandakan A Ø = B.

Mengenal pasti kebergantungan antara atribut. Mengenal pasti kebergantungan antara atribut adalah perlu untuk melaksanakan reka bentuk pangkalan data menggunakan kaedah bentuk biasa.

Contoh. Biarkan hubungan R diberikan dengan skema R(A1, A2, A3) dalam bentuk:

A1 A2 A3

Adalah diketahui secara priori bahawa terdapat kebergantungan berfungsi:

A1®A2 dan A2®A3.

Daripada analisis jelas bahawa terdapat juga kebergantungan dalam hubungan:

A1®A3, A1A2®A3, A1A2A3®A1A2, A1A2®A2A3, dsb.

Dalam hubungan itu tidak ada pergantungan fungsi atribut A1 pada atribut A2 dan pada atribut A3, i.e.

A2 Ø® A1, A3 Ø® A1.

Ketiadaan pergantungan A1 pada A2 dijelaskan oleh fakta bahawa nilai atribut A2 (21) yang sama sepadan dengan nilai atribut A1 (12 dan 17) yang berbeza.

Semua kebergantungan fungsi sedia ada dalam hubungan adalah set penuh kebergantungan berfungsi , yang kita nyatakan dengan F + . Set lengkap kebergantungan fungsi boleh disimpulkan berdasarkan 8 aksiom inferens: pemantulan, penyiapan, transitiviti, lanjutan, penerusan, pseudotransitiviti, penyatuan dan penguraian.

Untuk perhubungan Guru, anda boleh memperoleh kebergantungan fungsi berikut:

Nama penuh ® Gaji

Nama penuh ® Kewajipan

Nama penuh ® Pengalaman

Nama penuh ® Nadb

Nama penuh ® Kaf

Pengalaman ® Nadb

Duty ® Gaji

Gaji ® Kewajipan

NAMA PENUH. Subjek Gaji Kumpulan ®

nasi. 6.5. Kebergantungan antara atribut.

Diandaikan bahawa seorang guru dalam satu kumpulan boleh mengendalikan satu jenis kelas (kuliah atau kerja makmal). Nama penuh – unik. Terdapat pergantungan Nama Penuh ® Pengalaman, tetapi pernyataan sebaliknya tidak benar, kerana Beberapa guru mempunyai pengalaman yang sama. Mengenai kebergantungan lain, alasannya adalah serupa. Hubungan satu dengan satu diwujudkan antara jawatan dan gaji.

Seorang guru dalam satu kumpulan dalam mata pelajaran yang berbeza boleh mengendalikan jenis kelas yang berbeza. Takrifan Jenis Pekerjaan dikaitkan dengan petunjuk nama penuh, subjek dan kumpulan. Sesungguhnya, Petrov M.I. dalam kumpulan ke-256 dia memberi kuliah dan mengendalikan kelas makmal, tetapi memberi kuliah tentang DBMS, dan kerja makmal mengenai Grafik.

Kebergantungan antara atribut Nama, Subjek dan Kumpulan tidak dipaparkan, kerana mereka membentuk kunci komposit dan tidak diambil kira dalam proses normalisasi hubungan (jadual).

Bentuk biasa. Proses mereka bentuk pangkalan data menggunakan bentuk biasa adalah berulang dan terdiri daripada memindahkan hubungan secara berurutan daripada bentuk normal pertama kepada bentuk normal peringkat tinggi. Setiap borang berikutnya mengehadkan jenis pergantungan fungsi tertentu, menghapuskan anomali yang sepadan apabila melaksanakan operasi pada hubungan pangkalan data dan mengekalkan sifat borang sebelumnya.

Urutan bentuk normal berikut dibezakan:

° Bentuk normal pertama (1NF);

° Bentuk normal kedua (2NF);

° Bentuk normal ketiga (3NF);

° Bentuk normal ketiga yang diperkukuh, atau bentuk normal Boyce-Codd (BCNF);

° Bentuk normal keempat (4NF);

° Bentuk normal kelima (5NF).

Bentuk normal pertama Hubungan berada dalam 1NF jika semua atributnya mudah (mempunyai satu nilai). Hubungan asal dibina sedemikian rupa sehingga ia berada dalam 1NF.

Transformasi hubungan ke dalam bentuk normal seterusnya dijalankan menggunakan kaedah "penguraian tanpa kerugian", i.e. pertanyaan (persampelan data mengikut keadaan) kepada hubungan asal dan kepada hubungan yang diperoleh hasil daripada penguraian harus memberikan hasil yang sama.

Operasi utama kaedah penguraian ialah operasi unjuran.

Contoh. Biarkan hubungan R(A,B,C,D,E,...) mempunyai kebergantungan fungsi C ® D. Penguraian hubungan R kepada dua hubungan baru R1(A, B,C,E,...) dan R2(C,D) akan menghapuskan pergantungan fungsi atribut dan memindahkan hubungan R ke bentuk normal seterusnya. Hubungan R2 ialah unjuran hubungan R pada atribut C dan D.

Hubungan asal Guru mempunyai kunci komposit Nama penuh, Subjek, Kumpulan dan berada dalam 1NF. Atribut Pengalaman, Nadb, Caf, Tugas, Gaji secara fungsinya bergantung pada sebahagian daripada kunci komposit - atribut Nama penuh. Kebergantungan separa ini membawa kepada lebihan data tersurat dan tersirat, yang menimbulkan masalah dengan penyuntingan data. Sebahagian daripada redundansi dihapuskan dengan menukar hubungan kepada 2NF.

Bentuk normal kedua. Sesuatu hubungan berada dalam 2NF jika ia berada dalam 1NF dan setiap atribut bukan kunci bergantung sepenuhnya pada kunci primer (komposit).

Untuk menghapuskan pergantungan separa, perlu menggunakan operasi unjuran, mengembangkan hubungan asal kepada beberapa hubungan seperti berikut:

° Bina unjuran tanpa atribut yang sebahagiannya bergantung pada kunci primer;

° Bina unjuran pada bahagian kunci utama komposit dan atribut yang bergantung pada bahagian ini.

Mari terjemahkan hubungan Guru kepada 2NF. Akibatnya, kami memperoleh dua hubungan R1 dan R2.

R1

Nama penuh Subjek Kumpulan VidZan
Ivanov I.M. DBMS Makmal
Ivanov I.M. Maklumkan Makmal
Petrov M.I. DBMS Syarahan
Petrov M.I. Seni grafik Makmal
Sidorov N.G. Maklumkan Syarahan
Sidorov N.G. Seni grafik Syarahan
Egorov V.V. PC Syarahan

nasi. 6.6. Perhubungan pangkalan data GURU dalam 2 SF

Dalam hubungan R1, kunci utama ialah komposit Nama penuh, Subjek, Kumpulan, berhubung dengan R2 kuncinya ialah NAMA PENUH. Akibatnya, lebihan data yang jelas tentang guru dihapuskan. Masih terdapat pertindihan data tersirat dalam R2.

Untuk penambahbaikan selanjutnya, kami akan menukar perhubungan kepada 3NF.

Kuliah 3. Konsep dan definisi umum. Klasifikasi fungsi. Had fungsi. Fungsi yang sangat kecil dan tidak terhingga besar. Teorem asas tentang fungsi infinitesimal.

Fungsi

Apabila menyelesaikan pelbagai masalah, anda biasanya perlu berurusan dengan kuantiti yang tetap dan berubah-ubah.

Definisi

Kuantiti malar ialah kuantiti yang mengekalkan nilai yang sama sama ada secara umum atau dalam proses tertentu: dalam kes kedua ia dipanggil parameter.

Kuantiti berubah ialah kuantiti yang boleh mengambil nilai berangka yang berbeza.

Konsep fungsi

Apabila mengkaji pelbagai fenomena, kita biasanya berurusan dengan satu set kuantiti pembolehubah yang saling berkaitan sedemikian rupa sehingga nilai beberapa kuantiti (pembolehubah bebas) sepenuhnya menentukan nilai yang lain (pembolehubah bersandar dan fungsi).

Definisi

Kuantiti pembolehubah y dipanggil fungsi (bernilai tunggal) bagi kuantiti pembolehubah x jika ia berkaitan antara satu sama lain sedemikian rupa sehingga setiap nilai x yang dipertimbangkan sepadan dengan satu nilai yang jelas bagi kuantiti y (dirumuskan oleh N.I. Lobachevsky).

Jawatan y=f(x) (1)

x– pembolehubah bebas atau hujah;

y– pembolehubah bersandar (fungsi);

f- ciri fungsi.

Set semua nilai pembolehubah bebas yang fungsinya ditakrifkan dipanggil domain definisi atau domain kewujudan fungsi ini. Domain definisi fungsi boleh menjadi: segmen, separuh selang, selang, atau keseluruhan paksi berangka.

Setiap nilai jejari sepadan dengan nilai kawasan bulatan. Luas ialah fungsi jejari yang ditakrifkan dalam selang tak terhingga

2. Fungsi (2). Fungsi yang ditakrifkan pada

Untuk menggambarkan tingkah laku fungsi, bina graf fungsi.

Definisi

Graf fungsi y=f(x) dipanggil set titik M(x,y) kapal terbang OXY, yang koordinatnya dikaitkan dengan pergantungan fungsi ini. Atau graf fungsi ialah garis yang persamaannya ialah kesamaan yang mentakrifkan fungsi tersebut.

Sebagai contoh, graf fungsi (2) ialah separuh bulatan berjejari 2 dengan pusatnya pada asalan.

Kebergantungan fungsi yang paling mudah

Mari kita lihat beberapa kebergantungan fungsi mudah

  1. Pergantungan fungsi langsung

Definisi

Dua pembolehubah dipanggil berkadar terus jika apabila salah satu daripadanya berubah dalam nisbah tertentu, yang lain berubah dalam nisbah yang sama.

y=kx, Di mana k– pekali perkadaran.

Graf fungsi

  1. Kebergantungan linear

Definisi

Dua kuantiti berubah dikaitkan dengan hubungan linear, jika , di mana beberapa kuantiti tetap.

Graf fungsi

  1. Hubungan berkadar songsang

Definisi

Dua pembolehubah dipanggil berkadar songsang jika apabila salah satu daripadanya berubah dalam beberapa nisbah, yang lain berubah dalam nisbah yang bertentangan.

  1. Pergantungan kuadratik

Pergantungan kuadratik dalam kes termudah mempunyai bentuk , di mana k ialah beberapa nilai tetap. Graf fungsi ialah parabola.

  1. Pergantungan sinusoidal.

Apabila mengkaji fenomena berkala, pergantungan sinusoidal memainkan peranan penting

- fungsi itu dipanggil harmonik.

A– amplitud;

Kekerapan;

Fasa permulaan.

Fungsinya adalah berkala dengan tempoh. Nilai fungsi pada titik x Dan x+T, berbeza mengikut tempoh, adalah sama.

Fungsi boleh dikurangkan kepada bentuk , Di mana. Dari sini kita dapati bahawa graf harmonik ialah sinusoid cacat dengan amplitud A dan tempoh T, dianjak sepanjang paksi OX mengikut jumlah

T

Kaedah untuk menentukan fungsi

Biasanya, tiga cara untuk menentukan fungsi dipertimbangkan: analitikal, jadual dan grafik.

  1. Kaedah analisis untuk menentukan fungsi

Jika fungsi dinyatakan menggunakan formula, maka ia dinyatakan secara analitik.

Sebagai contoh

Jika fungsi y=f(x) diberikan oleh formula, kemudian cirinya f menandakan set tindakan yang perlu dilakukan dalam susunan tertentu pada nilai hujah x untuk mendapatkan nilai fungsi yang sepadan.

Contoh . Tiga tindakan dilakukan pada nilai argumen.

  1. Kaedah jadual untuk menentukan fungsi

Kaedah ini mewujudkan korespondensi antara pembolehubah menggunakan jadual. Mengetahui ungkapan analisis fungsi, kita boleh mewakili fungsi ini untuk nilai hujah yang menarik minat kita menggunakan jadual.

Adakah mungkin untuk beralih dari tugasan fungsi jadual kepada ungkapan analitik?

Ambil perhatian bahawa jadual tidak memberikan semua nilai fungsi, dan nilai perantaraan fungsi hanya boleh didapati lebih kurang. Inilah yang dipanggil interpolasi fungsi. Oleh itu, dalam kes umum, adalah mustahil untuk mencari ungkapan analitikal yang tepat untuk fungsi menggunakan data jadual. Walau bagaimanapun, ia sentiasa mungkin untuk membina formula, dan lebih daripada satu, yang, untuk nilai hujah yang tersedia dalam jadual, akan memberikan nilai jadual fungsi yang sepadan. Formula jenis ini dipanggil interpolasi.

  1. Cara grafik untuk menentukan fungsi

Kaedah analisis dan jadual tidak memberikan idea yang jelas tentang fungsi tersebut.

Kaedah grafik untuk menentukan fungsi tidak mempunyai kelemahan ini. y=f(x), apabila korespondensi antara hujah x dan fungsi y ditetapkan menggunakan jadual.

Konsep fungsi tersirat

Fungsi dipanggil eksplisit jika ia diberikan oleh formula yang sebelah kanannya tidak mengandungi pembolehubah bersandar.

Fungsi y daripada hujah x dipanggil tersirat jika ia diberikan oleh persamaan

F(x,y)=0(1) tidak dapat diselesaikan mengenai pembolehubah bersandar.

Konsep fungsi songsang

Biarkan fungsi diberikan y=f(x)(1). Dengan menentukan nilai hujah x, kami memperoleh nilai fungsi y.

Ia mungkin, memandangkan y hujah, dan X– fungsi, tetapkan nilai y dan dapatkan nilai x. Dalam kes ini, persamaan (1) akan menentukan x, sebagai fungsi tersirat daripada y. Fungsi terakhir ini dipanggil terbalik berhubung dengan fungsi ini y.

Dengan mengandaikan bahawa persamaan (1) diselesaikan berkenaan dengan x, kita memperoleh ungkapan eksplisit untuk fungsi songsang

(2), di mana fungsi untuk semua nilai yang sah y memenuhi syarat

Pangkalan data hubungan mengandungi maklumat struktur dan semantik. Struktur pangkalan data ditentukan oleh bilangan dan jenis perhubungan yang terkandung di dalamnya, dan perhubungan satu-ke-banyak yang wujud antara tupel perhubungan ini. Bahagian semantik menerangkan set kebergantungan fungsi yang wujud antara atribut perhubungan ini. Mari kita tentukan pergantungan fungsi.

Definisi: Jika dua atribut X dan Y bagi sesetengah perhubungan diberikan, maka Y dikatakan berfungsi bergantung pada X jika pada bila-bila masa setiap nilai X sepadan dengan tepat satu nilai Y. Pergantungan fungsi dilambangkan dengan X -> Y. Ambil perhatian bahawa X dan Y boleh mewakili bukan sahaja atribut tunggal, tetapi juga kumpulan yang terdiri daripada beberapa atribut satu perhubungan. Kita boleh mengatakan bahawa kebergantungan berfungsi ialah hubungan satu-ke-banyak yang wujud dalam hubungan.

    Hubungan bentuk normal ke-2 (2NF). Penentuan pergantungan fungsi lengkap dan 2NF. Ciri-ciri perhubungan dalam 2NF. Algoritma untuk pengurangan kepada 2NF. Teorem Heath. Contoh.

Konseppergantungan fungsi sepenuhnya.

Definisi: atribut bukan kunci bergantung sepenuhnya secara fungsi daripada kunci komposit jika ia bergantung secara fungsi pada keseluruhan kunci secara keseluruhan, tetapi tidak bergantung secara fungsi pada mana-mana atribut konstituennya.

Definisi: pergantungan fungsi yang berlebihan- kebergantungan yang mengandungi maklumat yang boleh diperolehi berdasarkan kebergantungan lain yang terdapat dalam pangkalan data.

2NF - bentuk normal kedua.

Takrif bentuk normal kedua: hubungan dalam 2NF, jika ia berada dalam 1NF dan setiap atribut bukan kunci berfungsi bergantung sepenuhnya pada kunci.

Skema pangkalan data yang tidak mempunyai kebergantungan fungsi berlebihan dianggap betul. Jika tidak, anda perlu menggunakan prosedur penguraian (penguraian) set perhubungan yang sedia ada. Dalam kes ini, set yang dihasilkan mengandungi bilangan hubungan yang lebih besar, yang merupakan unjuran hubungan set asal. (Operasi unjuran diterangkan dalam bahagian algebra hubungan.) Proses langkah demi langkah yang boleh diterbalikkan untuk menggantikan set hubungan tertentu dengan skema lain, menghapuskan kebergantungan fungsi yang berlebihan, dipanggil normalisasi.

Keadaan keterbalikan memerlukan penguraian mengekalkan kesetaraan litar apabila menggantikan satu litar dengan yang lain, i.e. dalam hubungan yang terhasil:

1) tupel yang hilang sebelum ini tidak sepatutnya muncul;

2) perhubungan skema baharu mesti memenuhi set asal kebergantungan berfungsi.

Teorem Heath

Biarkan hubungan itu diberikan.

Jika r memenuhi pergantungan fungsi, maka ia adalah sama dengan kesatuan unjurannya dan

    Hubungan bentuk normal ke-3 (3NF). Takrif pergantungan transitif dan 3NF. Algoritma untuk pengurangan kepada 3NF. Boyce-Codd Normal Form (BCNF). Definisi dan algoritma untuk pengurangan kepada BCNF. Ciri-ciri perhubungan dalam 3NF dan dalam NFBC. Contoh.

Maklumat sentiasa mempunyai minat dinamik yang mencukupi. Perkembangan bahasa pengaturcaraan, pangkalan data hubungan dan teknologi maklumat telah mengubah secara radikal kandungan dan struktur yang diminati. Sistem idea yang ketat telah berkembang. Formalisasi, matematik tepat dan hubungan binari telah menjadi bidang pengetahuan dan pengalaman yang berjaya dan berkembang pesat.

Dunia semula jadi maklumat tidak mengubah dinamiknya dan, membangunkan kandungan dan struktur, telah meningkat ke tahap yang lebih tinggi. Ia mempunyai bentuk licin, dan tiada apa-apa dalam alam semula jadi "segi empat tepat". Maklumat, sudah tentu, sesuai dengan pemformalkan, tetapi ia mempunyai dinamik; bukan sahaja data dan algoritma untuk memprosesnya berubah, tetapi tugas itu sendiri dan kawasan aplikasinya berubah.

Maklumat > pemformalan >> data

Maklumat bertukar menjadi struktur maklumat, pangkalan data...) seperti yang dilihat oleh pengaturcara. Tidak ada jaminan bahawa visi ini adalah betul, tetapi jika programnya menyelesaikan masalah, maka data telah dibentangkan dengan sewajarnya yang mungkin.

Persoalan tentang seberapa betul maklumat itu diformalkan adalah masalah masa. Sehingga kini, konsep dinamik (penyesuaian diri kepada perubahan keadaan penggunaan) hanyalah impian pengaturcaraan.

Kebergantungan fungsi: "penyelesaian yang betul = program (pengaturcara)" dan syarat: "pematuhan berterusan dengan tugas" adalah sah dalam kebanyakan kes, tetapi hanya bersama-sama. Tetapi ini bukan asas matematik yang digunakan untuk mencipta pangkalan data.

Pernyataan langsung: dinamik semula jadi dan berterusan maklumat dan algoritma penyelesaian masalah sentiasa nyata. Dan ini adalah hubungan binari + matematik ketat + pembinaan formal yang tepat, + ...

dan pangkalan data

Cara data disimpan telah lama tidak penting: sama ada RAM atau peranti luaran. Komponen perkakasan telah mencapai kadar pembangunan yang stabil dan memberikan kualiti yang baik dalam jumlah yang besar.

Pilihan storan utama, berbeza dalam pilihan penggunaan data:

  • fail;
  • Pangkalan data.

Yang pertama diserahkan kepada pengaturcara (apa yang perlu ditulis, dalam format apa, bagaimana untuk melakukannya, bagaimana untuk membaca...), yang kedua segera membawa keperluan untuk memahami pergantungan fungsi yang mudah.

Kelajuan mendapatkan dan menulis maklumat apabila bekerja dengan fail (saiz yang munasabah, bukan astronomi) adalah sangat pantas, tetapi kelajuan operasi yang serupa dengan pangkalan data kadangkala boleh ketara perlahan.

Pengalaman peribadi dan kebijaksanaan kolektif

Terdapat percubaan sepanjang sejarah untuk melampaui had ini, tetapi sehingga hari ini pangkalan data hubungan berkuasa. Potensi teori yang hebat telah terkumpul, amalan aplikasi adalah meluas, dan pembangunnya sangat berkelayakan.

Pemaju pangkalan data mengenakan konsep pergantungan fungsi pada pengaturcara, walaupun dia tidak berhasrat untuk menggunakan pengalaman matematik dan logik yang kaya untuk membina struktur maklumat yang kompleks, proses bekerja dengan mereka, mendapatkan dan merekod maklumat.

Walaupun dalam kes paling mudah, pengaturcara bergantung pada logik pangkalan data yang dia pilih untuk bekerja. Tidak ada keinginan untuk mengikuti kanun, anda boleh menggunakan fail, anda akan mendapat banyak fail dan banyak pengalaman peribadi. Banyak masa peribadi akan diluangkan dan masalah itu akan diselesaikan dalam jangka masa yang panjang.

Tidak kira betapa rumitnya contoh pergantungan fungsi yang kelihatan, sama sekali tidak perlu untuk menyelami kedalaman makna dan logik. Selalunya harus diakui bahawa minda kolektif telah berjaya mencipta pangkalan data yang sangat baik dengan pelbagai saiz dan fungsi:

  • Oracle pepejal;
  • menuntut MS SQL Server;
  • MySQL yang popular.

Pangkalan data hubungan yang sangat baik dengan reputasi yang baik, mudah digunakan, pantas di tangan yang betul. Penggunaannya menjimatkan masa dan menghapuskan keperluan untuk menulis helaian tambahan kod tambahan.

Pengaturcaraan dan Ciri Data

Untuk masa yang lama, pengaturcaraan telah mengalami penyakit menulis semula sesuatu secara berterusan, mengulangi kerja pendahulu untuk entah bagaimana menyesuaikan sesuatu dengan maklumat yang berubah, tugas atau syarat penggunaannya.

Perkara tentang kebergantungan fungsi ialah, sama seperti dalam pengaturcaraan, kesilapan boleh menjadi sangat mahal. Tugasnya jarang mudah. Biasanya, semasa pemformalkan maklumat, perwakilan kompleks data diperolehi. Biasanya elemen mereka diasingkan, kemudian ia dipautkan oleh kunci ke dalam hubungan tertentu, kemudian algoritma untuk membentuk jadual, pertanyaan dan algoritma untuk mendapatkan maklumat diselaraskan.

Selalunya pengikatan kepada pengekodan adalah sangat penting. Tidak semua pangkalan data menawarkan penyelesaian mudah alih; anda selalunya boleh menemui bagaimana MySQL yang dikonfigurasikan dengan sempurna, di mana sedozen pangkalan data berasaskan, berfungsi dengan sempurna dan stabil, memaksa pembangun untuk menjadikan pangkalan data kesebelas serupa dengan yang telah wujud.

Ada kalanya pengehosan kongsi mengehadkan kefungsian PHP dan ini menjejaskan pengaturcaraan akses pangkalan data.

Dalam pengaturcaraan moden, tanggungjawab untuk algoritma program adalah bersamaan dengan tanggungjawab untuk mencipta model data. Segala-galanya sepatutnya berfungsi, tetapi anda tidak harus selalu terjun ke dalam hutan teori.

DB: pergantungan data mudah

Pertama sekali, konsep pangkalan data ialah pangkalan data, kedua-dua sistem pengurusan (contohnya, MySQL) dan struktur maklumat tertentu yang mencerminkan data tugas dan hubungan antara mereka. Satu pangkalan data MySQL "memegang" seberapa banyak struktur maklumat yang anda suka untuk pelbagai bidang aplikasi. Satu pangkalan data Oracle boleh menyokong proses maklumat syarikat atau bank besar, mengawal isu keselamatan dan integriti data pada tahap tertinggi, terletak pada banyak komputer yang terletak pada jarak yang berbeza, dalam persekitaran instrumental yang berbeza.

Secara amnya diterima bahawa hubungan adalah asas dalam model hubungan. Hubungan asas ialah satu set lajur dengan nama dan baris dengan nilai. Klasik "segi empat tepat"(jadual) - pencapaian kemajuan yang mudah dan berkesan. Kerumitan dan kebergantungan fungsi pangkalan data bermula apabila "segi empat tepat" mula menjalinkan hubungan antara satu sama lain.

Nama setiap lajur dalam setiap jadual mestilah unik dalam konteks tugasan. Data yang sama tidak boleh dalam dua jadual. Mengetahui maksud konsep:

  • “takrifkan entiti”;
  • "menghapuskan lebihan";
  • "memperbaiki hubungan";
  • "untuk memastikan keaslian."

Keperluan asas untuk menggunakan pangkalan data dan membina model data untuk tugas tertentu.

Pelanggaran mana-mana konsep ini bermakna kecekapan rendah algoritma, pensampelan data perlahan, kehilangan data dan masalah lain.

Pergantungan fungsional: logik dan makna

Anda tidak perlu membaca tentang tuple perhubungan, tentang fakta bahawa fungsi ialah korespondensi antara set hujah dan set nilai, dan fungsi bukan sahaja formula atau graf, tetapi boleh ditentukan oleh set nilai - jadual.

Ia tidak perlu, tetapi tidak salah untuk memikirkan kebergantungan berfungsi sebagai:

F(x1, x2, …, xN) = (y1, y2, …, yN).

Tetapi adalah penting untuk memahami bahawa input ialah jadual, dan output juga merupakan jadual atau penyelesaian khusus. Biasanya, kebergantungan berfungsi menetapkan logik perhubungan antara jadual, pertanyaan, keistimewaan, pencetus, prosedur tersimpan dan aspek lain (komponen) pangkalan data.

Biasanya, jadual ditukar kepada satu sama lain, kemudian kepada hasilnya. Tetapi penggunaan kebergantungan berfungsi tidak terhad kepada idea ini sahaja. Pengaturcara sendiri membina perwakilannya sendiri mengenai gambar data, struktur maklumat ... tidak kira apa yang anda panggil, tetapi jika ia berfungsi pada pangkalan data tertentu, ia mesti dibina mengikut logiknya, mengambil kira makna dan dialek bahasa yang digunakan, biasanya SQL.

Ia boleh dikatakan bahawa sifat kebergantungan fungsi pangkalan data boleh diakses melalui dialek bahasa SQL yang digunakan. Tetapi adalah lebih penting untuk difahami: selepas semua perubahan dalam pembangunan, tidak banyak pangkalan data yang terselamat, tetapi terdapat banyak dialek bahasa ini dan ciri struktur dalaman dalam pangkalan data juga.

Mengenai Excel lama yang bagus

Apabila komputer menunjukkan dirinya di sisi positif, dunia segera dibahagikan kepada pengaturcara dan pengguna. Sebagai peraturan, yang pertama menggunakan:

  • PHP, Perl, JavaScript, C++, Delphi.
  • MySQL, Oracle, Visual FoxPro.
  • Perkataan.
  • Excel.

Sesetengah pengguna berjaya mencipta pangkalan data dalam Word sendiri (tanpa bantuan pengaturcara) - ini adalah karut sebenar.

Pengalaman pengguna dalam Excel untuk mencipta pangkalan data adalah praktikal dan menarik. Yang penting ialah Excel itu sendiri berfungsi, berwarna-warni dan praktikal.

Idea jadual mentakrifkan konsep pergantungan fungsi dengan cara yang jelas dan boleh diakses, tetapi setiap pangkalan data mempunyai nuansa. Masing-masing mempunyai "wajah" sendiri tetapi semua orang dari Excel hingga Oracle memanipulasi petak mudah, iaitu jadual.

Jika anda menganggap bahawa Excel bukanlah pangkalan data sama sekali, tetapi ramai pengguna (bukan pengaturcara) menggunakannya dengan cara itu, dan Oracle ialah pencapaian paling kompleks dan berkuasa bagi pasukan pembangun yang besar dalam bidang pangkalan data, maka ia menjadi lumrah untuk mengakui bahawa pangkalan data ialah perwakilan pengaturcara tertentu (pasukan) tentang masalah tertentu dan penyelesaiannya.

Apakah pergantungan fungsi, dengan apa, di mana, mengapa... jelas hanya kepada pengarang atau pasukan daripada mereka.

Perihal Kemana Perhubungan Perhubungan Akan Dituju

Kemajuan saintifik dan teknologi adalah prosedur yang sangat menyakitkan, dan kadangkala kejam. Jika anda masih ingat bagaimana pangkalan data bermula, apa itu *.dbf, bagaimana mereka menstigma sibernetik, kemudian mereka jatuh cinta dengan sains komputer dan mula mencipta halangan kepada pergerakan teknologi tinggi di peringkat negara, menjadi jelas mengapa pangkalan data hubungan begitu tabah dan baik. Mengapa gaya pengaturcaraan klasik masih hidup pada hari ini, dan pengaturcaraan berorientasikan objek hanya dihargai, tetapi belum memerintah.

Tidak kira betapa cantiknya pergantungan fungsi dalam konteks matematik:

Ini bukan perhubungan binari, atau sebaliknya, ia adalah sebab untuk memikirkan semula idea mewujudkan hubungan antara banyak atribut, meneroka "satu-ke-banyak", "banyak-dengan-satu", "banyak-kepada- -banyak" atau "banyak secara umum dan beberapa khususnya" perhubungan.

Anda boleh menghasilkan pelbagai pilihan perhubungan yang hebat. Ia adalah matematik dengan logik, dan ia ketat! Maklumat adalah matematiknya sendiri, istimewa. Di dalamnya, seseorang hanya boleh bercakap tentang formaliti dengan tolak yang sangat besar.

Anda boleh memformalkan kerja jabatan HR, menulis sistem kawalan automatik untuk pengeluaran minyak atau pengeluaran susu, roti, membuat pilihan dalam pangkalan data besar Google, Yandex atau Rambler, tetapi hasilnya akan sentiasa statik dan sama pada setiap saat!

Jika pergantungan fungsi = logik yang ketat dan matematik = asas untuk pangkalan data, maka apakah jenis dinamik yang boleh kita bincangkan? Sebarang penyelesaian adalah formal, mana-mana model data formal + algoritma ketat = penyelesaian tepat dan tidak jelas. Maklumat dan skop mana-mana program sentiasa berubah.

Pemilihan enjin carian untuk frasa carian yang sama tidak boleh sama selepas satu atau dua jam, dan pastinya setiap hari - jika frasa carian tergolong dalam kawasan maklumat di mana bilangan tapak, sumber, pengetahuan, dan lain-lain unsur sentiasa berubah .

Walaupun program itu adalah matematik semata-mata dan pangkalan datanya tidak memikirkan tentang dinamik, semuanya sentiasa bergaris. Dan tali itu mempunyai panjang. Dan ia tidak boleh berkesudahan. Ia tidak boleh menjadi pembolehubah, hanya pembolehubah bersyarat. Antara lain, mana-mana pangkalan data, dengan alat birokrasi matematik dan binarinya, mengenakan banyak formaliti, dan ini bermakna kelajuan + kualiti pensampelan dan pemprosesan maklumat.

Dan jika medan tertentu dalam pangkalan data adalah nombor, terutamanya yang sebenar, maka sekatan berikut akan ditambah: kapasiti digit nombor, kehadiran huruf "e", format perwakilan - ringkasnya, di mana-mana dan sentiasa kita ada penting sifat pergantungan fungsi pangkalan data: rentetan panjang berubah bersyarat dengan banyak formaliti binari dan sekatan matematik yang ketat.

Jika anda menukar nada dan mendengar nadi dinamik, maka semuanya boleh dicat menjadi objek. Untuk anggaran pertama, nama lajur dalam jadual adalah objek, senarai nama juga objek, ringkasnya, jadual adalah objek pengepala dan di dalamnya nama lajur dalam pengepala. Dan mungkin tiada topi sama sekali...

Tetapi mungkin terdapat baris dalam jadual. Dan boleh ada nilai dalam rentetan. Dan kenapa mesti selalu ada bilangan yang sama? Meja persegi lengkap- ini adalah perkara tertentu, dan dalam kebanyakan kes, perkara peribadi.

Jika anda mewakili semua binaan dalam pangkalan data sebagai objek, maka mungkin anda tidak perlu membina hubungan binari yang ketat. Ini mempunyai makna semula jadi dan sebenar, jika hanya kerana ia, mengikut logik objektif (pasti bukan matematik), mencerminkan dinamik maklumat dan persekitaran di mana masalah wujud.

Atribut B bergantung secara fungsional daripada atribut A jika setiap nilai A sepadan dengan tepat satu nilai B.

Jawatan: A → B. Ini bermakna dalam semua tupel dengan nilai yang sama untuk atribut A, atribut B juga akan mempunyai nilai yang sama.

Jika terdapat pergantungan fungsi bentuk A→B dan B→A, maka antara A dan B ada surat-menyurat satu-satu, atau pergantungan fungsi. TENTANG

Jawatan: A↔B atau B↔A.

Jika hubungannya dalam 1NF, maka semua atribut bukan kunci bergantung secara fungsional pada kunci dengan tahap pergantungan yang berbeza-beza.

Pergantungan separa(pergantungan fungsi separa) – pergantungan atribut bukan kunci pada sebahagian kunci komposit.

Kebergantungan berfungsi penuh– pergantungan atribut bukan kunci pada keseluruhan kunci komposit.

Kebergantungan transitif

Atribut C bergantung pada atribut A secara transitif(wujud pergantungan transitif), jika syarat A→B dan B→C dipenuhi untuk atribut A, B, C, tiada hubungan songsang.

Ketagihan berbilang

Berhubung dengan R, atribut B banyak bergantung daripada atribut A, jika setiap nilai A sepadan dengan satu set nilai B yang tidak dikaitkan dengan atribut lain R.

Jawatan: A=>B, A<=B, A<=>B.

Atribut saling bebas

Dua atau lebih atribut dipanggil saling berdikari, jika tiada atribut ini bergantung secara fungsi pada atribut lain.

Jawatan: A →B, A=B.

Bentuk biasa:

    Bentuk normal pertama(1NF). Hubungan berada dalam 1NF jika semua atributnya mudah (mempunyai satu nilai).

    Bentuk normal kedua(2NF). Sesuatu perhubungan berada dalam 2NF jika ia berada dalam 1NF dan setiap atribut bukan kunci secara fungsional bergantung pada kunci primer (komposit).

    Bentuk normal ketiga(3NF). Sesuatu hubungan berada dalam 3NF jika dan hanya jika semua atribut hubungan itu saling bebas dan bergantung sepenuhnya pada kunci primer.

    Borang Boyce-Codd biasa(NFBC). Perhubungan berada dalam BCNF jika ia berada dalam 3NF dan tiada kebergantungan utama (atribut kunci komposit) pada atribut bukan kunci.

    Bentuk normal keempat(4NF). Suatu hubungan berada dalam 4NF jika dan hanya jika terdapat kebergantungan berbilang nilai A=>B, dan semua atribut lain hubungan tersebut secara fungsional bergantung pada A.

    Bentuk normal kelima(5NF). Sesuatu hubungan berada dalam 5NF jika ia berada dalam 4NF dan memenuhi kebergantungan sambungan berkenaan dengan unjurannya.

    Bentuk normal keenam(6NF). Sesuatu hubungan berada dalam 6NF jika dan hanya jika ia tidak boleh diuraikan lagi tanpa kehilangan.

    Memastikan ketekalan dan integriti data dalam pangkalan data

Jawab :

Integriti adalah hak milik pangkalan data, bermakna ia mengandungi maklumat yang lengkap, konsisten dan mencerminkan dengan secukupnya tentang bidang subjek.

Disana ada:

    Integriti fizikal– ketersediaan akses fizikal kepada data dan fakta bahawa data tidak hilang.

    Integriti logik– ketiadaan ralat logik dalam pangkalan data, yang termasuk pelanggaran struktur pangkalan data atau objeknya, pemadaman atau perubahan sambungan yang telah ditetapkan antara objek, dsb.

Mengekalkan integriti pangkalan data termasuk:

    Pemeriksaan integriti (pemantauan)

    Pemulihan sekiranya pengesanan ketidakkonsistenan dalam pangkalan data.

Keadaan kamiran ditentukan menggunakan kekangan integriti(syarat yang mesti dipenuhi oleh data). dua jenis kekangan integriti:

    Menyekat Nilai Atribut Perhubungan. Sebagai contoh: keperluan ketidakbolehterimaan nilai NULL, ketidakbolehterimaan nilai pendua dalam atribut, kawalan kepunyaan nilai atribut ke julat tertentu.

    Kekangan Struktur pada Tuple Hubungan. Mentakrifkan keperluan integriti entiti dan integriti rujukan.

Keperluan integriti entiti ialah mana-mana tuple sesuatu hubungan mestilah berbeza daripada mana-mana tuple hubungan itu, dengan kata lain, sebarang perhubungan mesti ada kunci utama.

Keperluan integriti rujukan ialah untuk setiap nilai kunci asing dalam jadual induk, mesti ada baris dalam jadual anak dengan nilai kunci utama yang sama.

    Kaedah perhubungan entiti

Jawab :

Kaedah perhubungan entiti(kaedah gambarajah ER) ialah kaedah berdasarkan penggunaan gambar rajah yang dipanggil, masing-masing, gambar rajah contoh ER dan gambar rajah jenis ER.

Konsep asas

Intipati– ini adalah objek, maklumat tentang yang disimpan dalam pangkalan data.

Atribut adalah harta sesuatu entiti.

Kunci Entiti ialah atribut (set atribut) yang digunakan untuk mengenal pasti kejadian entiti.

Sambungan antara entiti ialah pergantungan antara atribut entiti ini.

Grafik, digunakan untuk kejelasan dan kemudahan reka bentuk:

    Gambar rajahER-salinan;

    Gambar rajahER-jenis atau ER-rajah.

Berdasarkan analisis rajah ER, hubungan pangkalan data yang direka bentuk terbentuk. Ini mengambil kira tahap hubungan antara entiti dan kelas kepunyaan mereka.

Darjah sambungan– ini adalah ciri perhubungan antara entiti (1:1, 1:M; M:1; M:M).

Kelas keahlian entiti boleh: wajib Dan pilihan.

Diperlukan– jika semua kejadian entiti semestinya mengambil bahagian dalam perhubungan yang dipersoalkan.

Pilihan– tidak semua kejadian mengambil bahagian dalam sambungan yang dipersoalkan.

    Peringkat Reka Bentuk Pangkalan Data

Jawab :

saya. Rekabentuk konsep– pengumpulan, analisis dan penyuntingan keperluan data.

Sasaran: mencipta model data konsep berdasarkan pemahaman pengguna tentang bidang subjek.

Prosedur:

    Menentukan entiti dan mendokumentasikannya;

    Menentukan hubungan antara entiti dan mendokumentasikannya;

    Mencipta model domain;

    Menentukan nilai atribut;

    Menentukan kunci utama untuk entiti.

II. Reka bentuk logik– struktur data dicipta berdasarkan model konseptual.

Sasaran: transformasi model konsep berdasarkan model data yang dipilih kepada model logik, bebas daripada ciri-ciri DBMS yang kemudiannya digunakan untuk pelaksanaan fizikal pangkalan data.

Prosedur:

    Memilih model data;

    Menentukan set jadual dan mendokumentasikannya;

    Normalisasi jadual;

    Tentukan keperluan untuk mengekalkan integriti data dan dokumentasikannya.

III. Reka bentuk fizikal– penentuan ciri data dan kaedah capaian.

Tujuan: perihalan pelaksanaan khusus pangkalan data, penempatan dalam memori luaran komputer.

Prosedur:

    Reka bentuk jadual pangkalan data;

    Reka bentuk organisasi fizikal pangkalan data;

    Pembangunan strategi perlindungan pangkalan data.

    Kitaran hayat pangkalan data

Jawab :

Kitaran hayat pangkalan data ialah proses mereka bentuk, melaksana dan menyelenggara sistem pangkalan data.

Peringkat kitaran hayat pangkalan data:

    Analisis– analisis bidang subjek dan pengenalpastian keperluan untuknya, penilaian perkaitan sistem.

    Reka bentuk– penciptaan struktur pangkalan data logik, penerangan fungsi model program dan permintaan maklumat.

    Perlaksanaan– pembangunan perisian untuk pangkalan data, ujian dijalankan.

    Eksploitasi Dan iringan.

Peringkat kitaran hayat pangkalan data:

    pra-perancangan– perancangan pangkalan data, pelaksanaan pelan pembangunan pangkalan data strategik (apa aplikasi yang digunakan, apakah fungsi yang mereka lakukan, apakah fail yang dikaitkan dengan setiap aplikasi ini dan apakah fail dan aplikasi baharu dalam proses pembangunan).

    Semakan kebolehlaksanaan– pengesahan kebolehlaksanaan teknologi, operasi dan ekonomi.

    Menentukan Keperluan– pemilihan tujuan pangkalan data, pengenalpastian keperluan maklumat untuk pangkalan data, keperluan untuk peralatan dan perisian, penentuan keperluan pengguna.

    Rekabentuk konsep– penciptaan gambar rajah konseptual.

    Perlaksanaan– membawa model konseptual ke dalam pangkalan data berfungsi.

    Memilih dan membeli DBMS yang diperlukan.

    Menukar model konseptual kepada model logik dan fizikal.

    Berdasarkan model maklumat, skema data untuk DBMS tertentu dibina.

    Ia ditentukan proses aplikasi mana yang perlu dilaksanakan sebagai prosedur tersimpan.

    Laksanakan sekatan yang direka untuk memastikan integriti data.

    Pencetus reka bentuk.

    Membangunkan strategi pengindeksan dan pengelompokan, anggaran saiz jadual, kelompok dan indeks.

    Tentukan tahap akses pengguna, bangun dan laksanakan peraturan keselamatan.

    Membangunkan topologi rangkaian untuk pangkalan data.

    Mencipta kamus data.

    Mengisi pangkalan data.

    Penciptaan perisian aplikasi, kawalan pengurusan.

    Latihan pengguna.

    Penilaian dan penambahbaikan skema pangkalan data.

    Peraturan untuk membentuk hubungan

Jawab :

Peraturan pembentukan perhubungan adalah berdasarkan mengambil kira perkara berikut:

    Tahap hubungan antara entiti (1:1, 1:M, M:1, M:M);

    Kelas keahlian kejadian entiti (diperlukan dan pilihan).