Apakah maksud istilah integriti data? Integriti pangkalan data. Integriti data semantik

Integriti data dan prosedur tersimpan

Dengan istilah "integriti data" kami bermaksud keadaan pangkalan data apabila semua data yang disimpan di dalamnya adalah betul. Jika data yang salah disimpan dalam pangkalan data, maka integriti data tersebut dikatakan hilang. Dalam bahagian ini kami akan menerangkan pelbagai kaedah mengekalkan integriti data dan jenis integriti yang ditakrifkan dalam pangkalan data Pelayan SQL, serta pelbagai jenis sekatan yang berfungsi untuk melaksanakan integriti data dan cara untuk melaksanakan sekatan ini dalam pangkalan data.

DALAM Jadual SQL Pelayan boleh ditakrifkan dengan beberapa sifat jenis yang berbeza untuk memastikan integriti data. Ini termasuk jenis data, definisi BUKAN NULL Dan lalai, hartanah IDENTITI, kekangan, peraturan, pencetus dan indeks.

Dalam bahagian ini, kita akan mempelajari tentang semua kaedah integriti data ini dan jenis integriti data yang disokong oleh SQL Server. Kami juga akan menumpukan sedikit masa pelbagai jenis integriti data, termasuk entiti, domain, rujukan, dan integriti yang ditentukan pengguna.

Memastikan integriti data memastikan kualiti data. Mari kita anggap bahawa kita telah mencipta jadual dalam pangkalan data Orang. Nilai lajur PersonId mesti mengenal pasti secara unik setiap orang yang maklumatnya dimasukkan dalam jadual. Oleh itu, jika nilai PersonId untuk orang tertentu ialah 834, maka untuk orang lain nilai ini tidak boleh sama. Seterusnya, andaikan terdapat lajur Penarafan Orang, yang menentukan penarafan orang - dalam julat dari 1 hingga 10. Dalam kes ini, lajur Penarafan Orang tidak boleh menerima nombor 11 atau sebarang nilai selain daripada nombor dari 1 hingga 10. Dalam kedua-dua kes, anda harus menggunakan salah satu kaedah yang disokong oleh SQL Server untuk memastikan integriti data.

Antara kaedah SQL Server yang direka untuk memastikan integriti data ialah definisi BUKAN NULL Dan lalai, hartanah IDENTITI, kekangan, peraturan, pencetus dan indeks. Sebahagian daripada mereka telah disebutkan, mereka diberikan di sini Penerangan Ringkas. Beberapa sifat jadual, seperti definisi BUKAN NULL Dan lalai, kadangkala dianggap sebagai jenis kekangan khas. Walau bagaimanapun, selaras dengan objektif kursus kami, ia dianggap secara berasingan daripada sekatan.

Jenis data ialah atribut yang menentukan jenis (karakter, integer, perduaan, dsb.) data yang boleh disimpan dalam medan, parameter atau pembolehubah. SQL Server menyokong beberapa jenis data sistem dari mana anda boleh membuat jenis data tersuai. Jenis data sistem mentakrifkan semua jenis data yang boleh digunakan dalam SQL Server. Jenis memastikan integriti data kerana data input mesti sepadan dengan jenis yang ditentukan untuk objek.



Sebagai contoh, anda tidak boleh menyimpan nama keluarga dalam lajur yang mempunyai jenis data yang ditentukan masa tarikh, kerana lajur dengan jenis data ini hanya menerima tarikh.

Dengan menetapkan medan untuk membenarkan nilai nol, kami menentukan sama ada lajur jadual itu boleh menyimpan nilai nol. Nilai nol selain sifar, ruang atau rentetan aksara panjang sifar, contohnya "". Nilai kosong bermakna tiada maklumat telah dimasukkan, iaitu nilai tidak diketahui atau tidak ditentukan. Keupayaan untuk memasukkan nilai nol ke dalam lajur ditentukan apabila lajur ditakrifkan semasa pembuatan jadual atau pengubahsuaian jadual. Kerana kerumitan yang dikaitkan dengan pengendalian nilai nol dalam SQL Server, anda harus sentiasa menggunakan kata kunci untuk menentukan kedua-dua lajur yang boleh dibatalkan dan tidak boleh dibatalkan. NULL atau BUKAN NULL. Jika lajur membenarkan nilai nol, gunakan kata kunci NULL, jika tidak - BUKAN NULL.

Nilai lalai menentukan nilai yang akan digunakan jika nilai medan tidak ditentukan semasa menambah baris. Definisi lalai dibuat apabila mentakrifkan jadual (sebagai sebahagian daripada definisi itu) atau ditambahkan pada jadual sedia ada. Hanya satu DEFAULT dibenarkan setiap lajur.

Dalam mana-mana jadual, anda dibenarkan membuat satu lajur yang mengandungi nilai jujukan yang dijana sistem yang mengenal pasti secara unik setiap baris dalam jadual. Nilai lajur ID biasanya unik dalam jadual di mana ia ditakrifkan. Dalam erti kata lain, ada kemungkinan nilai lajur pengecam mungkin sama dalam jadual yang berbeza. Walau bagaimanapun, situasi sedemikian biasanya tidak menimbulkan masalah kerana nilai ID biasanya digunakan dalam konteks jadual yang sama, dan lajur ID daripada jadual berbeza tidak berkaitan.

Kekangan membolehkan anda menentukan cara SQL Server secara automatik menguatkuasakan integriti data. Kekangan mentakrifkan peraturan yang menyemak nilai lajur yang sah dan merupakan mekanisme integriti standard. Kekangan adalah lebih baik daripada pencetus, peraturan atau lalai. Ia juga digunakan oleh pengoptimum pertanyaan untuk membuat rancangan pertanyaan berprestasi tinggi.

Peraturan melaksanakan beberapa fungsi yang serupa dengan fungsi sekatan SEMAK, dan digunakan untuk memastikan keserasian dengan versi sebelumnya. Adalah lebih baik untuk menggunakan sekatan SEMAK, yang dengan cara yang standard sekatan nilai medan. Di samping itu, sekatan SEMAK lebih jelas daripada peraturan. Hanya satu peraturan boleh digunakan pada lajur, manakala berbilang sekatan boleh ditakrifkan pada satu lajur. SEMAK. Sekatan SEMAK dinyatakan sebagai sebahagian daripada operator BUAT JADUAL, sedangkan peraturan dibuat sebagai objek individu, yang kemudiannya diikat pada lajur.

Mula-mula anda perlu membuat peraturan menggunakan pengendali BUAT PERATURAN. Selepas itu, menggunakan prosedur tersimpan sistem sp_bindrule ia terikat pada lajur atau jenis tersuai data. Ketahui lebih lanjut tentang penggunaan BUAT PERATURAN atau sp_bindrule- dalam rujukan Transact-SQL dalam Buku Pelayan SQL Dalam Talian.

