Model relasional berbasis konsep. Struktur model data relasional

Struktur data utama dalam model relasional (RMD) adalah sikap, Oleh karena itu, model tersebut disebut relasional.

Di RMD data disusun dalam tabel, yang harus memenuhi batasan tertentu, dan dapat dianggap sebagai hubungan.

Representasi tabel diusulkan oleh seorang ahli matematika Amerika E.F. ikan kod pada awal tahun 70an dan diimplementasikan oleh IBM pada awal tahun 80an. Tabel dua dimensi adalah salah satu yang paling banyak cara sederhana penyajian data kepada pengguna atau pemrogram.

Representasi tabel dari hubungan "Karyawan". ditunjukkan pada Tabel 1.

Tabel 1. Hubungan "Karyawan" - tabel "Karyawan"

RMD menggunakan istilah relasional formal yang dapat diganti dengan istilah informal. Kesesuaian antara istilah formal dan informal disajikan pada Tabel 2.

Meja 2. Korespondensi antara istilah RMD informal dan formal

Model ini memiliki landasan teori yang serius - teori himpunan dan logika matematika.

Konsep dasar model relasional:

- tipe data, nilai;

- domain;

- atribut;

- iring-iringan mobil;

- kunci;

- sikap.

Konsep tipe data setara dengan konsep tipe data dalam bahasa algoritmik. Nilai atom data adalah unit data terkecil yang tidak dapat dibagi lagi dalam RMD.

Domain adalah himpunan potensial nilai atom valid dari tipe yang sama. Data dianggap sebanding hanya jika merujuk pada domain yang sama. Misalnya, nomor grup dan nomor ID siswa memiliki tipe yang sama - bilangan bulat, tetapi berasal dari domain yang berbeda, jadi tidak masuk akal untuk membandingkannya.

Atribut adalah kolom relasi bernama, nilai elemen kolom harus berasal dari domain yang sama.

Misalkan diberikan himpunan domain D 1 , D 2 ,…,D N (tidak harus berbeda).

iring-iringan relasi adalah himpunan N nilai yang disusun dalam urutan yang ditentukan secara ketat (d 1, d 2,...,d N), sehingga d 1 milik D 1, d 2 milik D 2, dan d N milik ke DN. Jumlah elemen dalam tupel disebut arity.



Produk Cartesian lengkap domain D 1 x D 2 x…x D N adalah himpunan semua kemungkinan tupel arity N yang berbeda, dimana setiap elemen tupel diambil dari domainnya sendiri (contoh: D1(Nogr), D2(Fam_stud), D3(Type )).

Perbandingan, yang ditentukan pada N domain ini, adalah subset dari produk Cartesian lengkap dari domain aslinya.

Diagram hubungan beri nama daftar nama atribut relasi yang menunjukkan domain atau tipe atribut. Bila jumlah atribut sama dengan N, disebut relasi N-ary. Skema relasi – baris header tabel.

Tupel yang sesuai dengan skema relasi tertentu adalah sekumpulan pasangan (nama atribut, nilai) yang berisi satu kemunculan setiap nama atribut milik skema relasi.

Kunci utama dari hubungan tersebut adalah adalah atribut atau kumpulan atribut yang secara unik mengidentifikasi setiap tupel dalam suatu relasi dan memastikan bahwa baris-barisnya unik. Kuncinya bisa sederhana (dari satu atribut) atau kompleks (terdiri dari beberapa atribut).

Sifat-sifat kunci adalah keunikan dan minimalis. Untuk setiap relasi, setidaknya seluruh atributnya memiliki properti keunikan. Kuncinya harus minimal, mis. tidak ada bidang yang mubazir untuk mengidentifikasi baris dalam tabel secara unik; menghapus bidang apa pun dari kunci akan merusak identifikasi.

Banyak objek yang memiliki pengenal, maka kita dapat berbicara tentang kunci alami yang berisi informasi tentang objek tersebut, misalnya data paspor pribadi. Kunci buatan atau kunci pengganti dihasilkan oleh sistem dan biasanya tidak berisi informasi penting, seperti nomor sekolah siswa, mis. di luar sistem itu tidak masuk akal.

Keterbatasan model relasional(properti tabel):

1. Setiap tabel diberi nama unik, mewakili satu objek nyata atau mendefinisikan hubungan antar objek, dan terdiri dari baris-baris bertipe sama yang sesuai dengan tupel relasi, dan kolom yang sesuai dengan atribut relasi.

2. Setiap elemen tabel harus ada atom, yaitu. tak terpisahkan.

3. Semua baris memiliki struktur yang sama dengan jumlah bidang dan nilai yang tetap. Tidak boleh ada dua baris yang identik dalam sebuah tabel (mengikuti definisi hubungan). Baris-barisnya berbeda satu sama lain setidaknya dalam satu nilai.

4. Setiap kolom diberi nama unik. Elemen kolom yang sama harus homogen, diekstraksi dari satu domain.

5. Dalam operasi tabel, baris dan kolom dapat dilihat dalam urutan apa pun. Tidak ada pengurutan tupel, tetapi domain diurutkan dalam suatu relasi. Namun urutan kolom bernama diakses juga menjadi tidak relevan.

6. Tiap meja pasti ada kunci utama. Kuncinya memungkinkan Anda menemukan satu baris dalam tabel. Tupel diindeks berdasarkan kunci, yang mempercepat pemrosesan data. Kunci digunakan untuk menghubungkan tabel secara logis.

Bentuk yang lebih pendek dari entri tabel “Karyawan” atau diagram hubungan“Karyawan” (kunci utama hubungan digarisbawahi):

Karyawan( Nomor_tab, Nama belakang, Departemen, Tanggal lahir, Jabatan, Gaji)

DI DALAM pandangan umum diagram relasi ditulis sebagai

R(a 1 , a 2 , ..., a N), dimana a i adalah nama atribut ke-i dari relasi R.

RBD merupakan sekumpulan hubungan yang saling berhubungan. sirkuit RDB mengacu pada kumpulan skema hubungan bernama yang digunakan untuk mewakili informasi dan nilai hubungan saat ini sebagai database. Dalam representasi fisik, setiap relasi berhubungan dengan file database, instance hubungan berhubungan dengan rekaman file database, dan atribut relasi berhubungan dengan bidang rekaman file database.

Subskema, sebagai proyeksi skema database, hanya berisi hubungan tersebut, dan hanya atribut dari hubungan ini yang digunakan oleh pemrogram aplikasi untuk menyelesaikan tugas tertentu (kueri).

Saat mendeskripsikan subskema database, semua batasan yang diperlukan dapat ditentukan, misalnya: kata sandi akses ke suatu relasi atau atributnya, mode pemrosesan untuk suatu relasi atau atributnya - "hanya baca" atau "baca dan tulis" dan lain-lain.

Subskema database juga dapat berisi atribut virtual - ini bukan atribut hubungan yang disimpan dalam database, tetapi dihitung secara algoritmik untuk tugas tertentu (kueri). Juga dalam subskema database, metode pengurutan data dapat diubah (yaitu, kunci lain ditetapkan), tipe data (digital - diganti dengan simbolik dan sebaliknya). Pada saat yang sama, DBMS menyediakan eksekusi otomatis semua proses ini.

Keunikan RMD adalah baik objek maupun hubungan antar keduanya disajikan dalam satu bentuk, yaitu berupa tabel.

Berbeda dengan model hierarki dan jaringan komunikasi antar hubungan tetap terjaga secara implisit. RMD mendukung koneksi biner seperti “1:1”, “1:M”, “M:1”. Dalam setiap hubungan, satu hubungan berperan sebagai hubungan utama (dari sisi 1), dan hubungan lainnya sebagai bawahan (dari sisi M). Artinya satu tupel dari relasi utama dapat diasosiasikan dengan beberapa tupel dari relasi subordinat.

Hubungan tersebut dipelihara oleh sekumpulan atribut yang menghubungkan, dalam relasi utama ini adalah kunci utama (kunci utama), yang harus ada dalam relasi bawahan sebagai kunci sekunder. Kumpulan atribut dalam hubungan bawahan disebut kunci asing (kunci asing).

