3.1 Normalisasi database

Wangun normal minangka properti saka relasi ing model data relasional sing menehi ciri babagan redundansi, sing bisa nyebabake asil sampling utawa owah-owahan logis sing salah. Wangun normal ditetepake minangka seperangkat syarat sing kudu dipenuhi hubungan (tabel ing basis data).

Proses ngonversi hubungan database menyang formulir sing cocog karo formulir normal diarani normalisasi. Normalisasi dimaksudaké kanggo nggawa struktur database menyang wangun sing menehi minimal redundansi logis , lan ora dimaksudaké kanggo ngurangi utawa nambah kinerja, utawa ngurangi utawa nambah volume fisik saka database .

Tujuan utama normalisasi yaiku nyuda potensial inkonsistensi informasi sing disimpen ing basis data. Tujuan umum saka proses normalisasi yaiku:

  • pengecualian jinis redundansi tartamtu;
  • ndandani sawetara anomali nganyari;
  • pangembangan proyek database sing cukup "berkualitas" perwakilan saka donya nyata, intuisi lan bisa dadi basis apik kanggo expansion sakteruse;
  • nyederhanakake prosedur kanggo ngetrapake watesan integritas sing dibutuhake.

Redundansi biasane diilangi kanthi ngurai relasi kanthi cara sing mung fakta primer sing disimpen ing saben relasi (yaiku fakta sing ora ditemokake saka fakta sing disimpen liyane).

Nalika ide normalisasi migunani banget kanggo desain basis data, nanging dudu cara universal utawa lengkap kanggo ningkatake kualitas desain database. Iki amarga kasunyatan manawa ana macem-macem kemungkinan kesalahan lan kekurangan ing struktur database sing ora bisa diilangi kanthi normalisasi.

Senadyan pertimbangan kasebut, téori normalisasi minangka prestasi téori lan praktik relasional sing larang banget, amarga menehi kritéria ilmiah sing ketat lan cukup kanggo kualitas proyek basis data lan cara formal kanggo ningkatake kualitas iki. Iki ndadekake teori normalisasi metu saka pendekatan desain empiris murni sing ditawakake ing model data liyane. Kajaba iku, bisa didudut yen ing kabeh bidang teknologi informasi praktis ora ana cara kanggo ngevaluasi lan ningkatake solusi desain sing bisa dibandhingake karo teori normalisasi basis data relasional babagan tingkat kaku formal.

Normalisasi kadhangkala dikritik kanthi alesan "iku mung akal sehat" lan profesional sing kompeten bakal "alami" ngrancang database sing dinormalisasi kanthi lengkap tanpa kudu ngetrapake teori dependensi.

Nanging, minangka Profesor Christopher Date nyathet, normalisasi sabenere prinsip akal sehat sing nuntun desainer diwasa ing pikirane, yaiku, prinsip normalisasi wis formalisasi akal sehat . Sauntara kuwi, ngenali lan ngresmikake prinsip akal sehat minangka tugas sing angel banget, lan sukses ngrampungake iku minangka prestasi sing signifikan.

3.2 Wangun normal pisanan

First normal form (1NF) minangka wangun normal dhasar saka relasi ing model data relasional.

Variabel relasi ana ing wangun normal pisanan yen lan mung yen, ing sembarang nilai sing valid saka variabel kasebut, saben tuple relasi ngemot persis siji nilai kanggo saben atribut.

Ing model relasional, relasi tansah ing wangun normal pisanan, kanthi definisi konsep relasi.

Kanggo macem-macem tabel, bisa uga ora dadi representasi hubungan sing bener lan, kanthi mangkono, bisa uga ora ana ing 1NF. Miturut definisi Christopher Date kanggo kasus kaya mengkono, tabel dinormalisasi (padha, ing wangun normal pisanan) yen lan mung yen perwakilan langsung lan bener saka sawetara hubungan. Luwih khusus, tabel kasebut kudu nyukupi limang syarat ing ngisor iki:

  • Ora ana urutan larik saka ndhuwur nganti ngisor (ing tembung liya, urutan larik ora menehi informasi apa-apa).
  • Ora ana urutan kolom kiwa-tengen (kanthi tembung liya, urutan kolom ora nggawa informasi).
  • Ora ana duplikat garis.
  • Saben persimpangan baris lan kolom ngemot persis siji nilai saka domain sing cocog (lan ora liya).
  • Kabeh kolom "biasa".