Pencetus ialah kelas khas prosedur tersimpan yang dilaksanakan secara automatik apabila penyataan dilaksanakan KEMASKINI, INSERT atau PADAM untuk meja atau pandangan. Pencetus adalah alat yang berkuasa, digunakan untuk melaksanakan logik perniagaan secara automatik apabila mengubah suai data. Pencetus boleh melanjutkan logik semakan integriti yang disediakan oleh kekangan, lalai dan peraturan SQL Server (walaupun apabila kekangan boleh menyediakan fungsi yang diperlukan, ia harus digunakan dan bukannya pencetus).

Indeks ialah struktur yang menyusun nilai satu atau lebih lajur jadual dalam pangkalan data. Indeks memberikan penunjuk kepada nilai yang disimpan dalam lajur jadual tertentu dan kemudian menyusunnya mengikut susunan isihan yang ditentukan. Penggunaan indeks oleh pangkalan data sama seperti meminta pembaca indeks mata pelajaran buku: ia melihat melalui indeks untuk nilai tertentu, dan kemudian menggunakan indeks untuk mencari baris yang mengandungi nilai yang diperlukan. Indeks unik memastikan bahawa nilai lajur adalah unik.

Jenis Integriti Data

SQL Server menyokong empat jenis integriti data: entiti, domain, rujukan dan integriti yang ditentukan pengguna.

Sesetengah sumber mentakrifkan lebih (atau kurang) empat jenis integriti data. Walau bagaimanapun, empat jenis yang disenaraikan secara amnya dianggap sebagai jenis utama integriti data.

Integriti yang penting

Jenis integriti ini mentakrifkan baris jadual sebagai contoh unik bagi sesetengah entiti. Integriti entiti memastikan integriti lajur pengecam atau kunci utama jadual (melalui indeks, kekangan UNIK, KUNCI UTAMA atau harta benda IDENTITI).

Integriti domain

Jenis integriti ini memastikan bahawa lajur tertentu mengandungi nilai yang sah sahaja. Anda boleh memastikan integriti domain dengan mengehadkan jenis (melalui jenis data), format (menggunakan kekangan SEMAK dan peraturan) atau julat nilai yang boleh diterima (menggunakan Sekatan ASING KEY dan CHECK, takrifan lalai, BUKAN takrifan dan peraturan NULL).

Integriti rujukan

Jenis integriti ini memastikan bahawa hubungan antara jadual dipelihara apabila rekod ditambah atau dipadamkan. Dalam SQL Server, integriti rujukan adalah berdasarkan hubungan antara kunci asing dan utama atau antara kunci asing dan unik (melalui kekangan KUNCI ASING Dan SEMAK). Integriti rujukan memastikan bahawa nilai utama merentas jadual berkaitan adalah konsisten. Konsistensi ini memerlukan tiada rujukan kepada nilai yang tidak wujud dan rujukan kepada kunci di seluruh pangkalan data berubah secara konsisten apabila kunci itu sendiri berubah.

Apabila memastikan integriti rujukan, SQL Server menghalang pengguna daripada melakukan perkara berikut:

Menambah rekod pada jadual berkaitan jika rekod yang diperlukan tiada dalam jadual utama;

Menukar nilai dalam jadual utama, yang akan mengakibatkan rekod "terperangkap" dalam jadual berkaitan;

Mengalih keluar rekod daripada jadual utama jika terdapat rekod berkaitan dalam jadual luaran.

DARI pembinaan

reka bentuk DARI mesti diletakkan dalam setiap penyata PILIH, yang mendapatkan semula data daripada jadual atau paparan. Konstruk ini membolehkan anda menentukan senarai jadual dan pandangan yang lajurnya dirujuk oleh senarai pilih dan binaan DI MANA. Jadual dan pandangan ini boleh diberikan alias dalam binaan AS. Reka bentuk DARI, sebagai tambahan, membolehkan anda untuk menyertai jadual dengan menyatakan syarat-syarat gabungan dalam struktur SERTAI.

Reka bentuk DARI ialah senarai nama jadual, paparan dan binaan SERTAI, dipisahkan dengan koma. Dalam contoh berikut, dalam pernyataan PILIH reka bentuk DARI mentakrifkan jadual Orang:

PILIH * DARI Orang

reka bentuk DARI juga digunakan untuk menentukan cantuman antara dua jadual atau pandangan. Sambungan dibincangkan dengan lebih terperinci dalam bahagian seterusnya.

klausa WHERE, GROUP BY, dan HAVING

Dalam operator PILIH reka bentuk DI MANA Dan MEMPUNYAI tentukan baris jadual sumber yang diperlukan untuk membina set hasil. Pembinaan DI MANA Dan MEMPUNYAI memainkan peranan sebagai penapis. Mereka menentukan set keadaan carian: hanya baris yang sepadan dengan keadaan carian dipilih untuk membina set hasil. Sebagai contoh, dalam kenyataan PILIH reka bentuk DI MANA hanya mengembalikan baris di mana bandar Krasnoyarsk dinyatakan sebagai tempat kelahiran seseorang:

PILIH PersonId, Nama Akhir, Nama Pertama

WHERE Tempat Lahir = "Krasnoyarsk"

Reka bentuk MEMPUNYAI, biasanya (tetapi tidak semestinya) digunakan bersama dengan pembinaan KUMPULAN OLEH. Reka bentuk MEMPUNYAI menentukan penapis tambahan yang digunakan selepas penapisan yang ditakrifkan oleh konstruk selesai DI MANA. Dalam skrip berikut dalam penyata PILIH reka bentuk yang digunakan DI MANA, KUMPULAN OLEH Dan MEMPUNYAI:

PILIH OrdD1OrderId SEBAGAI OrderId,

SUM(OrdD1.Quantity) SEBAGAI "Unit Dijual",

SUM(OrdD1.UnitPrice * OrdD1.Quantity) SEBAGAI Hasil

DARI SEBAGAI OrdD1

DI MANA OrdD1OrderId DALAM (PILIH DISTINCT OrdD2.OrderId

DARI SEBAGAI OrdD2

DI MANA OrdD2.UnitPrice > $1000)

KUMPULAN OLEH OrdD1.OrderId

MEMPUNYAI JUMLAH(OrdD1.Kuantiti) > 50

Inilah reka bentuknya DI MANA mengembalikan pesanan yang berharga lebih daripada $1000, dan kemudian reka bentuk MEMPUNYAI mengehadkan keputusan dengan memilih pesanan untuk lebih daripada 50 unit barang. Reka bentuk KUMPULAN OLEH mengehadkan baris untuk setiap nilai medan tertentu OrderId.