Kunci asing digunakan untuk membangun koneksi logis antar hubungan. Kunci primer mengidentifikasi satu tupel dalam relasi primer, dan kunci sekunder mengidentifikasi himpunan tupel dalam relasi bawahan yang terkait dengan satu tupel dalam relasi primer.

Mari kita perhatikan contoh pemeliharaan koneksi tipe “1:M” antara hubungan “Grup” dan “Siswa”. Relasi utama adalah relasi “Group”, kunci utama dari relasi tersebut adalah atribut “Group_Number”. Relasi bawahannya adalah relasi “Siswa”, kunci utama dari relasi tersebut adalah “Nomor_Buku_Kredit”. Relasi “Students” harus memiliki atribut “Group_Number” sebagai kunci asing untuk ditautkan ke relasi utama. Atribut inilah yang memungkinkan Anda menentukan informasi tentang kelompok tempat siswa belajar.

Skema hubungan utama “Grup”:

Grup ( Grup No., Spesialisasi)

Skema hubungan bawahan “Siswa”:

Siswa ( No._buku nilai, Nama belakang, Tanggal lahir, Grup No.)

(Dalam diagram hubungan, kunci utama digarisbawahi dan kunci sekunder dicetak miring).

Contoh RMD DBMS: DBase, FoxPro, Clipper, Paradox, MS Access, Informix, Oracle, dll.

Struktur data apa pun dapat direduksi menjadi tabel dua dimensi. Mari kita perhatikan contoh mengubah MD hierarkis, yang ditunjukkan pada Gambar., menjadi database relasional, mis. menjadi serangkaian hubungan yang saling berhubungan.

Untuk setiap node dari struktur pohon, relasi terpisah dibuat, mis. hubungan “Departemen”, “Karyawan”, “Aktivitas_Buruh”, “Anak-anak”, “Pekerjaan” dibuat. Setiap relasi yang terkait dengan node anak ditambahkan dengan pengidentifikasi node sumber. Hasilnya, kami memperoleh database relasional yang terdiri dari relasi berikut:

Departemen ( Nomor_Departemen, Nama)

Karyawan ( Nomor_tab, Nama belakang, Gaji, Nomor_Departemen)

Aktivitas_tenaga kerja ( Jumlah order, Isi_pesanan, Nomor_tab)

Anak-anak ( nama_anak, Nomor_tab , Tanggal lahir)

Bekerja ( Kode pekerjaan, Nama, Tanggal Penyelesaian, Nomor_Departemen)

Keuntungan model relasional:

– kesederhanaan dan kejelasan model;

– homogenitas struktur untuk merepresentasikan objek dan koneksi;

– kemampuan untuk memanipulasi data tanpa perlu mengetahui organisasi fisik spesifik dari database memori eksternal;

– kemampuan untuk menggunakan bahasa query non-prosedural oleh pengguna database yang tidak terlatih.

Model logika data yang dipertimbangkan berbeda dalam cara mereka memungkinkan pengguna untuk mewakili dan memproses hubungan.

Dalam model komunikasi hierarki dan jaringan, data fisik dihubungkan oleh penunjuk fisik. Ini merupakan kelebihan dan kekurangan. Koneksi fisik yang dimaksudkan terealisasi dengan baik, namun hubungan lain sulit untuk diekstraksi. Dalam model relasional, koneksi bersifat logis.

Dalam pendekatan relasional, koneksi antar objek direpresentasikan dengan cara yang sama seperti objek itu sendiri, melalui tupel dalam relasi. Keseragaman penyajian data menyederhanakan perangkat lunak dan alat bahasa DBMS.

Dalam disiplin matematika, konsep “tabel” berhubungan dengan konsep “relasi”. Tabel mencerminkan objek dunia nyata – esensi, dan setiap baris mencerminkan contoh spesifik dari entitas. Setiap kolom memiliki nama unik untuk tabelnya.

Garis-garis tersebut tidak memiliki nama, urutannya tidak ditentukan, dan jumlahnya secara logis tidak terbatas. Salah satu keunggulan utama RMD adalah keseragaman (setiap baris tabel memiliki format yang sama). Pengguna sendiri yang memutuskan apakah entitas terkait memiliki homogenitas. Ini memecahkan masalah kesesuaian model. Elemen utama RMD ditunjukkan pada Gambar. 17.

Relasi adalah tabel dua dimensi yang berisi beberapa data.

Esensi– objek dalam bentuk apa pun, datanya disimpan dalam database.

Atribut– properti yang mengkarakterisasi entitas (kolom). Derajat hubungan adalah jumlah kolom.

Diagram hubungan– daftar nama atribut, misalnya, KARYAWAN (No., Nama Lengkap, Tahun Lahir, Jabatan, Departemen).

Domain sekumpulan nilai atribut relasi (tipe data). Lebih tepatnya, domain Ada serangkaian nilai potensial.

Properti Domain: Domain adalah suatu himpunan, meskipun secara umum nilainya tidak dapat disebutkan secara sederhana. Properti berikut ini diwarisi dari himpunan:

    Keterbatasan: domain memiliki batas, data dibagi menjadi mungkin dan tidak mungkin. Seperti halnya himpunan, hal ini tidak berarti bahwa jumlah elemennya terbatas.

    Keunikan: Anda dapat membandingkan beberapa elemen dengan elemen lainnya dan menghindari duplikat. Untuk satu domain, hal ini tidak perlu dikatakan lagi.

Konsep domain membantu dengan benar mensimulasikan bidang subjek

Domain dan atribut. A atribut harus spesifik untuk domain, atau "didefinisikan pada domain". Beberapa atribut dapat diatur pada satu domain.

Atomisitas nilai: nilai atribut harus sederhana, atom, bukan komposit.

Kealamian domain. D Pertanda harus membawa muatan semantik. Akan lebih berguna jika memperlakukan domain sebagai sekelompok parameter deskripsi tertentu bidang subjek, untuk beberapa konsep semantik.

Biasanya, banyak mata pelajaran yang sudah cukup formal dan memiliki konsep dan buku referensi yang sudah jadi.

Batasi perbandingan yang tidak perlu antar atribut – tujuan utama domain.

iring-iringan– baris tabel.

Kardinalitas (kekuatan)– jumlah baris dalam tabel.

Nama lengkap

Tahun kelahiran

Judul pekerjaan

Kode departemen

Ivanov I.I.

Petrov P.P.

Profesor

Sidorov S.S.

Vasiliev V.V.

Vovkin V.V.

guru

Stepanov S.S.

Profesor

Gambar 17. Elemen model relasional

Konsep database erat kaitannya dengan konsep elemen struktural seperti field, record, file (tabel),

    bidang , - unit dasar organisasi data logis, yang sesuai dengan unit informasi yang tidak dapat dibagi - detail. Berikut ini digunakan untuk menggambarkan bidang tersebut: karakteristik :

    Nama , Misalnya. Nama belakang, nama depan, patronimik, tanggal lahir;

    jenis , misalnya simbolik, numerik, kalender;

    panjang , misalnya 15 byte, dan akan ditentukan oleh jumlah karakter maksimum yang mungkin

    ketepatan , untuk data numerik, seperti dua tempat desimal untuk menampilkan bagian pecahan suatu angka.

Catatan- satu set bidang yang terkait secara logis. Contoh rekaman adalah implementasi terpisah dari rekaman yang berisi nilai spesifik untuk bidangnya.

Mengajukan(tabel) - kumpulan contoh catatan dari struktur yang sama.

Tabel dalam model data relasional dapat dianggap sebagai kelas objek dengan tipe yang sama .

Jadi, untuk objek yang sekelas, himpunan propertinya akan sama, meskipun nilai properti tersebut untuk setiap objek tentu saja mungkin berbeda.

Tipe data diperbolehkan dalam model data relasional.

Tipe data utama yang digunakan dalam model data:

Bilangan Bulat Pendek – bilangan bulat pendek;

