1.1 Pambuka
Ngrancang database meh padha karo ngrancang arsitektur proyek Jawa. Sampeyan bisa nyelehake kabeh data ing sawetara tabel, utawa sampeyan bisa mbangun struktur data sing apik saka skema lan puluhan tabel.
Mangkene tugas sing biasane ditindakake pangembang nalika ngrancang database:
- Mesthekake yen kabeh informasi sing dibutuhake disimpen ing database.
- Njamin kamungkinan entuk data babagan kabeh panjaluk sing dibutuhake.
- Ngurangi redundansi lan duplikasi data.
- Njamin Integritas Database
- Optimization kacepetan akses data
Wangsulan: Bab ingkang utama kanggo elinga iku sampeyan ora bisa nggawe struktur database becik, amarga. iku, kaya kode Panjenengan, uga bakal ngganti terus. Ana telung perkara sing kudu dielingi nalika ngrancang struktur database:
- Struktur kudu cukup apik.
- Mesthi ana logika ing kabeh sing bisa dingerteni wong liya.
- Optimasi durung wayahe minangka oyod saka kabeh piala.
Sampeyan ora kudu nggawe struktur database paling apik ing donya. Dheweke isih bakal ngganti. Tugas sampeyan kanggo mesthekake yen sawise 20 owah-owahan ing struktur database sampeyan, cukup gampang kanggo ngerteni.
Paling kamungkinan ing taun pisanan karya, ora ana sing bakal dipercaya kanggo ngrancang basis saka ngeruk. Sampeyan bakal nggawe owah-owahan menyang skema sing wis ana. Sampeyan kudu nyoba mangertos adhedhasar prinsip apa sing disusun lan dipatuhi . Kanthi piagam kasebut, dheweke ora mlebu biara wong liya.
Aja ngoptimalake database nganti perlu. Yen tabel mung duwe sawetara atus larik, kemungkinan DBMS bakal disimpen ing memori lan pitakon cache.
Ing tangan liyane, sampeyan kudu bisa nyepetake karya panjalukan penting dening puluhan utawa malah atusan kaping. Lan bakal becik yen sampeyan ngerti carane nindakake. Carane padha ngomong ing SMA ing taun pisanan? "Lali kabeh sing diwulangake ing sekolah ..."
Yen sampeyan ngerti apa normalisasi database, banjur aku cepet-cepet nyenengake sampeyan, ing karya sampeyan, sampeyan bakal bisa ngatasi de-normalisasi . Ora ana sing luwih penting kanggo papan suci proyek tinimbang kacepetan database. Lan yen, kanggo nyepetake pilihan data saka database, sampeyan kudu nggabungake 200 (!) Tabel dadi siji (karo redundansi monstrous), sampeyan kudu nindakake iki.
1.2 Desain Pustaka
Ayo nyilem menyang area subyek lan mikir babagan desain database nggunakake sing prasaja kaya perpustakaan buku sing khas.
Tugas utama perpustakaan apa wae yaiku ngolah dana buku. Gampang kanggo mbedakake telung klompok utama pangguna sistem: maca, pustakawan, administrator . Aktivitas saben ditampilake ing diagram kasus panggunaan.
![](https://cdn.codegym.cc/images/article/ce739b07-800a-4e3c-a436-b40d3c54ea1d/512.jpeg)
Saiki, sawetara entitas lan hubungan database mangsa bisa dibedakake:
![](https://cdn.codegym.cc/images/article/b7373320-28d3-4fd8-9b62-a75c6102299f/1024.jpeg)
Kanthi pendekatan iki, ora jelas carane nyambungake maca karo buku (pembaca ora duwe arity ing hubungan "penerbitan / resepsi". Yen buku kasebut duwe sawetara salinan, mula bisa diterbitake kanggo sawetara pembaca. Malah Yen buku dimangerteni minangka salinan siji, banjur nalika disimpen ing tabel buku sing maca saiki, bakal ora bisa entuk informasi babagan sapa (lan kaping pirang-pirang) njupuk buku iki sadurunge.
Solusi kasebut bisa dadi introduksi entitas tambahan - kertu kanggo nerbitake buku. Nalika buku ditanggepi kanggo maca, kertu digawe, lan nalika buku dipasrahake, tandha cocog sijine ing. Kanthi bantuan kertu kasebut, utang saben pangguna ditemtokake lan statistik babagan panggunaan buku diitung. Nalika pesen literatur dening sing maca, kertu uga diwiwiti; yen literatur sing dipesen ora dijupuk dening pamaca sajrone wektu tartamtu, kertu kasebut bakal dirusak. Ana watesan ing jumlah buku sing maca bisa dipesen.
Nalika milih sastra, pangguna ndeleng katalog literatur kanthi kemampuan kanggo nyaring asil panelusuran miturut penulis, judhul, taun publikasi.
Sampeyan bisa ngetung statistik kanggo kabeh buku ing perpustakaan, nalika nomer ditanggepi salinan buku kanggo wektu tartamtu. Sampeyan uga bisa ngeset jumlah minimal buku sing etungan dileksanakake. Adhedhasar statistik kasebut, buku sing ora digunakake dibuwang saka perpustakaan.
Entitas utama ing area subyek bisa dibedakake:
- pangguna (pustakawan lan administrator);
- maca;
- kamar maca;
- buku;
- kertu penerbitan buku;
- kertu pesenan buku.
Diagram ER sing diowahi saka database ditampilake ing gambar.
![](https://cdn.codegym.cc/images/article/af26b62d-dd9e-4713-be71-3f4fc10c5379/1024.jpeg)
Miturut kasus panggunaan sing ditampilake ing Gambar 1, basis data kudu ngetrapake pitakon ing ngisor iki (dudu dhaptar lengkap):
- nampilake buku sing cocog karo kahanan sing ditemtokake;
- nampilake pangguna sing duwe kertu kanggo nerbitake buku sing durung ditutup ing wektu sing tepat (pustakawan nggoleki wong sing duwe utang);
- nampilake kabeh buku sing cocog karo kertu kredit buku pangguna sing ora ditutup ing wektu (pangguna teka ing perpustakaan kanggo buku anyar - sampeyan kudu ndeleng manawa dheweke duwe utang lan ngandhani babagan iki);
- mbusak kabeh kertu pesenan digawe luwih saka N detik kepungkur;
- nampilake kabeh buku sing cocog karo kertu leladen buku sing ora ditutup saka pangguna sing ditemtokake (sing maca pesen buku lan teka ing perpustakaan kanggo wong-wong mau - pustakawan kudu njaluk dhaptar iki supaya bisa menehi).
1.3 Tatanan skema
Kanggo nggawe skema data, sampeyan kudu nglengkapi diagram ER dhisik kanthi rincian entitas (nyaring). Kadhangkala, ing wektu sing padha, sampeyan bisa nemokake kesalahan nalika nggawe diagram ER - ing tugas iki, ditemokake yen buku kasebut kudu "piye wae" disambungake karo balai perpustakaan.
Iki bisa ditindakake kanthi nempatake "nomer aula" sing dibutuhake ing buku kasebut, nanging kanthi pendekatan iki, buku sing padha kudu diterangake kaping pirang-pirang ing database (yen ana ing aula sing beda). Pendekatan sing luwih bener yaiku ngenalake entitas tambahan "penempatan buku". Tokoh nuduhake diagram ER karo entitas ditambahaké lan peraga.
![](https://cdn.codegym.cc/images/article/e0d1296a-18db-464c-88ac-c6f6a33c661b/1024.jpeg)
Diagram ER ing ndhuwur nggambarake tabel utama, hubungan lan atribut; ing basis, sampeyan bisa mbangun model database. Ora ana standar kanggo diagram ER, nanging ana sawetara notasi (Chen, IDEFIX, Martin, etc.), nanging standar utawa notasi ora bisa ditemokake kanggo model domain. Nanging, sajrone nggawe diagram kasebut, kolom kunci (eksternal lan internal) kudu disorot, kadhangkala indeks lan jinis data.
Ing kasus iki, ing diagram ing ngisor iki:
- kanggo pranala, notasi Martin ("kaki gagak" digunakake);
- Tabel ditampilake minangka persegi panjang sing dipérang dadi 3 bagean:
- jeneng tabel;
- tombol internal (ditandhani nganggo marker);
- kolom sing isih ana, dene sing wajib ditandhani nganggo tandha.
Nalika ngembangake model iki, ana kepinginan kanggo nggabungake tabel administrator karo tabel pustakawan - nambah tabel pangguna, nanging:
- pangurus ora digandhengake karo kamar tartamtu (sampeyan kudu ngisi kolom sing cocog karo nilai null);
- iki mbokmenawa bakal complicate distribusi hak akses - saiki mung administrator database (sing makarya liwat panel DBMS khusus lan ora duwe akun ing sistem sing dikembangaké) duwe akses menyang meja administrator. Nanging, nalika gabung karo tabel, pitakon pangguna mbutuhake akses menyang tabel anyar.
Nalika mbangun diagram iki, cacat ing diagram ER ditemokake lan didandani - tabel ditambahake librarians_rooms
sing nyawiji pustakawan lan aula. Iki perlu amarga siji pustakawan bisa kerja ing sawetara kamar, nanging sawetara pustakawan bisa kerja ing kamar sing padha.
Nalika ngrancang database, sampeyan kudu bisa alesan paling ora kaya conto ing ndhuwur. Yen sampeyan mikir yen sampeyan wis sukses, ayo luwih maju: luwih akeh teori.