KUMPULAN MENGIKUT klausa

Reka bentuk KUMPULAN OLEH digunakan untuk mendapatkan jumlah nilai dalam setiap baris set hasil. Apabila menggunakan operator PILIH tanpa reka bentuk KUMPULAN OLEH fungsi agregat pulangkan hanya satu nilai akhir.

Selepas kata kunci KUMPULAN OLEH mengikuti senarai lajur, yang dipanggil lajur pengelompokan. Reka bentuk KUMPULAN OLEH mengehadkan baris set hasil. Hanya satu baris yang mungkin untuk setiap nilai khusus lajur atau lajur kumpulan. Setiap baris set hasil mengandungi jumlah yang dikaitkan dengan beberapa nilai dalam lajur pengumpulannya.

Jika dalam operator PILIH ada reka bentuk KUMPULAN OLEH SQL Server meletakkan sekatan pada item senarai terpilih. Senarai pilih hanya boleh mengandungi lajur pengelompokan dan ungkapan yang hanya mengembalikan satu nilai untuk setiap nilai lajur pengumpulan, seperti fungsi agregat (agregat vektor) yang mempunyai nama lajur sebagai salah satu parameternya.

Biasanya, reka bentuk MEMPUNYAI digunakan dengan reka bentuk KUMPULAN OLEH, walaupun ia boleh digunakan secara berasingan. Sebarang ungkapan boleh menjadi ungkapan kumpulan selagi ia tidak mengandungi fungsi agregat.

Dalam reka bentuk KUMPULAN OLEH anda mesti menentukan nama lajur jadual atau lihat, bukan nama lajur set hasil yang diberikan menggunakan konstruk AS.

Dalam reka bentuk KUMPULAN OLEH Ia dibenarkan untuk menentukan beberapa lajur sebagai kumpulan bersarang, iaitu, untuk mengumpulkan jadual menggunakan sebarang gabungan lajur.

Memahami urutan yang betul dalam penggunaan konstruk DI MANA, KUMPULAN OLEH Dan MEMPUNYAI, membantu mencipta pertanyaan yang agak cekap:

Reka bentuk DI MANA menapis baris yang merupakan hasil daripada operasi yang dinyatakan dalam klausa FROM;

Reka bentuk maklumat output DI MANA dikumpulkan mengikut reka bentuk KUMPULAN OLEH;

Baris hasil terkumpul ditapis melalui konstruk MEMPUNYAI.

Sebarang syarat carian yang dibenarkan untuk digunakan sebelum dan selepas operasi pengumpulan hendaklah dinyatakan dalam pembinaan DI MANA. Dengan cara ini anda boleh mengurangkan bilangan baris yang perlu dikumpulkan. Dalam reka bentuk MEMPUNYAI Anda hanya perlu menentukan istilah carian yang perlu digunakan selepas operasi pengumpulan selesai.

URUTAN MENGIKUT klausa

Reka bentuk PERINTAH OLEH mengisih hasil pertanyaan mengikut satu atau lebih medan. Isih boleh sama ada menaik ( A.S.C.), dan dalam tertib menurun ( DESC). Jika tiada jenis isihan ditentukan, lalainya ialah A.S.C.. Jika dalam reka bentuk PERINTAH OLEH Beberapa lajur dinamakan dan isihan bersarang dilakukan.

Pernyataan berikut mengisih baris sesuatu jadual Orang pertama dengan nama akhir (menurun), kemudian dengan nama pertama (menaik, untuk setiap orang) dan akhirnya mengikut umur (juga menaik, kerana parameter tidak ditentukan DESC).

PILIH PersonId, Nama Akhir, Nama Pertama, Umur

PESANAN OLEH LastName DESC, FirstName, Age

Pakej, prosedur tersimpan dan pencetus

Beg plastik ialah sekumpulan satu atau lebih pernyataan Transact-SQL yang dihantar secara serentak oleh aplikasi ke SQL Server untuk dilaksanakan. SQL Server menyusun pernyataan kelompok ke dalam satu unit boleh laku ( rancangan pelaksanaanPelan Perlaksanaan). Selepas ini, pengendali pelan ini dilaksanakan secara bergilir-gilir.

Ralat kompilasi, seperti ralat sintaks, menghentikan proses penyusunan pelan pelaksanaan. Dalam kes ini, tiada satu pun penyata pakej akan dilaksanakan.

Ralat masa jalan, seperti limpahan aritmetik atau pelanggaran kekangan, boleh menyebabkan salah satu akibat berikut:

Kebanyakan ralat masa jalan menghentikan pelaksanaan kenyataan semasa dan seterusnya dalam kelompok;

Beberapa ralat masa jalan, seperti pelanggaran kekangan, menghentikan pelaksanaan hanya pernyataan semasa. Dalam kes ini, semua kenyataan pakej lain akan dilaksanakan.

Pernyataan yang dilaksanakan sebelum pernyataan yang menyebabkan ralat masa jalan tidak terjejas oleh ralat itu. Satu-satunya pengecualian ialah jika kumpulan itu adalah urus niaga, maka jika ralat berlaku, urus niaga itu digulung semula. Tindakan ini membatalkan semua pengubahsuaian tanpa komitmen yang dibuat sebelum ralat masa jalan berlaku.

Sebagai contoh, pakej terdiri daripada 3 pernyataan. Jika dalam pernyataan kedua dibenarkan ralat sintaks, tiada satu pun penyata kelompok akan dilaksanakan. Jika pakej sudah disusun dan pelaksanaan pernyataan kedua gagal, maka keputusan pernyataan pertama kekal tidak berubah (kerana ia telah diperolehi).

Peraturan berikut digunakan semasa memproses paket:

Operator BUAT LALAI, BUAT PROSEDUR, BUAT PERATURAN, BUAT PENCETUS Dan CIPTA PANDANGAN tidak boleh wujud bersama dalam pakej dengan pengendali lain. Paket mesti bermula dengan pernyataan CIPTA. Semua pernyataan berikutnya akan ditafsirkan sebagai sebahagian daripada definisi yang dicipta oleh pernyataan pertama CIPTA;

Dalam pakej yang sama, anda tidak boleh mengubah suai jadual dan mengakses lajur baharu;

Jika pengendali MELAKSANAKAN- penyataan pertama pakej, kata kunci EXECUTE tidak diperlukan. Tetapi ia adalah perlu apabila pengendali MELAKSANAKAN bukan pernyataan pertama pakej.

Jadi, paket ialah koleksi satu atau lebih pernyataan yang dihantar oleh pelanggan sebagai kumpulan tunggal. Apabila menyusun setiap pakej, satu pelan pelaksanaan diperolehi. Jika pakej terdiri daripada beberapa pernyataan SQL, maka satu pelan pelaksanaan tunggal dibentuk daripada semua langkah yang dioptimumkan yang diperlukan untuk melaksanakan setiap pernyataan.