Bilangan Bulat Panjang – bilangan bulat panjang;

Mengambang – bilangan real (bilangan floating point);

Dobel – bilangan real (bilangan floating point) presisi ganda;

Teks – tipe data teks;

Logis - logis (ya/tidak);

Data - sementara. Nilai didefinisikan sebagai tanggal yang dibatasi dalam format yang ditentukan;

Gumpal – objek biner besar (binary large object - BLOB), yang dapat menyimpan data dengan ukuran tidak terbatas. Bidang jenis ini memungkinkan Anda menyimpan informasi biner sembarang yang tidak berdimensi.

Elemen kunci (kunci utama) suatu data adalah suatu elemen yang darinya dapat ditentukan nilai elemen data lainnya. Suatu objek dapat diidentifikasi secara unik dengan dua atau lebih nilai data.

Kunci utama Ini adalah atribut yang secara unik mengidentifikasi baris-baris suatu hubungan. Kunci utama yang terdiri dari beberapa atribut disebut kunci komposit. Kunci utama tidak boleh kosong seluruhnya atau sebagian (memiliki nilai null).

Arti praktis Kunci utamanya jelas: objek domain dideskripsikan secara unik oleh sekumpulan atribut tabel. Kunci utama menangkap hal terpenting tentang suatu objek, esensi uniknya. Bidang lainnya dapat disebut “atribut saja”.

Kunci yang dapat digunakan sebagai kunci utama disebut potensi atau alternatifkunci.

Kunci eksternal - berfungsi untuk menghubungkan tabel. Ini adalah nilai dari satu tabel yang dapat ditautkan secara unik ke tabel lainnya. Lebih tepatnya, untuk suatu hubungan, kunci asing adalah sekumpulan atribut yang telah ditentukan sebelumnya

Kunci eksternal - adalah atribut suatu tabel yang dapat berfungsi sebagai kunci utama tabel lainnya. Ini adalah tautan ke kunci utama tabel lain (Gbr. 18).

Gambar 18. Hubungan hubungan

Hubungan SISWA (Nama, Golongan, Keahlian) Dan ITEM (Nama Pr, Jam) dihubungkan oleh hubungan STUDENT_SUBJECT (Nama Lengkap, Nama Pr, Kelas), di mana kunci asing Nama lengkap Dan Nama_Pr membentuk kunci komposit.

database jika didasarkan pada model ini. Memiliki model data memungkinkan Anda membandingkan implementasi tertentu menggunakan satu bahasa umum.

Meskipun konsep model data bersifat umum, dan kita dapat berbicara tentang model data hierarki, jaringan, semantik, dan lainnya, perlu dicatat bahwa di bidang basis data, konsep ini diperkenalkan oleh Edgar Codd dalam kaitannya dengan sistem relasional dan paling banyak digunakan. digunakan secara efektif dalam konteks ini. Upaya untuk secara langsung menerapkan model serupa pada organisasi pra-relasional menunjukkan hal itu model relasional terlalu “besar”, dan untuk organisasi pasca-relasional ternyata “kecil”.

karakteristik umum