"Keteraturan" kabeh kolom tabel tegese ora ana komponen "didhelikake" ing tabel sing mung bisa diakses ing panjalukan sawetara operator khusus tinimbang ngrujuk menyang jeneng kolom biasa, utawa sing nyebabake efek samping kanggo larik. utawa tabel nalika ngundang operator standar.

Tabel asli sing ora dinormalisasi (yaiku, dudu perwakilan sing bener saka sawetara hubungan) tabel:

pegawe nomer telpon
Ivanov I.I.

283-56-82

390-57-34

Petrov P.P. 708-62-34
Sidorov S.S.

Tabel dikurangi dadi 1NF, sing minangka perwakilan sing bener saka sawetara hubungan:

pegawe nomer telpon
Ivanov I.I. 283-56-82
Ivanov I.I. 390-57-34
Petrov P.P. 708-62-34

3.3 Wangun normal kapindho

Variabel relasi ana ing wangun normal kaloro yen lan mung yen ana ing wangun normal pisanan lan saben atribut non-kunci gumantung banget marang (saben) kunci calon .

Irreducibility tegese kunci potensial ora ngemot subset atribut sing luwih cilik sing bisa uga gumantung saka fungsi kasebut. Kanggo ketergantungan fungsional sing ora bisa dikurangi, konsep sing padha karo "ketergantungan fungsional lengkap" asring digunakake.

Yen kunci kandidat prasaja, yaiku, kalebu siji atribut, mula katergantungan fungsional kasebut ora bisa dikurangi (lengkap). Yen kunci kandidat minangka kunci gabungan, banjur, miturut definisi wangun normal kapindho, kudu ora ana atribut non-tombol ing hubungan sing gumantung ing bagean saka kunci calon gabungan.

Conto ngowahi relasi menyang wangun normal kapindho

Ayo pasangan atribut {Cabang Perusahaan, Posisi} dadi kunci utama ing hubungan ing ngisor iki:

R
Cabang perusahaan Jeneng pegawean gaji Kasedhiyan saka komputer
Cabang ing Tomsk luwih resik 20000 Ora
Cabang ing Moscow Programmer 40000 mangan
Cabang ing Tomsk Programmer 25000 mangan

Ayo dadi ngomong sing gaji gumantung ing cabang lan posisi, lan kasedhiyan komputer mung gumantung ing posisi.

Ana katergantungan fungsi Posisi -> Duwe komputer, kang sisih kiwa (determinant) mung bagean saka tombol utami, kang nerak kondisi saka wangun normal kapindho.

Kanggo nyuda dadi 2NF, hubungan asli kudu diurai dadi rong hubungan:

R1
Cabang perusahaan Jeneng pegawean gaji
Cabang ing Tomsk luwih resik 20000
Cabang ing Moscow Programmer 40000
Cabang ing Tomsk Programmer 25000
R2
Jeneng pegawean Kasedhiyan saka komputer
luwih resik Ora
Programmer mangan
Programmer mangan

3.4 Bentuk normal katelu (3NF)

Variabel relasi R ana ing 3NF yen lan mung yen kondisi ing ngisor iki bener:

  • Ring wangun normal kapindho.
  • ora ana atribut non-kunciRora ana ing katergantungan fungsi transitif ing kunci calonR.

Panjelasan kanggo definisi:

Atribut non-key saka relasi R yaiku atribut sing ora kalebu ing salah sawijining kunci calon R.