Terdapat beberapa cara untuk menentukan pakej.

Semua pernyataan SQL yang dihantar oleh aplikasi ke pelayan sebagai unit pelaksanaan membentuk pakej tunggal dan menjana satu pelan pelaksanaan.

Semua pernyataan dalam prosedur tersimpan atau pencetus membentuk satu pakej. Apabila mana-mana prosedur tersimpan atau pencetus disusun, ia menghasilkan satu pelan pelaksanaan tunggal.

Rentetan diproses oleh pengendali MELAKSANAKAN, ditafsirkan sebagai pakej yang, apabila disusun, menghasilkan satu pelan pelaksanaan tunggal.

Rentetan dilaksanakan oleh prosedur tersimpan sistem sp_executesql, ialah pakej yang, apabila disusun, menghasilkan satu pelan pelaksanaan tunggal.

Jika permohonan menghantar paket yang mengandungi penyata MELAKSANAKAN, pelan pelaksanaan untuk rentetan atau prosedur tersimpan yang sedang diproses dilaksanakan secara berasingan daripada pelan pelaksanaan pernyataan MELAKSANAKAN. Pelan pelaksanaan dijana untuk baris yang prosedur tersimpan melaksanakan sp_executesql, juga akan diasingkan daripada pelan pelaksanaan seluruh pakej yang terdapat panggilan prosedur sp_executesql.

Jika pernyataan pakej memanggil pencetus, pelan pelaksanaan pencetus dilaksanakan secara berasingan daripada pelan pelaksanaan pakej asal.

Sebagai contoh, pakej yang mengandungi empat pernyataan berikut menghasilkan lima rancangan pelaksanaan:

Operator MELAKSANAKAN melaksanakan prosedur tersimpan;

Memanggil prosedur sp_executesql untuk memproses rentetan;

Operator MELAKSANAKAN, memproses rentetan;

Operator KEMASKINI, yang merujuk kepada jadual yang mempunyai pencetus kemas kini.

Prosedur Pertama EXEC

EXEC sp_executesql N"SELECT * FROM AdventureWorks.HumanResources.Employee

WHERE ManagerID = @level",

N"@level tinyint",

SET PersonName = "kuku"

Prosedur tersimpan ialah sekumpulan pernyataan Transact-SQL yang disusun sekali dan kemudian boleh dilaksanakan berkali-kali. Fungsi ini meningkatkan prestasi dengan menghapuskan keperluan untuk menyusun semula pernyataan Transact-SQL.

Pencetus ialah jenis prosedur tersimpan khas yang pengguna tidak memanggil secara langsung. Apabila mencipta pencetus, syarat pelaksanaannya ditentukan: pencetus mesti dilaksanakan apabila pengubahsuaian tertentu data dalam jadual atau lajur tertentu.

Operator BUAT PROSEDUR Dan BUAT PENCETUS tidak boleh ditempatkan dalam berbilang pakej. Dalam erti kata lain, prosedur tersimpan atau pencetus sentiasa dibuat dalam satu pakej dan disusun ke dalam pelan pelaksanaan.

SQL Server hanya menyimpan teks asal prosedur tersimpan dan pencetus. Apabila prosedur tersimpan atau pencetus dilaksanakan buat kali pertama, kod sumber disusun ke dalam pelan pelaksanaan. Jika prosedur tersimpan atau pencetus dilaksanakan semula sebelum pelan pelaksanaan menjadi lapuk dan dialih keluar daripada ingatan, enjin hubungan mengesan pelan sedia ada dan menggunakannya semula. Jika pelan itu sudah lapuk dan dikeluarkan daripada ingatan, a rancangan baru perlaksanaan. Proses ini mengingatkan pemprosesan SQL Pelayan semua pernyataan SQL. Peningkatan prestasi apabila menggunakan prosedur tersimpan dan pencetus adalah disebabkan oleh kegigihan pernyataan SQL mereka, yang membolehkan SQL Server menggunakan rancangan pelaksanaan sedia ada untuk mereka.

DALAM versi sebelumnya Dalam SQL Server, peningkatan prestasi apabila menggunakan prosedur tersimpan amat ketara. Lagi versi awal SQL Server tidak cuba menggunakan semula pelan pelaksanaan untuk pakej yang tidak disimpan sebagai prosedur atau pencetus. Satu-satunya cara guna semula rancangan pelaksanaan melibatkan pengaturcaraan pernyataan SQL sebagai prosedur tersimpan.

Pelan pelaksanaan prosedur tersimpan dan pencetus dilaksanakan secara berasingan daripada pelan pelaksanaan pakej yang memanggil prosedur tersimpan atau pencetus. Ciri ini membolehkan anda menggunakan semula pelan pelaksanaan dengan lebih kerap untuk prosedur dan pencetus yang disimpan.

Integriti Pangkalan Data - Amalan ini akan memastikan data yang disimpan dalam pangkalan data adalah tepat, konsisten dan bebas daripada ralat. Kesilapan kecil dalam ejaan atau pengulangan maklumat boleh menyebabkan masalah besar untuk pangkalan data, jadi integriti pangkalan data adalah isu yang serius. Terdapat tiga kekangan integriti—integriti entiti, integriti domain dan integriti rujukan. Bersama-sama dengan tiga sekatan ini, normalisasi dan semakan ralat digunakan untuk memastikan integriti. Kebanyakan proses ini adalah automatik, tetapi pentadbir sering juga menyemak secara manual untuk memastikan tiada ralat dalam pangkalan data.
Apabila pentadbir ingin menambah, menukar atau memadam maklumat daripada pangkalan data, integriti pangkalan data mesti disahkan. Memasukkan atau menukar sebarang maklumat boleh membawa bencana kerana data boleh memberi kesan yang meluas pada jadual dan sekatan lain dalam pangkalan data. Untuk mengurangkan kemungkinan ini, dan untuk memastikan maklumat yang sudah ada dalam pangkalan data tepat, integriti pangkalan data sentiasa diperiksa sebelum sebarang perubahan boleh dibuat.

Integriti Entiti adalah kekangan pertama untuk memastikan integriti pangkalan data. Ini menyemak jadual yang pentadbir ingin bekerjasama dan melihat nama baris. Jika baris dalam jadual yang sama mempunyai nama yang sama, ia boleh mencipta maklumat berlebihan yang mengelirukan seluruh pangkalan data.