Meskipun konsepnya model data relasional pendirinya adalah orang pertama yang memperkenalkan pendekatan relasional Edgar Codd, interpretasi paling umum model data relasional, rupanya, milik pempopuler ide Codd yang terkenal, Christopher Date, yang mereproduksinya (dengan berbagai klarifikasi) di hampir semua bukunya (lihat, misalnya, K. Date. Pengantar Sistem Basis Data. Edisi ke-6, M. ; Menurut interpretasi Data, model relasional terdiri dari tiga bagian yang menggambarkan aspek yang berbeda pendekatan relasional: bagian struktural, bagian manipulasi dan bagian integral.

Pada bagian struktural model ditetapkan bahwa satu-satunya struktur generik adalah 7 Ini adalah kedua kalinya dalam kuliah ini relasi n -ary yang dinormalisasi adalah satu-satunya struktur data umum yang digunakan dalam database relasional. Saatnya untuk memperjelas apa yang kami maksud dengan istilah tersebut struktur generik. Bahasa pemrograman dengan sistem tipe ekstensif biasanya memiliki konstruksi yang disebut tipe generik, tipe yang dapat diparameterisasi, tipe konstruktor, tipe generator dll., memungkinkan pembuatan tipe data tertentu berdasarkan spesifikasi abstraknya (biasanya sudah ditentukan sebelumnya). Keunikan tipe tersebut adalah bahwa operasi utama dari tipe tertentu didefinisikan pada tingkat spesifikasi abstrak ini. Salah satu contoh paling terkenal adalah tipe set, misalnya dalam bahasa Pascal. Kapan model data relasional Kami tidak mengatakan secara eksplisit bahwa suatu relasi adalah tipe generik, namun pada dasarnya memang demikianlah adanya. Operasi aljabar relasional didefinisikan pada tingkat relasi abstrak dan berlaku untuk nilai relasi apa pun dengan header konkret. Data yang digunakan dalam database relasional adalah relasi n-ary yang dinormalisasi. Konsep domain, atribut, tupel, header, body dan variabel relasi. Faktanya, dalam dua bagian sebelumnya dari kuliah ini kita telah membahas secara tepat konsep dan sifat komponen struktural model relasional.

Di bagian manipulasi model, dua mekanisme mendasar untuk memanipulasi database relasional didefinisikan - aljabar relasional dan kalkulus relasional. Mekanisme pertama terutama didasarkan pada teori himpunan klasik (dengan beberapa penyempurnaan dan penambahan), dan mekanisme kedua didasarkan pada peralatan logika klasik kalkulus predikat orde pertama. Mekanisme ini akan kita bahas lebih detail pada kuliah berikutnya, namun untuk saat ini kita hanya akan memperhatikan fungsi utama bagian manipulasi. model relasional adalah untuk memberikan ukuran relasionalitas bahasa basis data relasional tertentu: suatu bahasa disebut relasional jika bahasa tersebut memiliki ekspresi dan kekuatan yang tidak kalah dengan aljabar relasional atau kalkulus relasional.

Integritas entitas dan referensi

Terakhir, pada bagian integral model data relasional dua persyaratan integritas dasar ditetapkan yang harus didukung dalam DBMS relasional apa pun. Persyaratan pertama disebut persyaratan integritas entitas. Objek atau entitas dunia nyata dalam database relasional berhubungan dengan tupel relasi. Secara khusus, persyaratannya adalah setiap tupel dari hubungan nilai apa pun variabel relasi harus dapat dibedakan dari tupel lainnya nilai rasio dengan nilai gabungan dari sekumpulan atribut yang telah ditentukan variabel relasi, yaitu, dengan kata lain, apa saja variabel relasi harus dimiliki kunci utama. Seperti yang kita lihat di bagian sebelumnya, persyaratan ini secara otomatis dipenuhi jika sistem tidak melanggar sifat dasar relasi.

Faktanya, persyaratannya integritas entitas sepenuhnya terdengar seperti ini: apa saja variabel relasi harus ada kunci utama dan tidak ada nilai kunci utama dalam tupel nilainya adalah relasi variabel relasi tidak boleh mengandung nilai yang tidak ditentukan. Agar rumusan ini dapat dipahami sepenuhnya, setidaknya kita harus membahas konsepnya secara singkat belum diartikan(BATAL).

Tentu saja, secara teoritis, setiap tupel yang dimasukkan ke dalam relasi persisten harus berisi semua karakteristik entitas dunia nyata yang dimodelkannya yang ingin kita simpan dalam database. Namun, dalam praktiknya, tidak semua karakteristik ini dapat diketahui pada saat entitas perlu dicatat dalam database. Sebuah contoh sederhana mungkin ada prosedur untuk mempekerjakan seseorang yang gajinya belum ditentukan. Dalam hal ini, karyawan departemen SDM yang memasukkan tupel yang mendeskripsikan karyawan baru ke dalam relasi EMPLOYEES tidak dapat memberikan nilai atribut SLU_ZARP (nilai apa pun dalam domain SIZE_PAYMENT akan salah mengkarakterisasi gaji karyawan baru).

Edgar Codd menyarankan penggunaan dalam kasus seperti itu nilai yang tidak ditentukan. Nilai tidak terdefinisi tidak termasuk dalam tipe data apa pun dan dapat berada di antara nilai atribut apa pun yang ditentukan pada tipe data apa pun (kecuali dilarang secara eksplisit saat atribut tersebut ditentukan). Jika a adalah nilai dari beberapa tipe data atau NULL , op adalah operasi "aritmatika" dua tempat dari tipe data tersebut (misalnya, + ), dan memangkas adalah operasi membandingkan nilai jenis ini (misalnya = ), maka menurut definisi:

a op NULL = NULL NULL op a = NULL a lop NULL = tidak diketahui NULL lop a = tidak diketahui

Di sini tidak diketahui nilai boolean ketiga, atau Boolean, ketik, memiliki properti berikut:

TIDAK diketahui = tidak diketahui benar DAN tidak diketahui = tidak diketahui benar ATAU tidak diketahui = benar salah DAN tidak diketahui = salah salah ATAU tidak diketahui = tidak diketahui

(ingat bahwa operasi AND dan OR bersifat komutatif) 8 Pengalaman penulis menunjukkan, tidak semua siswa mengingat operasi logika dasar. Untuk menjaminnya, kami menyajikan tabel kebenaran untuk operasi AND (& – konjungsi), OR ( – disjungsi) dan NOT ( – negasi):

DAN BENAR PALSU ATAU BENAR PALSU BUKAN BENAR PALSU
BENAR BENAR PALSU BENAR BENAR BENAR PALSU BENAR
PALSU PALSU PALSU PALSU BENAR PALSU

. Dalam kuliah ini, pengantar singkat berikut ini nilai yang tidak ditentukan, namun pada kuliah berikut kita akan kembali ke topik ini beberapa kali.

Jadi, syarat pertama adalah syarat integritas entitas- berarti bahwa kunci utama harus sepenuhnya mengidentifikasi setiap entitas, dan oleh karena itu, sebagai bagian dari nilai apa pun kunci utama kehadirannya tidak diperbolehkan nilai yang tidak ditentukan. (Dalam klasik model relasional persyaratan ini juga berlaku untuk kemungkinan kunci; seperti yang akan ditunjukkan dalam kuliah berikut, dalam DBMS berorientasi SQL, persyaratan seperti itu adalah kunci yang mungkin tidak didukung.)

Persyaratan kedua, yang disebut persyaratan integritas referensial, lebih kompleks. Jelasnya, jika relasi dinormalisasi, entitas kompleks dari dunia nyata direpresentasikan dalam database relasional dalam bentuk beberapa tupel dari beberapa relasi. Misalnya, bayangkan Anda ingin mewakilinya basis data relasional Entitas DEPARTMENT dengan atribut DEPARTMENT_NUMBER (nomor departemen), DEPARTMENT_SIZE (jumlah karyawan) dan DEPARTMENT_SLU (kumpulan karyawan departemen). Untuk setiap karyawan, Anda perlu menyimpan SLU_NUMBER (nomor karyawan), SLU_NAME (nama karyawan), dan SLU_SARP (gaji karyawan). Seperti yang akan kita lihat di Bab 7, jika database yang sesuai dirancang dengan benar, dua hubungan akan muncul di dalamnya: DEPARTMENTS (DEPARTMENT_NUMBER, DEPARTMENT_SIZE)(kunci utama – (DOT_NUMBER)) dan KARYAWAN (SERV_NUMBER, SLU_NAME, SLU_ZARP, SLU_DEPARTMENT_NOM)(kunci utama – (SLN_NUMBER) ).

Seperti yang Anda lihat, atribut SLU_DEPARTMENT_NOM dimasukkan ke dalam relasi EMPLOYEES bukan karena nomor departemen adalah milik karyawan, tetapi hanya agar, jika perlu, dapat memulihkan entitas DEPARTMENT secara penuh. Nilai atribut SLU_DEPARTMENT_NOM di setiap tupel relasi EMPLOYEES harus sesuai dengan nilai atribut DEPARTMENT_NOM di beberapa tupel relasi DEPARTMENTS. Atribut semacam ini (mungkin gabungan) disebut kunci asing, karena nilainya secara unik mencirikan entitas yang diwakili oleh tupel dari beberapa relasi lain (yaitu, mereka menentukan nilai-nilainya kunci utama). Tentu saja, kunci asing dapat bersifat komposit, yaitu dapat terdiri dari beberapa atribut. Suatu relasi di mana kunci asing didefinisikan dikatakan mengacu pada relasi bersesuaian yang memiliki atribut yang sama kunci utama.

Persyaratan integritas referensial, atau persyaratan integritas kunci asing, adalah bahwa untuk setiap nilai kunci asing yang muncul dalam tupel nilai relasi referensi variabel relasi, atau dalam hubungan makna variabel relasi, yang ditunjuk oleh tautan, harus ada tupel dengan nilai yang sama kunci utama, atau nilai kunci asing harus benar-benar tidak terdefinisi (yaitu tidak menunjukkan apa-apa) Bahasa SQL memungkinkan beberapa pilihan untuk mendefinisikan kunci asing, yang hanya satu yang sepenuhnya sesuai dengan pendekatan klasik. Kita akan membahas hal ini lebih detail pada kuliah mendatang.. Sebagai contoh, ini berarti jika nomor departemen ditentukan untuk seorang karyawan, maka departemen tersebut harus ada.

Perhatikan bahwa, seperti kunci utama,

Sebagian besar sistem informasi modern didasarkan pada data yang disajikan dalam bentuk model relasional. Konsep utama model data relasional adalah:

Bidang subjek- ini adalah bagian dari dunia nyata (kelas atau sekumpulan kelas objek nyata), dilihat dari sudut pandang tertentu, tunduk pada refleksi model untuk tujuan otomatisasi. Area subjeknya tidak terbatas dan berisi konsep dan data yang penting untuk pengembangan sistem informasi, serta data yang tidak signifikan atau tidak signifikan. Secara umum, model domain menjelaskan proses informasi, terjadi di domain dan data yang digunakan oleh proses ini. Area subjek diwakili oleh banyak unit struktural (misalnya, perusahaan - bengkel, administrasi, akuntansi, dll.). Setiap unit struktural suatu domain dicirikan oleh banyak objek dan proses yang menggunakan objek, serta banyak pengguna, yang dicirikan oleh pandangan berbeda terhadap domain tersebut. Hasil pengembangan aplikasi dan keberhasilan sistem informasi bergantung pada seberapa benar bidang studi dimodelkan.

Misalnya, sebagai mata pelajaran Anda dapat memilih departemen akuntansi suatu perusahaan, departemen sumber daya manusia, bank, toko, dll. Jadi, jika Anda memilih akuntansi barang di gudang sebagai mata pelajaran, maka konsep “faktur” dan “faktur” pada dasarnya adalah konsep penting, dan fakta bahwa karyawan yang menerima faktur memiliki dua anak tidak penting untuk akuntansi barang. Namun, dari sudut pandang departemen HR, data keberadaan anak sangatlah penting. Dengan demikian, pentingnya data bergantung pada pilihan domain.

Model data - itu adalah sekumpulan struktur data dan operasi pemrosesannya.

Model relasional– model representasi data untuk area subjek, yang dibangun berdasarkan hubungan relasional. Menurut K.J. Date, model data relasional menggambarkan tiga aspek: manipulasi struktural dan holistik:

· Struktural - data dalam model adalah sekumpulan hubungan.

· Holistik - hubungan memenuhi kondisi integritas tertentu. (batasan integritas deklaratif pada tingkat domain (tipe data), tingkat relasi, dan tingkat basis data).

· Manipulasi (pemrosesan) - model mendukung operator manipulasi relasi (aljabar relasional, kalkulus relasional).

Sikap– sekumpulan objek area subjek yang dijelaskan oleh karakteristik dan properti umum (umum). Hubungan adalah konsep dasar dalam model data relasional. Relasi adalah konsep abstrak; tabel dapat berfungsi sebagai representasi visual dari suatu relasi dalam teori relasional di atas kertas atau layar.

Atribut– tampilan informasi (karakteristik, properti) dari objek area subjek, digunakan untuk mendeskripsikannya, mengambil nilai tertentu dari sekumpulan nilai yang valid. Setiap atribut memiliki nama yang digunakan untuk merujuk pada data. Nama atribut bersifat unik dalam suatu hubungan. Itu. suatu relasi merepresentasikan sekumpulan atribut. Pada tingkat praktis, atribut adalah bidang tabel.

Diagram hubungan – daftar lengkap nama atribut relasi.

Tupel – adalah elemen relasi yang berisi representasi jelas dari objek dunia nyata, sesuai dengan disorot atribut. Pada tingkat praktis, tupel adalah catatan dalam sebuah tabel.

Kunci hubungan– atribut atau kumpulan atribut relasi yang mengidentifikasi secara unik setiap iring-iringan mobil. Jika kunci relasi memenuhi kondisi keunikan dan minimalitas, maka kunci tersebut disebut utama. Atribut relasi yang digunakan untuk menyimpan nilai kunci utama dari relasi lain dengan tujuan menciptakan hubungan antar relasi tersebut disebut luar .

Dalam model relasional suatu bidang subjek, sebagai suatu peraturan, data yang diperlukan untuk pengoperasian sistem informasi disajikan dalam bentuk serangkaian hubungan yang saling berhubungan . Kunci asing digunakan untuk membangun koneksi logis antar hubungan. Agar data masuk sistem Informasi tidak ambigu dan konsisten, kondisi yang membatasi harus ditetapkan dalam model relasional - batasan integritas , yang memungkinkan meminimalkan kesalahan selama pengoperasian sistem. Kendala integritas yang paling penting adalah: integritas kategoris dan referensial.

Saat membangun koneksi logis antar hubungan, kami menggunakan empat jenis koneksi :

· Satu lawan satu– dibangun antara kunci utama hubungan. Dalam hal ini, setiap tupel dari satu relasi hanya akan berkorespondensi dengan satu tupel dari relasi lainnya.

· Satu lawan banyak- ditetapkan antara kunci utama dari satu hubungan dan kunci asing dari hubungan lainnya. Dalam hal ini, satu tupel dari satu relasi akan berhubungan dengan beberapa tupel dari relasi lainnya.

· Banyak banding satu- dibuat antara kunci asing dari satu relasi dan kunci utama dari relasi lain. Dalam hal ini, beberapa tupel dari satu relasi hanya akan berkorespondensi dengan satu tupel dari relasi lainnya.

· Banyak ke banyak - dibangun antara hubungan kunci asing. Selain itu, setiap tupel dari satu relasi dapat berhubungan dengan beberapa tupel dari relasi lainnya.

Kuliah 12

Model data relasional.

Normalisasi. Bentuk biasa.

Teknologi memetakan model database konseptual ke dalam model data relasional

1. Konsep dasar model data relasional

Seperti yang telah ditunjukkan pada kuliah sebelumnya, untuk mendefinisikan model data relasional, perlu mendeklarasikan struktur data, cara memanipulasinya, dan batasan integritas (geser 2).

1.1. Komponen struktural dari model relasional

Dari sudut pandang struktur data, model relasional adalah bentuk penyajian data yang nyaman dan paling umum dalam bentuk tabel. Konsep “tabel” sesuai dengan konsep “relasi”. Dari sinilah nama model berasal – relasional. Artinya, dalam kaitannya dengan database, konsep "database relasional" dan "database tabular" pada dasarnya sama. Berbeda dengan model hierarki dan jaringan, cara representasi ini

1) dapat dimengerti oleh pengguna non-programmer;