Katergantungan fungsional saka set atribut Z ing set atribut X (ditulis X → Z, diucapake "x nemtokake z") minangka transitif yen ana set atribut Y sing X → Y lan Y → Z. kasus, ora ana set X, Y lan Z dudu subset saka liyane, yaiku dependensi fungsional X → Z, X → Y, lan Y → Z ora sepele, lan uga ora ana dependensi fungsional Y → X.

Dhéfinisi 3NF, padha karo Codd nanging diucapake kanthi cara sing beda, diwenehake dening Carlo Zaniolo ing taun 1982. Miturut iku, variabel relasi ana ing 3NF yen lan mung yen saben dependensi fungsional X → A nyukupi paling ora siji saka kondisi ing ngisor iki:

  • X ngandhut A (yaiku, X → A minangka ketergantungan fungsional sing ora pati penting)
  • X - tombol super
  • A minangka atribut kunci (yaiku, A minangka bagean saka kunci kandidat).

Definisi Zaniolo kanthi jelas nemtokake beda antarane 3NF lan Formulir Normal Boyce-Codd (BCNF): BCNF ora kalebu kondisi katelu ("A minangka atribut kunci").

A ringkesan paweling lan tradisional deskriptif definisi 3NF Codd diwenehi dening Bill Kent: saben atribut non-tombol "kudu menehi informasi bab tombol, tombol lengkap, lan ora ana apa-apa nanging tombol ".

Kawontenan gumantung ing "kunci lengkap" atribut non-tombol mesthekake yen hubungan ing wangun normal kapindho; lan kondisi kanggo wong-wong mau gumantung ing "apa-apa nanging tombol" iku padha ing wangun normal katelu.

Chris Date ngandika ringkesan Kent minangka "fitur intuisi atraktif" saka 3NF, lan mirsani sing, karo modifikasi tipis, iku uga bisa dadi definisi saka wangun normal Boyce-Codd ketat: "saben atribut kudu nyedhiyani informasi bab tombol. , tombol lengkap, lan ora ana apa-apa kajaba tombol.

Versi Kent saka definisi 3NF kurang ketat tinimbang Boyce-Codd versi normal saka formulasi Data, wiwit mantan mung nyatakake yen atribut non-tombol gumantung ing tombol.

Atribut-atribut utami (yaiku kunci utawa bagéan saka wong-wong mau) ora perlu gumantung ing fungsi; saben-saben menehi informasi babagan kunci kanthi nyedhiyakake kunci kasebut dhewe utawa bagean kasebut. Perlu dicathet ing kene yen aturan iki mung ditrapake kanggo atribut non-key, amarga aplikasi kasebut ing kabeh atribut bakal mateni kabeh tombol alternatif sing kompleks, amarga saben unsur kunci kasebut bakal nglanggar kondisi "kunci lengkap".

Coba variabel relasi R1 minangka conto:

R1
pegawe Departemen Telpon
Grishin Akuntansi 11-22-33
Vasiliev Akuntansi 11-22-33
Petrov Pasokan 44-55-66

Saben pegawe belongs istimewa kanggo siji departemen; saben departemen duwe telpon siji. Atribut Karyawan minangka kunci utama. Karyawan ora duwe telpon pribadi, lan nomer telpon karyawan gumantung mung ing departemen.

Ing conto, ana dependensi fungsional ing ngisor iki: Karyawan → Departemen, Departemen → Telpon, Karyawan → Telpon.

Variabel hubungan R1 ana ing wangun normal kapindho amarga saben atribut nduweni ketergantungan fungsional sing ora bisa dikurangi ing karyawan kunci potensial.

Hubungane Karyawan → Telpon iku transitif, mula hubungane ora ana ing wangun normal katelu.

Pemisahan R1 ngasilake rong variabel hubungan sing ana ing 3NF:

R2
Departemen Telpon
Akuntansi 11-22-33
Pasokan 44-55-66

R3
pegawe Departemen
Grishin Akuntansi
Vasiliev Akuntansi
Petrov Pasokan

Hubungan awal R1, yen perlu, gampang dipikolehi minangka asil operasi gabung karo hubungan R2 lan R3.