Seterusnya datang integriti domain. Ini menyemak jenis data yang kemudiannya ditambahkan pada bahagian jadual atau menyediakan data baharu yang sepadan dengan jenis data tersebut. Sebagai contoh, jika jadual mengandungi hanya tarikh dan seseorang cuba memasukkan perkataan, proses integriti domain akan memaklumkan pentadbir tentang ralat konsistensi. Ini kerana ia hanya bertujuan untuk mengendalikan tarikh, jadi perkataan itu boleh merosakkan pemprosesan biasa dan boleh membawa kepada ralat pada masa hadapan.

Kekangan ketiga terhadap integriti pangkalan data ialah integriti data. Jadual dalam pangkalan data jarang bersendirian - jadual lain sering merujuknya, dan ia merujuk kepada jadual lain. Jika pentadbir telah memasukkan arahan untuk satu jadual merujuk kepada yang lain, tetapi data dalam jadual kedua tidak betul atau tidak wujud, ini membawa kepada ralat pemprosesan. Integriti rujukan menyemak semua rujukan sama ada ia sah atau tidak.

Selain tiga isu integriti ini, peraturan normalisasi dan semakan ralat juga digunakan untuk integriti sebenar pangkalan data. Normalisasi mencari maklumat berlebihan dan rekod panjang yang tidak perlu, menghapuskan lebihan dan menggantikan rekod panjang dengan berbilang baris pendek. Ralat menyemak, menganalisis pangkalan data untuk mana-mana yang lain kesilapan yang mungkin dan menjamin bahawa semua maklumat adalah sah.

Integriti pangkalan data ialah pematuhan maklumat dalam pangkalan data dengan logik dalaman, struktur dan semua peraturan yang dinyatakan secara eksplisit. Setiap peraturan yang mengenakan beberapa sekatan ke atas keadaan yang mungkin pangkalan data dipanggil kekangan integriti.

Integriti pangkalan data tidak menjamin kebolehpercayaan maklumat yang terkandung di dalamnya, tetapi ia menyediakan, menurut sekurang-kurangnya, kredibiliti maklumat ini, menolak nilai yang jelas luar biasa dan mustahil. Oleh itu, integriti pangkalan data tidak boleh dikelirukan dengan kebolehpercayaan pangkalan data. Kebolehpercayaan (atau kebenaran) ialah korespondensi fakta yang disimpan dalam pangkalan data dengan dunia nyata. Jelas sekali, untuk menentukan kebolehpercayaan pangkalan data, adalah perlu untuk mempunyai pengetahuan penuh kedua-duanya mengenai kandungan pangkalan data dan tentang dunia sebenar. Untuk menentukan integriti pangkalan data, anda hanya perlu mempunyai pengetahuan tentang kandungan pangkalan data dan peraturan yang ditetapkan untuknya. Oleh itu, DBMS boleh (dan harus) mengawal integriti pangkalan data, tetapi pada asasnya tidak dapat mengawal kebolehpercayaan pangkalan data. Memantau kebolehpercayaan pangkalan data hanya boleh diamanahkan kepada seseorang, dan walaupun pada skala yang terhad, kerana dalam beberapa kes orang juga tidak mempunyai pengetahuan lengkap tentang dunia sebenar.

Satu daripada tugas paling penting Masalah yang diselesaikan oleh DBMS adalah untuk mengekalkan pada bila-bila masa ketekalan bersama, ketepatan dan ketepatan data yang disimpan dalam pangkalan data. Proses ini dipanggil jaminan integriti pangkalan data.

Adalah perlu untuk membezakan antara masalah memastikan integriti pangkalan data dan melindungi pangkalan data daripada capaian yang tidak dibenarkan . Mengekalkan integriti pangkalan data boleh ditafsirkan sebagai melindungi data daripada tindakan yang salah pengguna atau beberapa pengaruh luaran rawak. Dalam kedua-dua situasi, pelanggaran integriti pangkalan data adalah tidak disengajakan.

Integriti pangkalan data mungkin terjejas akibat kegagalan perkakasan; ralat perisian dalam DBMS, sistem operasi atau program permohonan; tindakan pengguna yang salah. Situasi ini boleh berlaku walaupun dalam sistem yang diuji dan berfungsi dengan baik, walaupun terdapat sistem kawalan. Oleh itu, DBMS mesti mempunyai cara untuk mengesan situasi sedemikian dan memulihkan keadaan pangkalan data yang betul.

Integriti pangkalan data dikekalkan melalui satu set peraturan logik khas yang dikenakan ke atas data, dipanggil kekangan integriti. Kekangan integriti ialah kenyataan tentang nilai yang boleh diterima bagi unit maklumat individu dan hubungan antara mereka. Kekangan integriti disimpan dalam kamus pangkalan data.

Memastikan integriti data memastikan kualiti data dalam jadual.

Apabila merancang jadual terdapat dua langkah penting: Tentukan nilai yang sah untuk lajur dan tentukan cara memastikan integriti data dalam lajur itu. Integriti data dibahagikan kepada kategori berikut:

  • 1. Integriti entiti -- mentakrifkan baris sebagai entiti unik dalam jadual tertentu. Ia memastikan integriti lajur identiti atau kunci utama jadual menggunakan indeks dan Sekatan yang UNIK atau KUNCI UTAMA.
  • 2. Integriti domain ialah kebolehpercayaan rekod dalam lajur tertentu. Ia termasuk kekangan jenis data, kekangan format menggunakan kekangan dan peraturan CHECK, dan kekangan pada julat nilai yang mungkin menggunakan FOREIGN KEY, CHECK, kekangan DEFAULT, NOT NULL takrifan dan peraturan.
  • 3. Integriti rujukan -- mengekalkan perhubungan tertentu antara jadual apabila baris ditambah atau dipadamkan.

Dalam SQL Server, integriti rujukan adalah berdasarkan hubungan antara primer dan kunci asing(atau kunci asing dan unik) dan dikuatkuasakan menggunakan KEY ASING dan kekangan SEMAK. Integriti rujukan memastikan bahawa nilai utama adalah konsisten merentas semua jadual. Jenis integriti ini memerlukan nilai yang tidak wujud tidak dirujuk dan juga memastikan rujukan berubah secara konsisten di seluruh pangkalan data apabila nilai utama berubah.

Apabila memastikan integriti rujukan, SQL Server tidak membenarkan langkah seterusnya pengguna:

  • - Menambah atau menukar baris dalam jadual yang berkaitan jika tiada baris yang sepadan dalam jadual utama;
  • - Perubahan dalam nilai dalam jadual utama, yang membawa kepada baris yatim dalam jadual yang berkaitan;
  • - Memadam baris daripada jadual utama jika terdapat baris yang sepadan dalam jadual berkaitan.
  • 4. Integriti tersuai - membolehkan anda menentukan peraturan perniagaan yang tidak termasuk dalam mana-mana kategori integriti. Integriti tersuai disokong oleh semua kategori integriti lain: sebarang jenis kekangan peringkat lajur dan peringkat jadual dalam kenyataan CREATE TABLE, prosedur tersimpan dan pencetus.