2) memungkinkan Anda mengubah skema dengan mudah - melampirkan elemen dan catatan data baru tanpa mengubah subskema terkait;

3) memberikan fleksibilitas yang diperlukan saat menangani permintaan yang tidak terduga.

Selain itu, jaringan atau diagram hierarki apa pun dapat direpresentasikan dengan hubungan dua dimensi.

Salah satu keuntungan utama model relasional adalah homogenitasnya. Semua data dianggap disimpan dalam tabel yang setiap barisnya memiliki format yang sama. Setiap baris dalam tabel mewakili beberapa objek dunia nyata atau hubungan antar objek. Pengguna model harus memutuskan sendiri apakah entitas dunia nyata yang bersangkutan adalah homogen. Hal ini memecahkan masalah kesesuaian model untuk aplikasi yang dimaksudkan.

Konsep utama yang mendefinisikan model relasional adalah sebagai berikut: domain, relasi, tupel, kardinalitas, atribut, derajat, kunci utama. Hubungan antar konsep diilustrasikan pada slide (geser 3).

Domainadalah sekumpulan nilai dari mana nilai atribut yang sesuai dari suatu hubungan tertentu diambil. Dalam istilah pemrograman, domain adalah tipe data yang ditentukan sistem (standar) atau ditentukan pengguna.

Kunci utamaadalah kolom atau subkumpulan kolom yang unik, mis. mendefinisikan baris secara unik. Kunci utama yang mencakup lebih dari satu kolom disebut kunci ganda, atau kunci utama, atau kunci utama, atau kunci utama. Aturan Integritas Objek menyatakan bahwa kunci utama tidak boleh kosong seluruhnya atau sebagian, yaitu. menjadi nol.

Kunci yang tersisa, yang juga dapat digunakan sebagai kunci utama, disebut kunci potensial atau alternatif kunci.

Mari kita rumuskan aturan untuk menetapkan kunci utama ke entitas:

1).Kunci utama harus mengidentifikasi secara unik setiap instance dari suatu entitas.

2).Jika memungkinkan, kunci utama seharusnya yang paling kompak daridari semua kunci potensial, tipe data terbaik untuk kunci utama adalah bilangan bulat.

3).Kunci primernya bisa berupa komposit, tetapi jumlahnya bertambahkolom-kolom yang termasuk di dalamnya bertentangan dengan persyaratan kekompakan. Persyaratan kekompakan juga tidak dapat dipenuhi jika, misalnya, dalam apilih atribut string sebagai kunci utamatipe data panjang.

4). Nilai kunci utama tidak boleh sering mengalami modifikasi. Idealnya, logika bisnis domain sedemikian rupa sehingga nilai-nilai ini tidak boleh berubah sama sekali.

5). Aturan modifikasi kunci primer harus dikontrol logika bisnis internal bidang subjek, dan bukan solusi itudiambil alih dia. Misalnya, dalam database yang dikembangkan untukkebutuhan kantor dekanat, untuk badan MAHASISWAAnda sebaiknya tidak memilih seri dan nomor paspor sebagai kunci utamamurid. Padahal data-data tersebut pada prinsipnya bersifat wajibkekuatan dan keunikannya, namun perubahannya dapat diprakarsai oleh siswaom, dan bukan oleh administrasi fakultas.

5). Jika di antara informasi yang dikumpulkan tentang entitas, tidak mungkin untuk mengidentifikasi data yang memenuhi persyaratan di atas, maka kami merekomendasikandisarankan untuk mempertimbangkan kemungkinan pembuatan pengganti primer kunci,yang, tanpa membawa muatan semantik apa pun, hanya berfungsi pengidentifikasi instance entitas tertentu. Biasanya, segala macam opsi dipilih sebagai kunci utama pengganti.kode atau pengidentifikasi akhir. Kunci pengganti paling sering disembunyikan tingkat eksternal pemodelan database relasional.

Kunci eksternaladalah kolom atau subset dari satu tabel yang dapat berfungsi sebagai kunci utama untuk tabel lainnya. Kunci eksternal tabel adalah referensi ke kunci utama tabel lain. Aturan integritas referensial menyatakan bahwa kunci asing bisa kosong atau cocok dengan nilai kunci utama yang dirujuknya. Kunci asing merupakan bagian integral dari model relasional karena mereka mengimplementasikan hubungan antar tabel database.

Kunci asing, seperti kunci utama, juga dapat berupa kombinasi kolom. Dalam praktiknya, kunci asing akan selalu berupa gabungan (terdiri dari beberapa kolom) jika merujuk pada kunci utama gabungan di tabel lain. Jelasnya, jumlah kolom dan tipe datanya pada kunci utama dan kunci asing adalah sama.

Jika suatu tabel berhubungan dengan beberapa tabel lainnya, maka tabel tersebut dapat mempunyai beberapa kunci asing.

Konsep model relasional mewakili terminologi khusus yang diperkenalkan oleh penulis landasan teoritis, namun, mereka juga memiliki analogi yang lebih familiar (tetapi tidak setara dalam segala hal!), yang korespondensinya diberikan dalam tabel berikut ( geser 4 ).

12.1.2. Komponen kontrol dari model relasional

Himpunan operasi yang diperbolehkan pada data yang disajikan sebagai himpunan relasi ditentukan oleh aljabar relasional. Selain operasi manipulasi data relasional, komponen kontrol harus menyertakan definisi data; definisi pandangan; kondisi integritas; identifikasi hak akses; batas-batas transaksi (mulai, penyelesaian dan pembatalan).

12.1.3. Integritas data ( geser 5)

Integritas tingkat domain

Dalam teori relasional, secara umum diterima bahwa semua nilai atribut suatu relasi adalah atom. Hal ini mengikuti penafsiran konsep domain. Domain dapat dianggap sebagai himpunan bagian nilai dari beberapa tipe data yang memiliki arti tertentu. Model relasional mensyaratkan tipe data yang digunakan sederhana (skalar), yaitu tanpa struktur internal.

Domain memiliki nama unik di dalam database, ditentukan pada tipe data sederhana atau di domain lain. Sebenarnya untuk model data relasional, jenis data yang digunakan tidak penting. Syaratnya adalah tipe datanya sederhana, itu harus dipahami Operasi relasional tidak boleh memperhitungkan struktur data internal.

Tujuan utama dari domain adalah mereka membatasi perbandingan. Secara logis salah jika membandingkan nilai dari domain yang berbeda, meskipun jenisnya sama. Jadi konsep domain membantu dengan benar mensimulasikan bidang subjek.

Integritas di Tingkat Hubungan

Kunci potensial berfungsi sebagai satu-satunya sarana pengalamatan pada tingkat tupel dalam suatu hubungan. Hanya mengetahui nilai kunci kandidat tupel yang memungkinkan seseorang menentukan tupel tersebut secara akurat.

Dari perspektif pemodelan data semantik, kunci potensial berfungsi sarana identifikasi objek domain – contoh entitas, data yang disimpan dalam relasi. Karena instance ini harus dapat dibedakan menurut definisinya, pengidentifikasinya tidak boleh berisi nilai yang tidak diketahui.

Biasanya, untuk situasi data yang tidak diketahui atau tidak lengkap, tipe data dilengkapi dengan apa yang disebutBATAL- peduli.

BATAL -nilai adalah semacam indikator yang nilainya tidak diketahui. Masalah penggunaan BATAL -nilai-nilai dalam teori database relasional belum sepenuhnya terselesaikan. Hampir semua implementasi DBMS relasional modern mengizinkan penggunaan BATAL -nilai-nilai, meskipun pembenaran teoretisnya tidak mencukupi.

Aturan Integritas Hubungan berbunyi: setiap relasi harus memiliki setidaknya satu kunci kandidat yang atribut konstituennya tidak dapat diterima batal - nilai-nilai. Kunci kandidat ini paling baik dinyatakan sebagai kunci utama tabel yang sesuai dengan hubungan tersebut.

Perlu dicatat bahwa sebagian besar DBMS memungkinkan Anda membuat tabel tanpa kunci utama. Namun, pelanggaran terhadap aturan integritas hubungan dalam praktiknya langsung terasa. Misalnya untuk DBMS MS Server SQL menjadi tidak mungkin mengakses data menggunakan teknologi Penyedia OLE DB.

Integritas kunci asing (integritas tingkat basis data)

Berbagai objek domain, informasi yang disimpan dalam database, selalu saling berhubungan. Cara paling umum untuk mengkomunikasikan jenis hubungan antar hubungan ini dijelaskan dengan batasan kunci asing ( FK, Kunci Asing).

Kunci asing biasanya tidak memiliki sifat keunikan. Hal ini memang seharusnya terjadi, karena relasi anak dapat memiliki beberapa tupel yang mereferensikan tupel yang sama pada relasi induk, yang sebenarnya memberikan jenis relasi antara relasi “satu-ke-banyak” . Ini adalah jenis tautan standar yang menjaga integritas referensial. Jika kunci asing masih memiliki sifat keunikan, maka hubungan antar relasinya bertipe “satu-ke-satu”. .

Meskipun setiap nilai kunci asing harus cocok dengan nilai kunci kandidat di beberapa tupel relasi induk, hal sebaliknya umumnya tidak benar. Mungkin ada nilai dalam bidang hubungan tabel induk yang tidak direferensikan oleh nilai kunci asing mana pun.

BATAL -nilai untuk atribut kunci asing hanya valid jika atribut kunci asing tersebut bukan bagian dari kunci kandidat mana pun.

Karena kunci asing sebenarnya berfungsi sebagai referensi ke tupel dalam hubungan yang berbeda (atau sama), referensi ini tidak boleh menunjuk ke objek yang tidak ada.

Pertimbangan yang dirumuskan di atas menentukan aturan integritas kunci asing atau integritas referensial database relasional: kunci asing tidak boleh tidak konsisten, yaitu untuk setiap nilai kunci asing harus ada nilai yang sesuai di bidang hubungan di relasi induk.

12.1.4. Aturan Codd

Secara umum, konsep model relasional didefinisikan oleh dua belas aturan Codd berikut ( geser 6 ):

1.Aturan Informasi. Semua informasi dalam database harus disediakan secara eksklusif pada tingkat logis dan hanya dalam satu cara - dalam bentuk nilai yang terkandung dalam tabel.

2.Aturan akses terjamin. Akses logis ke setiap elemen data (nilai atom) dalam database relasional harus disediakan dengan menggunakan kombinasi nama tabel, kunci utama, dan nama kolom.

3.Aturan dukungan nilai tidak valid. Basis data relasional harus mendukung nilai tidak valid yang berbeda dari string karakter dengan panjang nol, string spasi putih, nol, atau angka lainnya dan digunakan untuk mewakili data yang hilang, apa pun jenis datanya.

4.Aturan direktori dinamis berdasarkan model relasional. Deskripsi tingkat logis dari database harus disajikan dalam bentuk yang sama dengan data master sehingga pengguna dengan hak yang sesuai dapat bekerja dengannya menggunakan bahasa relasional yang sama dengan yang mereka gunakan untuk bekerja dengan data master.

5.Aturan Subbahasa Data Lengkap . Sistem relasional dapat mendukung berbagai bahasa dan mode interaksi pengguna (misalnya, mode tanya jawab). Namun, harus ada setidaknya satu bahasa yang pernyataannya dapat direpresentasikan sebagai string karakter menurut sintaks yang terdefinisi dengan baik dan sepenuhnya mendukung definisi data; definisi pandangan; pemrosesan data (interaktif dan terprogram); kondisi integritas; identifikasi hak akses; batas-batas transaksi (mulai, penyelesaian dan pembatalan).

6. Lihat aturan pembaruan. Semua pandangan yang secara teoritis dapat diperbarui harus tersedia untuk diperbarui.

7. Aturan untuk menambah, memperbarui dan menghapus. Kemampuan untuk bekerja dengan suatu relasi sebagai operan tunggal harus ada tidak hanya ketika membaca data, tetapi juga ketika menambah, memperbarui, dan menghapus data.

8. Aturan independensi data fisik. Program aplikasi dan utilitas untuk bekerja dengan data harus tetap utuh pada tingkat logis terlepas dari perubahan apa pun dalam cara data disimpan atau diakses.