kekangan integriti rujukan semantik

Semasa pembangunan serpihan sistem informasi V DBMS MySQL Masalah timbul untuk memastikan integriti data. Mari kita pertimbangkan konsep integriti.

Integriti ialah keadaan data apabila mereka mengekalkan kandungan maklumat dan tafsiran yang tidak jelas di bawah keadaan pengaruh rawak.

Ayat yang menerangkan integriti data dipanggil kekangan integriti.

Pelaksanaan sekatan integriti data dianggap sebagai melindungi data daripada ralat yang tidak disengajakan (herotan atau pemusnahan secara tidak sengaja) dan pencegahannya, iaitu, sebagai pelaksanaan fungsi perlindungan data seperti keselamatan. Oleh itu, masalah integriti adalah untuk memastikan bahawa data dalam pangkalan data adalah betul sepanjang masa. Walau bagaimanapun, matlamat ini hanya boleh dicapai dalam had tertentu. Khususnya, sistem tidak dapat mengawal ketepatan setiap nilai individu yang dimasukkan ke dalam pangkalan data (walaupun ia boleh disemak untuk kebolehpercayaan). Walau bagaimanapun, walaupun terdapat pengecualian, adalah perlu untuk memastikan kemungkinan sokongan darjat tinggi integriti dalam pangkalan data. Mengekalkan integriti harus dianggap sebagai melindungi data daripada perubahan atau kemusnahan yang tidak sesuai (berbanding dengan haram).

Integriti data semantik

Integriti data semantik - syarat yang perlu berfungsi mana-mana jenis sistem maklumat. Berikut ialah senarai sekatan utama pada integriti semantik. Sebagai contoh, mari kita pilih pangkalan data "Salon", yang terdiri daripada jadual seperti "Pelanggan", "Tuan", "Perkhidmatan" perenggan ini menyediakan cara teori untuk melaksanakan satu atau satu lagi kekangan integriti. Bab II akan membincangkan dengan lebih terperinci cara-cara praktikal pelaksanaan jenis sekatan integriti data di atas.

Setiap objek masuk model hubungan data dicirikan oleh pengecam yang diberikan kunci utama, unik dalam makna. Dalam hal ini, semasa operasi IS, integriti data dipastikan dengan membandingkan nilai kunci utama input dengan yang tersedia dalam pangkalan data dan, jika nilainya sepadan, melarang penambahan rekod dengan kunci utama yang sama.

Mari kita berikan contoh: biarkan dalam pangkalan data "Salon" dalam jadual "Pelanggan" terdapat objek "Pelanggan", dicirikan oleh set sifat tertentu bergantung pada tugas maklumat. Sebagai kunci utama, anda boleh memilih harta seperti "nombor siri dan pasport" atau "id pelanggan". V dalam kes ini kunci utama adalah komposit, kerana siri atau nombor pasport yang berasingan bukanlah nilai unik, dan kunci "id pelanggan" boleh sama ada komposit atau ringkas.

Dalam banyak kes, adalah perlu untuk menyemak keunikan nilai sifat yang tidak diberikan oleh pengecam, dan dalam kes ini mereka bercakap tentang penugasan atribut kunci yang mungkin. Untuk objek "Pelanggan", kunci yang mungkin boleh menjadi atribut seperti "nombor kad bank" atau "nombor kad bonus pelanggan." Jenis kekangan ini, seperti semakan integriti kunci utama, adalah berstruktur, dikawal dengan menyemak kesamaan data input dan data sedia ada.

Satu lagi jenis kekangan integriti ialah kekangan pada nilai sebenar yang terkandung dalam pangkalan data. Terdapat beberapa subjenis sekatan ini:

1) Nilai yang sah terletak di selang yang diberikan. Kekangan ini mengandaikan bahawa nilai harta berada dalam julat tertentu nilai. Katakan di salon kecantikan terdapat had umur untuk pekerja: tuan tidak boleh berumur kurang dari 20 tahun dan lebih tua daripada 50 tahun. Oleh itu, kekangan integriti kelihatan seperti ini: "Untuk setiap objek kelas "Master", nilai atribut "umur" adalah dalam lingkungan 20-50 tahun."

2) Nilai atribut boleh dikira. Apabila menambah atau mengedit data, anda digesa untuk memilih nilai medan tertentu daripada senarai, tetapi tambah nilai eigen dilarang. Dalam pangkalan data kami, atribut seperti jantina pelanggan dalam jadual Pelanggan boleh dikira. Sekatan ini dibentuk dengan menyenaraikan semua nilai yang mungkin dan melarang kemasukan orang lain.

3) Nilai atribut boleh dikira secara bersyarat: data dipilih daripada senarai, dan adalah mungkin untuk menambah elemen pada senarai. Memohon had ini integriti kepada atribut "nama perkhidmatan" jadual "Perkhidmatan", kami memperoleh rumusan berikut: "Nilai sifat "nama perkhidmatan" boleh dikira secara bersyarat dan boleh mengambil sama ada nilai sewenang-wenangnya atau salah satu daripada senarai yang dijana berdasarkan kemasukan nilai unik data yang telah dimasukkan untuk harta yang ditentukan” .

4) Sekatan format: data mempunyai definisi yang ketat penampilan. Had ini digunakan lebih kerap daripada yang lain, kerana ia berkaitan terutamanya dengan jenis data yang terkandung dalam atribut. Berikut ialah contoh beberapa jenis sekatan integriti format:

Nilai sifat "nama keluarga", "nama pertama", "patronymic" mempunyai bentuk berikut: aksara pertama - huruf besar Cyrillic, yang seterusnya - huruf kecil. Memasukkan nombor tidak dibenarkan.

Format tarikh lahir pelanggan dan tuan, tarikh melawat salon, serta cuti atau cuti sakit yang diberikan kepada tuan adalah DD/MM/YY.

5) Larangan pada NULL - nilai atribut. Jenis sekatan ini digunakan terutamanya pada pengecam objek, yang merupakan kunci utama, serta pada sifat tersebut nilai kosong yang tidak boleh diterima.

Sebagai contoh, sebagai tambahan kepada pengecam, nilai kosong untuk medan seperti nama penuh pelanggan atau induk, atau ketiadaan maklumat mengenai perkhidmatan yang diberikan kepada pelanggan apabila menunjukkan jumlah kos yang dibayar oleh pelanggan, adalah tidak boleh diterima. .

6) Sekatan ke atas nilai bidang berkaitan semantik. Dalam kes ini, syarat tertentu dikenakan ke atas mereka atau kebergantungan berfungsi. Oleh itu, dalam pangkalan data kami, nilai medan "tarikh mula bercuti" dan "tarikh tamat percutian" adalah berkaitan secara semantik: tarikh pertama adalah kurang daripada yang kedua. Dalam kes ini, kekangan integriti harus dirumuskan dalam borang berikut: : “Bagi setiap objek kelas tertentu, antara nilai sifat C1 dan C2 syarat berikut mesti sentiasa dipenuhi: C1<С2».

Aspek penting dalam melaksanakan kekangan integriti semantik ialah beberapa jenis kekangan boleh dikenakan secara serentak ke atas nilai harta. Sebagai contoh, nilai harta "umur" dalam jadual "Master" mempunyai sekatan pada selang (20-50 tahun), pada format, ia juga mungkin untuk memilih nilai dari senarai selang.

Integriti data bermaksud data adalah betul dan konsisten. Biasanya ia juga termasuk integriti perhubungan, yang menghalang ralat dalam perhubungan antara kunci primer dan sekunder. Contoh pelanggaran integriti data:

  • kewujudan rekod anak yatim (rekod kanak-kanak yang tiada kaitan dengan rekod ibu bapa);
  • kewujudan kunci primer yang sama.

Kriptografi menggunakan fungsi cincang untuk menyemak integriti data, seperti MD5. Fungsi cincang menukarkan jujukan bait saiz sewenang-wenangnya kepada jujukan bait saiz tetap (nombor). Jika data berubah, nombor yang dijana oleh fungsi cincang juga akan berubah.

Integriti data ialah sifat di mana data mengekalkan bentuk dan kualiti yang telah ditetapkan.

Definisi daripada piawaian

Konsep itu " integriti objek“(Integriti Inggeris) digunakan sebagai istilah dalam teori keselamatan maklumat (IS). Objek difahami sebagai maklumat, data khusus atau sumber sistem automatik. Integriti maklumat (sebagai sumber sistem automatik) adalah salah satu daripada tiga sifat utama objek keselamatan maklumat. Sifat objek keselamatan maklumat:

  • ketersediaan (eng. ketersediaan);
  • integriti (eng. integriti);
  • kerahsiaan (eng. kerahsiaan).

Kadangkala mereka menambah senarai ini:

  • non-repudiation (Bahasa Inggeris: non-repudiation);
  • akauntabiliti (eng. akauntabiliti);
  • keaslian atau ketulenan (eng. keaslian);
  • kebolehpercayaan (eng. reliability).

Cara Memastikan Integriti

Kaedah dan kaedah untuk melaksanakan keperluan yang ditetapkan dalam definisi istilah diterangkan secara terperinci dalam rangka skema bersatu untuk memastikan keselamatan maklumat objek (perlindungan maklumat).

Kaedah utama untuk memastikan integriti maklumat (data) apabila disimpan dalam sistem automatik ialah:

  • memastikan toleransi kesalahan(tempahan, penduaan, pencerminan peralatan dan data, contohnya melalui penggunaan tatasusunan RAID);
  • memastikan pemulihan yang selamat(sandaran dan pengarkiban maklumat elektronik).

Salah satu kaedah yang berkesan untuk melaksanakan keperluan untuk integriti maklumat semasa penghantarannya melalui talian komunikasi ialah perlindungan maklumat kriptografi(penyulitan, pencincangan, tandatangan digital elektronik).

Dengan pendekatan bersepadu terhadap perlindungan perniagaan, hala tuju memastikan integriti dan ketersediaan maklumat (sumber proses perniagaan) berkembang menjadi pelan aktiviti yang bertujuan untuk memastikan kesinambungan perniagaan .

Integriti data dalam kriptografi

Penyulitan data tidak menjamin bahawa integriti data tidak akan terjejas. Oleh itu, kaedah tambahan digunakan untuk mengesahkan integriti data dalam kriptografi. Pelanggaran integriti data bermaksud perkara berikut:

  • penyongsangan bit;
  • penambahan bit baharu (khususnya data baharu sepenuhnya) oleh pihak ketiga;
  • mengalih keluar sebarang bit data;
  • menukar susunan bit atau kumpulan bit.

Dalam kriptografi, menyelesaikan masalah integriti maklumat melibatkan penggunaan langkah-langkah yang memungkinkan untuk mengesan tidak begitu banyak herotan rawak maklumat, kerana kaedah teori pengekodan dengan pengesanan ralat dan pembetulan agak sesuai untuk tujuan ini, tetapi sebaliknya yang disasarkan. perubahan maklumat oleh cryptanalyst aktif.

Proses pemantauan integriti dipastikan dengan memperkenalkan redundansi ke dalam maklumat yang dihantar. Ini dicapai dengan menambahkan beberapa gabungan bait pengesahan pada mesej. Gabungan bait ini dikira mengikut algoritma tertentu dan membolehkan anda menyemak sama ada data telah diubah oleh pihak ketiga. Kebarangkalian bahawa data telah diubah berfungsi sebagai ukuran kekuatan palsu sifir.

Maklumat berlebihan tambahan yang dimasukkan ke dalam mesej dipanggil sisipan tiruan. Kadar penyamaran boleh dikira sebelum atau semasa penyulitan mesej.

Sisipan tiruan

Bilangan digit binari (bilangan bit) dalam sisipan simulasi biasanya ditentukan oleh keperluan kriptografi, dengan mengambil kira fakta bahawa kebarangkalian mengenakan data palsu adalah sama dengan 1/2 p, di mana p ialah bilangan digit binari ( bilangan bit) dalam sisipan simulasi.

ImitasiInsert ialah nombor yang dikira berdasarkan kandungan mesej. Iaitu, sisipan tiruan ialah fungsi mesej:

M = f(x) ,

  • M - sisipan tiruan;
  • f ialah fungsi yang mengira sisipan tiruan;
  • x - mesej.

Peniruan boleh digunakan untuk mengesahkan ketulenan mesej dan mengesahkan integritinya. Bergantung pada tujuan sisipan simulasi, algoritma untuk fungsi pengendalian f (kod) dibahagikan kepada dua kelas:

  • kod semakan integriti mesej (MDC, kod pengesanan pengubahsuaian bahasa Inggeris). Algoritma mengira sisipan olok-olok yang sesuai untuk menyemak integriti (tetapi bukan ketulenan) data dengan mencincang mesej;
  • kod pengesahan mesej (MAC, kod pengesahan mesej Inggeris). Algoritma mengira sisipan palsu yang sesuai untuk melindungi data daripada gangguan dengan mencincang mesej menggunakan kunci rahsia.

MDC