9. Aturan independensi data logis. Program aplikasi dan utilitas data harus tetap utuh secara logis ketika ada perubahan yang dilakukan pada tabel yang mendasarinya yang secara teoritis menjaga data yang terkandung dalam tabel tersebut tetap utuh.

10. Aturan independensi kondisi integritas. Seharusnya dimungkinkan untuk mendefinisikan kondisi integritas spesifik untuk database relasional tertentu dalam subbahasa database relasional dan menyimpannya di direktori, bukan di program aplikasi.

11. Kemandirian aturan propagasi. DBMS relasional tidak boleh bergantung pada kebutuhan klien tertentu.

12. Aturan keunikan. Jika sistem relasional memiliki bahasa tingkat rendah (memproses satu record dalam satu waktu), maka sistem tersebut tidak boleh digunakan untuk melewati aturan dan ketentuan integritas yang dinyatakan dalam bahasa relasional tingkat tinggi (memproses banyak record sekaligus) ).

Aturan 2 menunjukkan peran kunci utama saat mencari informasi dalam database. Nama tabel memungkinkan Anda menemukan tabel yang diinginkan, nama kolom memungkinkan Anda menemukan kolom yang diinginkan, dan kunci utama memungkinkan Anda menemukan baris berisi item data yang Anda cari.

Aturan 3 mengharuskan data yang hilang dapat direpresentasikan menggunakan nilai yang tidak valid ( BATAL) .

Aturan 4 menyatakan bahwa database relasional harus mendeskripsikan dirinya sendiri. Dengan kata lain, database harus berisi satu set tabel sistem, menggambarkan struktur database itu sendiri.

Aturan 5 mengharuskan DBMS untuk menggunakan bahasa database relasional, mis. SQL . Bahasa seperti itu harus mendukung semua fungsi utama DBMS - membuat database, membaca dan memasukkan data, menerapkan keamanan database, dll.

Aturan 6 kekhawatiran ide ide, itu adalah tabel virtual, memungkinkan pengguna yang berbeda untuk melihat bagian berbeda dari struktur database. Ini adalah salah satu aturan yang paling sulit diterapkan dalam praktik.

Aturan 7 menekankan bahwa basis data pada dasarnya berorientasi pada kumpulan. Hal ini mengharuskan operasi penambahan, penghapusan, dan pembaruan dapat dilakukan pada kumpulan baris. Aturan ini dimaksudkan untuk melarang implementasi yang hanya mendukung operasi string tunggal.

Aturan 8 dan 9 berarti memisahkan pengguna dan program aplikasi dari implementasi database tingkat rendah. Mereka berpendapat bahwa penyimpanan spesifik atau implementasi akses yang digunakan dalam DBMS, dan bahkan perubahan dalam struktur tabel database, tidak boleh mempengaruhi kemampuan pengguna untuk bekerja dengan data.

Aturan 10 menyatakan bahwa bahasa database harus mendukung kondisi pembatasan yang dikenakan pada data yang dimasukkan dan tindakan yang dapat dilakukan pada data tersebut.

Aturan 11 menyatakan bahwa bahasa database harus mampu bekerja dengan data terdistribusi yang terletak di sistem komputer lain.

Aturan 12 mencegah penggunaan kemampuan database selain bahasa database, yang dapat membahayakan integritas database.

12.2. Normalisasi.

Saat bekerja dengan hubungan yang berisi data berlebihan, masalah yang dipanggil memperbarui anomali dan dibagi menjadi anomali penyisipan, anomali penghapusan, dan anomali modifikasi. Perhatikan, misalnya, relasi yang disajikan pada slide ( geser 7 ).

Anomali penyisipan. Anda tidak dapat menambahkan, misalnya, informasi tentang suatu disiplin ilmu yang belum ada siswa yang diambil ke tabel relasional. Di sisi lain, penambahan disiplin ilmu baru bagi seorang siswa akan memerlukan duplikasi informasi tentang siswa tersebut, yang berpotensi menyebabkan ketidakcocokan data (jika terjadi kesalahan input).

Anomali penghapusan. Saat menghapus informasi dari tabel relasional tentang siswa yang telah lulus ujian atau ujian dalam disiplin ilmu tertentu, informasi tentang disiplin itu sendiri akan dihapus seluruhnya.

Anomali Modifikasi. Menyebabkan potensi ketidakkonsistenan data yang terjadi saat memasukkan data duplikat (jika terjadi kesalahan entri pada satu nilai atau lebih), maupun saat mengedit data duplikat.

Anomali yang tercantum dapat dihindari dengan menormalkan rasio awal.

Proses normalisasi adalah penguraian suatu tabel menjadi dua atau lebih untuk menghilangkan duplikasi data dan potensi inkonsistensi. Tujuan akhir dari normalisasi adalah untuk mencapai desain database di mana “setiap fakta muncul hanya di satu tempat.”

12.2.1. Ketergantungan fungsional

Proses normalisasi didasarkan pada konsep ketergantungan fungsional. Ketergantungan fungsional menggambarkan hubungan antar atribut suatu relasi: jika dalam suatu relasi R berisi atribut A dan B, atribut B secara fungsional bergantung pada atribut A, maka setiap nilai individu atribut A dikaitkan hanya dengan satu nilai atribut B (dan kelompok atribut dapat bertindak sebagai A dan B) . Atribut atau kelompok atribut A disebut penentu ketergantungan fungsional ( geser 8 ).

Jadi, dengan adanya ketergantungan fungsional A →B, tupel (baris) yang memiliki nilai atribut A yang sama juga berhimpitan dengan nilai atribut B. Namun, yang sebaliknya tidak benar: nilai atribut B yang sama dapat bersesuaian dengan nilai atribut A yang berbeda. Misalnya, dari hubungan fungsional Karyawan → Posisi, maka di mana pun karyawan “Eremeev V.K” ditunjukkan, posisi “Profesor” akan sesuai dengannya, tetapi karyawan lain mungkin juga memiliki posisi “Profesor”.

Ketergantungan fungsional A →B adalah penuh ketergantungan fungsional jika menghapus atribut apa pun dari grup atribut A mengakibatkan hilangnya ketergantungan tersebut. Ketergantungan fungsional A →B adalah sebagian ketergantungan fungsional jika grup atribut A berisi satu atau lebih atribut yang, ketika dihapus, tetap mempertahankan ketergantungan tersebut.

Jika untuk atribut A, B dan C suatu relasi terdapat ketergantungan fungsional A →B, B →C, maka atribut C dikatakan berelasi ketergantungan transitif dengan atribut A hingga atribut B (dalam hal ini, atribut A tidak boleh bergantung secara fungsional pada atribut B atau atribut C).

Ketergantungan multinilai. Suatu atribut suatu tabel dikatakan mendefinisikan secara multinilai atribut lain dari tabel yang sama jika, untuk setiap nilai atribut pertama, terdapat himpunan nilai-nilai yang bersesuaian dari atribut kedua yang terdefinisi dengan baik ( geser 9 ).

Sebagai contoh, perhatikan penggalan tabel “Penerimaan ujian (tes)”. Tabel tersebut mencerminkan hubungan antara disiplin dan formulir pelaporan dengan nama guru. Dalam tabel ini terdapat hubungan multinilai “Disiplin - Guru”: disiplin “Analisis Matematika” diajarkan oleh beberapa guru (Rakov I.I., Rybin K.K., Karpov K. Yu.) dan, karenanya, mereka semua dapat berpartisipasi dalam mengikuti ujian (tes). Hubungan multinilai lainnya adalah “Disiplin - Formulir Pelaporan”: baik ujian maupun ujian dapat dilakukan dalam disiplin ilmu yang sama. Pada saat yang sama, Formulir Pelaporan dan Guru tidak dihubungkan oleh ketergantungan fungsional, yang menyebabkan redundansi (untuk menambahkan nama guru lain, Anda harus memasukkan dua baris baru ke dalam tabel).

12.2.2. Bentuk biasa