Fungsi cincang untuk mengira kod pengesahan integriti mesej tergolong dalam subkelas fungsi cincang tanpa kunci. Dalam sistem kriptografi kehidupan sebenar, fungsi cincang ini adalah kriptografi, iaitu, sebagai tambahan kepada sifat minimum fungsi cincang (mampatan data, kemudahan mengira ringkasan daripada mesej) ia memenuhi sifat berikut:

  • ketakterbalikan (eng. rintangan praimej);
  • rintangan terhadap perlanggaran jenis pertama (rintangan perlanggaran lemah);
  • rintangan terhadap perlanggaran jenis kedua (Bahasa Inggeris: strong collision resistance).

Bergantung pada sifat yang mana fungsi hash MDC ini memuaskan, dua subkelas boleh dibezakan:

  • fungsi cincang sehala (OWHF, daripada fungsi cincang sehala Inggeris), yang memenuhi sifat ketakterbalikan dan tahan terhadap perlanggaran jenis pertama;
  • Fungsi cincang tahan perlanggaran (CRHF, daripada bahasa Inggeris. fungsi cincang tahan perlanggaran), yang tahan terhadap perlanggaran jenis pertama dan kedua (secara umumnya, dalam amalan fungsi cincang CRHF juga memenuhi sifat ketakterbalikan).

Terdapat tiga jenis utama algoritma fungsi cincang MDC, berdasarkan cara ia dibina:

  • pada sifir blok; contohnya: algoritma Matyas-Meyer-Oseas, algoritma Davies-Meyer, algoritma Miyaguchi-Preneel, MDC-2 , MDC-4 ;
  • algoritma pencincangan khas (eng. disesuaikan), yang menekankan kelajuan, dan yang bebas daripada komponen lain sistem (termasuk sifir blok atau komponen pendaraban modular, yang mungkin sudah digunakan untuk tujuan lain). Contohnya: MD4, MD5, SHA-1, SHA-2, RIPEMD-128, RIPEMD-160;
  • pada aritmetik modular; contohnya: MASH-1, MASH-2.

MAC

Fungsi cincang MAC untuk mengira kod pengesahan mesej, subkeluarga fungsi cincang utama, termasuk keluarga fungsi yang memenuhi sifat berikut:

  • kemudahan mengira ringkasan daripada mesej;
  • pemampatan data - mesej input dengan panjang bit sewenang-wenangnya ditukar menjadi ringkasan dengan panjang tetap;
  • penentangan terhadap penggodaman - mempunyai satu atau lebih pasangan cerna mesej, (x[i], h(x[i])), secara pengiraan mustahil untuk mendapatkan pasangan ringkasan mesej baharu (x, h(x)), untuk sebarang mesej baharu x .

Jika harta terakhir tidak berpuas hati, maka MAC mungkin ditipu. Juga, sifat terakhir menunjukkan bahawa kunci tidak boleh dikira, iaitu, mempunyai satu atau lebih pasangan (x[i], h(x[i])) dengan kunci k, adalah mustahil untuk mendapatkan kunci ini secara pengiraan.

Algoritma untuk mendapatkan kod pengesahan mesej boleh dibahagikan kepada kumpulan berikut mengikut jenisnya:

  • pada sifir blok. Contohnya, CBC-MAC, RIPE-MAC1, RIPE-MAC3;
  • mendapatkan MAC daripada MDC;
  • algoritma khas (eng. disesuaikan). Contohnya, MAA, MD5-MAC;
  • pada sifir strim. Contohnya, MAC berasaskan CRC.

Menerima MAC berdasarkan MDC

Terdapat kaedah untuk mendapatkan kod pengesahan mesej daripada MDC dengan memasukkan kunci rahsia dalam data input algoritma MDC. Kelemahan pendekatan ini ialah sebenarnya, dalam amalan, kebanyakan algoritma MDC direka bentuk sama ada OWHF atau CRHF, yang mempunyai keperluan berbeza daripada algoritma MAC.

  1. kaedah awalan rahsia : Kepada urutan blok data x (\displaystyle x)=x 1 x 2 x 3 ..x n kunci rahsia ditambah pada permulaan k: k||x. Untuk jujukan data tertentu, MDC dikira menggunakan fungsi cincang lelaran, contohnya, supaya H 0 =IV (daripada nilai awal bahasa Inggeris), H i = f(H i-1, x i) h(x) = H n . Jadi MAC M (\displaystyle M)=h(k||x). Kelemahan pendekatan ini ialah pihak ketiga boleh menambah data tambahan pada penghujung jujukan blok y: k||x||y. MAC baharu boleh dikira tanpa mengetahui kuncinya k: M (\displaystyle M) 1 = f(M (\displaystyle M),y).
  2. kaedah akhiran rahsia : Kunci rahsia ditambahkan pada penghujung urutan data: x||k. Dalam kes ini MAC M (\displaystyle M)=h(x||k). Dalam kes ini, serangan hari jadi boleh digunakan. Dengan panjang penghadaman sebanyak n sedikit. Pihak ketiga akan memerlukan pesanan 2 n/2 operasi untuk mesej x cari mesej x' seperti itu h(x)= h(x'). Pada masa yang sama, pengetahuan tentang kunci k tidak akan diperlukan. Mengetahui nilai MAC M (\displaystyle M) untuk mesej x, pihak ketiga akan dapat menjana pasangan yang betul ( x',M (\displaystyle M)).
  3. kaedah sampul surat dengan padding : Untuk kunci k dan M.D.C. h h k ( x)=(k||hlm||x||k), Di mana hlm- rentetan yang melengkapkan kunci k kepada panjang blok data, untuk memastikan sekurang-kurangnya 2 lelaran dilakukan. Sebagai contoh, untuk MD5 k- 128 bit, dan hlm- 384 bit.
  4. HMAC : Untuk kunci k dan M.D.C. h MAC daripada mesej dikira h k ( x)=(k||hlm 1 ||h(k||hlm 2 ||x)), Di mana hlm 1 ,hlm 2 - pelengkap baris yang berbeza k sehingga panjang blok data. Reka bentuk ini agak berkesan, walaupun penggunaan dua kali. h.

Corak penggunaan

Malah, secara umum, proses pemindahan data dan menyemak integritinya adalah seperti berikut: pengguna A menambah ringkasan pada mesejnya. Pasangan ini akan dipindahkan kepada pihak kedua B. Di sana, mesej dipilih, ringkasan dikira untuknya, dan ringkasan dibandingkan. Jika nilai sepadan, mesej akan dianggap boleh dipercayai. Percanggahan akan menunjukkan bahawa data telah diubah.

Memastikan integriti data menggunakan penyulitan dan MDC

MDC dikira daripada mesej asal. M (\displaystyle M)=h(x). ini