Pada setiap tahap normalisasi, masing-masing relasi berada dalam salah satu yang disebut bentuk biasa. Bentuk normal (dari yang terendah hingga yang tertinggi) dihubungkan dengan operasi inklusi, yaitu. bentuk normal yang lebih tua memiliki sifat-sifat yang sama dengan semua bentuk normal sebelumnya dan juga memiliki ciri khas tersendiri.

Normalisasi adalah metode formal untuk menganalisis hubungan dengan mengidentifikasi kunci utama dan ketergantungan fungsional yang ada. Penghapusan berurutan dari ketergantungan fungsional parsial dan ketergantungan transitif dilakukan dengan menguraikan hubungan dan memindahkannya ke bentuk normal berikutnya (yang lebih tinggi).

Tabel relasional berada dalam bentuk normal pertama (1NF), Jika ( geser 10 )

Setiap nilai atribut apa pun bersifat atomik;

Tidak ada baris yang identik dalam tabel;

Setiap kolom diberi nama secara unik berdasarkan nama atribut dan berisi nilai atribut tersebut saat ini;

Setiap atribut dikaitkan dengan domain tertentu (tipe data).

Tabel relasional di 1NF memiliki kunci utama - suatu atribut atau kumpulan atribut yang nilainya secara unik menjadi ciri setiap record.

Tabel relasional berada dalam bentuk normal kedua (2NF), jika memenuhi definisi 1NF dan semua atributnya yang tidak termasuk dalam kunci utama akan bergantung sepenuhnya pada kunci utama.

Tabel relasional sudah dalam bentuk normal ketiga (3NF)(geser 11 ), jika memenuhi definisi 2NF dan tidak ada atribut non-kunci yang memiliki ketergantungan fungsional transitif pada kunci utama (yaitu, tidak ada atribut non-kunci yang memiliki ketergantungan fungsional pada atribut non-kunci lainnya).

Mejanya sudah masuk Bentuk normal ketiga Boyce-Codd (BCNF)(bentuk normal ketiga kuat) jika dan hanya jika ketergantungan fungsional antara atribut-atributnya tereduksi menjadi ketergantungan fungsional sepenuhnya mungkin kunci utama (yaitu, semua faktor penentu hubungan adalah kunci utama potensial).

Biasanya dalam praktiknya mereka puas dengan mengubah database relasional ke 3NF atau BCNF, jadi kami tidak akan mempertimbangkan bentuk normal yang lebih tinggi di sini.

Bentuk normal berikut (4NF dan 5NF) memperhitungkan tidak hanya ketergantungan fungsional, tetapi juga ketergantungan multinilai antar atribut. Untuk memberikan definisi bentuk normal ini, kami memperkenalkan konsep penguraian lengkap sebuah tabel ( geser 12 ).

Dekomposisi tabel lengkap sebut saja kumpulan sejumlah proyeksinya yang berubah-ubah, yang hubungannya sepenuhnya sesuai dengan isi tabel.

Mejanya sudah masuk bentuk normal kelima (5NF) jika dan hanya jika dalam setiap dekomposisi lengkapnya semua proyeksi mengandung kunci yang mungkin. Tabel yang tidak memiliki dekomposisi lengkap juga ada di 5NF.

Bentuk normal keempat (4NF) adalah kasus khusus 5NF, ketika dekomposisi lengkap harus berupa gabungan dua proyeksi. Dalam praktiknya, tidak mudah untuk menemukan tabel nyata yang ada di 4NF, tetapi tidak di 5NF.

12.3. Prosedur normalisasi ( geser 14)

Prosedur untuk mengonversi tabel ke 3NF didasarkan pada fakta bahwa satu-satunya dependensi fungsional dalam tabel mana pun adalah dependensi bentuk AK, Di mana K adalah kunci utama, dan A- beberapa atribut. Tujuan normalisasi adalah untuk menghilangkan ketergantungan fungsional lainnya.

Ada dua kemungkinan kasus:

1. Tabel mempunyai kunci utama komposit, misalnya ( K1,K2), dan juga menyertakan atribut A, yang secara fungsional bergantung pada bagian kunci tersebut (misalnya, pada K2), tetapi tidak dari kunci lengkap. Dalam hal ini, disarankan untuk membuat tabel lain yang berisi atribut K2 Dan A(kunci utama - K2), dan hapus atributnya A dari tabel asli ( geser 15 ).

2. Tabel memiliki kunci utama (mungkin). KE, atribut A1, yang bukan merupakan kunci yang mungkin, tetapi bergantung secara fungsional KE, dan atribut non-kunci lainnya A2, yang secara fungsional bergantung pada A1. Solusinya di sini pada dasarnya sama seperti sebelumnya - tabel lain dibentuk berisi atribut A1 Dan A2, dengan kunci utama A1, dan atributnya A2 dihapus dari tabel asli (geser 16).

Jadi, dengan mengulangi penerapan dua aturan yang dibahas, untuk setiap tabel tertentu di hampir semua situasi praktis nyata, seseorang pada akhirnya dapat memperoleh satu set tabel yang berada dalam 3NF atau BCNF dan tidak mengandung bentuk ketergantungan fungsional apa pun selain dari AKE.

12.4. Mendapatkan skema relasional dari diagram ER ( geser 17)

1. Setiap entitas sederhana berubah menjadi tabel (relasi). Nama entitas menjadi nama tabel.

2. Relasi banyak ke banyak dianggap sebagai relasi entitas dan berubah menjadi tabel (relasi). Dengan demikian, hubungan banyak ke banyak diubah menjadi dua hubungan banyak ke satu.

3. Setiap atribut menjadi kolom yang memungkinkan dengan nama yang sama. Kolom yang sesuai dengan atribut opsional mungkin berisi nilai nol; kolom yang sesuai dengan atribut yang diperlukan tidak bisa. Jika atributnya banyak, maka relasi terpisah dibuat untuk atribut tersebut.

4. Komponen pengidentifikasi unik entitas diubah menjadi kunci utama. Jika ada beberapa kemungkinan pengidentifikasi unik, yang paling sering digunakan akan dipilih. Jika pengidentifikasi unik mencakup hubungan, maka salinan pengidentifikasi unik entitas di ujung hubungan ditambahkan ke jumlah kolom kunci utama (proses ini dapat dilanjutkan secara rekursif). Kolom ini diberi nama menggunakan nama akhir hubungan dan/atau nama entitas.

5. Hubungan banyak-ke-satu dan satu-ke-satu menjadi kunci asing. Itu. Salinan pengidentifikasi unik dari ujung "satu" hubungan dibuat, dan kolom terkait merupakan kunci asing.

6. Indeks dibuat berdasarkan kunci utama (indeks unik), serta kunci asing dan atribut-atribut yang akan sering digunakan dalam kueri.

7. Jika ada subtipe dalam skema konseptual, maka ada dua pilihan yang mungkin.

Semua subtipe disimpan dalam satu tabel, yang dibuat untuk supertipe terluar, dan tampilan dibuat untuk subtipe tersebut. Setidaknya satu kolom yang berisi kode TYPE ditambahkan ke tabel dan menjadi bagian dari kunci utama.

Dalam kasus kedua, tabel terpisah dibuat untuk setiap subtipe dan untuk setiap subtipe tingkat pertama (untuk subtipe yang lebih rendah - tampilan), supertipe dibuat ulang menggunakan tampilan UNION (kolom umum - kolom supertipe - dipilih dari semua tabel subtipe) .

8. Jika kunci asing yang tersisa semuanya berada dalam domain yang sama, mis. memiliki format yang sama, dua kolom dibuat: pengidentifikasi hubungan dan pengidentifikasi entitas. Kolom ID hubungan digunakan untuk membedakan hubungan. Kolom pengidentifikasi entitas digunakan untuk menyimpan nilai pengidentifikasi unik entitas di ujung hubungan terkait.

Jika kunci asing yang dihasilkan tidak termasuk dalam domain yang sama, maka kolom kunci asing eksplisit dibuat untuk setiap hubungan yang tercakup dalam busur pengecualian.

Publikasi tentang topik tersebut