1.1 Pengenalan

Mereka bentuk pangkalan data agak serupa dengan mereka bentuk seni bina projek Java. Anda boleh meletakkan semua data dalam beberapa jadual, atau anda boleh membina struktur data yang cantik daripada skema dan berpuluh-puluh jadual.

Berikut ialah tugas yang biasanya dihadapi oleh pembangun semasa mereka bentuk pangkalan data:

  1. Memastikan semua maklumat yang diperlukan disimpan dalam pangkalan data.
  2. Memastikan kemungkinan mendapatkan data mengenai semua permintaan yang diperlukan.
  3. Mengurangkan lebihan dan pertindihan data.
  4. Memastikan Integriti Pangkalan Data
  5. Pengoptimuman kelajuan capaian data

Perkara utama yang perlu diingat ialah anda tidak boleh membuat struktur pangkalan data yang ideal, kerana. ia, seperti kod anda, juga akan sentiasa berubah. Terdapat tiga perkara yang perlu anda ingat semasa mereka bentuk struktur pangkalan data anda:

  1. Struktur mestilah cukup baik.
  2. Mesti ada logik dalam semua yang orang lain boleh faham.
  3. Pengoptimuman pramatang adalah punca segala kejahatan.

Anda tidak perlu membuat struktur pangkalan data terbaik di dunia. Dia tetap akan berubah. Tugas anda adalah untuk memastikan bahawa selepas 20 perubahan pada struktur pangkalan data anda, ia cukup mudah untuk memikirkannya.

Kemungkinan besar pada tahun-tahun pertama kerja anda, tiada siapa yang akan mempercayai anda untuk mereka bentuk asas dari awal. Anda akan membuat perubahan pada skema sedia ada. Anda perlu cuba memahami berdasarkan prinsip apa yang disusun dan mematuhinya . Dengan piagam mereka, mereka tidak memanjat ke biara orang lain.

Jangan mengoptimumkan pangkalan data sehingga diperlukan. Jika jadual hanya mempunyai beberapa ratus baris, kemungkinan besar DBMS akan menyimpannya dalam memori dan pertanyaan cache kepadanya.

Sebaliknya, anda sepatutnya dapat mempercepatkan kerja permintaan penting sebanyak puluhan atau bahkan ratusan kali. Dan alangkah baiknya jika anda tahu cara melakukannya. Bagaimana mereka berkata di sekolah menengah pada tahun pertama? "Lupakan semua yang diajar di sekolah..."

Jika anda tahu apa itu normalisasi pangkalan data, maka saya bergegas untuk menggembirakan anda, dalam kerja anda, kemungkinan besar anda akan berurusan dengan penyahnormalan . Tiada yang lebih penting untuk tempat perlindungan projek daripada kelajuan pangkalan data. Dan jika, untuk mempercepatkan pemilihan data dari pangkalan data, anda perlu menggabungkan 200 (!) Jadual menjadi satu (dengan lebihan yang besar), anda perlu melakukan ini.

1.2 Reka Bentuk Perpustakaan

Mari kita selami sedikit kawasan subjek dan fikirkan tentang reka bentuk pangkalan data menggunakan sesuatu yang semudah perpustakaan buku biasa.

Tugas utama mana-mana perpustakaan ialah pemprosesan dana buku. Adalah mudah untuk membezakan tiga kumpulan utama pengguna sistem: pembaca, pustakawan, pentadbir . Aktiviti setiap satu ditunjukkan dalam rajah kes guna.

Kini, beberapa entiti dan hubungan pangkalan data masa depan boleh dibezakan:

Dengan pendekatan ini, tidak jelas bagaimana untuk menghubungkan pembaca dengan buku (pembaca tidak mempunyai arity dalam hubungan "penerbitan / penerimaan". Jika buku itu mempunyai beberapa salinan, maka ia boleh dikeluarkan kepada beberapa pembaca. Malah jika buku difahami sebagai satu salinan, maka apabila disimpan dalam jadual buku pembaca semasa, adalah mustahil untuk mendapatkan maklumat tentang siapa (dan berapa kali) mengambil buku ini lebih awal.

Penyelesaiannya mungkin pengenalan entiti tambahan - kad untuk mengeluarkan buku. Apabila buku itu dikeluarkan kepada pembaca, kad dibuat, dan apabila buku itu diserahkan, tanda yang sepadan diletakkan di atasnya. Dengan bantuan kad ini, hutang setiap pengguna ditentukan dan statistik penggunaan buku dikira. Apabila menempah bahan bacaan oleh pembaca, kad juga dimulakan; jika kesusasteraan yang ditempah tidak diambil oleh pembaca dalam tempoh tertentu, kad itu dimusnahkan. Terdapat had pada bilangan buku yang boleh ditempah oleh pembaca.

Apabila memilih sastera, pengguna melihat katalog sastera dengan keupayaan untuk menapis hasil carian mengikut pengarang, tajuk, tahun penerbitan.

Adalah mungkin untuk mengira statistik untuk semua buku di perpustakaan, manakala bilangan salinan buku yang dikeluarkan untuk tempoh masa tertentu. Anda juga boleh menetapkan bilangan contoh buku minimum yang pengiraan dilakukan. Berdasarkan statistik ini, buku yang tidak digunakan akan dihapuskan daripada perpustakaan.

Entiti utama berikut bagi kawasan subjek boleh dibezakan:

  • pengguna (pustakawan dan pentadbir);
  • pembaca;
  • bilik bacaan;
  • buku;
  • kad pengeluaran buku;
  • tempah kad tempahan.

Rajah ER yang diubah suai bagi pangkalan data ditunjukkan dalam rajah.

Menurut kes penggunaan yang ditunjukkan dalam Rajah 1, pangkalan data harus melaksanakan pertanyaan berikut (bukan senarai lengkap):

  • paparan buku yang sepadan dengan syarat yang ditetapkan;
  • memaparkan pengguna yang mempunyai kad untuk mengeluarkan buku yang belum ditutup tepat pada masanya (pustakawan sedang mencari penghutang);
  • paparkan semua buku yang sepadan dengan kad peminjaman buku pengguna yang diberikan yang tidak ditutup pada masanya (pengguna datang ke perpustakaan untuk buku baharu - anda perlu melihat sama ada dia seorang penghutang dan memaklumkannya mengenainya);
  • padamkan semua kad tempahan yang dibuat lebih daripada N saat yang lalu;
  • paparkan semua buku yang sepadan dengan kad tempahan buku yang tidak ditutup bagi pengguna yang ditentukan (pembaca memesan buku dan datang ke perpustakaan untuk mereka - pustakawan perlu mendapatkan senarai ini untuk memberikannya).

1.3 Pembentukan skema

Untuk membentuk skema data, anda mesti melengkapkan gambar rajah ER terlebih dahulu dengan butiran entiti (memperhalusinya). Kadang-kadang, pada masa yang sama, adalah mungkin untuk mencari ralat dalam membina rajah ER - dalam tugas ini, didapati bahawa buku itu perlu "entah bagaimana" disambungkan dengan dewan perpustakaan.

Ini boleh dilakukan dengan meletakkan "nombor dewan" yang diperlukan dalam buku, bagaimanapun, dengan pendekatan ini, buku yang sama perlu diterangkan dalam pangkalan data beberapa kali (jika ia berlaku di dewan yang berbeza). Pendekatan yang lebih betul ialah memperkenalkan entiti tambahan "penempatan buku". Rajah menunjukkan gambar rajah ER dengan entiti dan prop tambahan.

Gambar rajah ER di atas mencerminkan jadual utama, hubungan dan atribut; berdasarkannya, anda boleh membina model pangkalan data. Tiada piawai untuk rajah ER, tetapi terdapat beberapa tatatanda (Chen, IDEFIX, Martin, dsb.), tetapi piawaian mahupun tatatanda tidak boleh ditemui untuk model domain. Walau bagaimanapun, semasa membina rajah sedemikian, medan utama (luaran dan dalaman) semestinya diserlahkan, kadangkala indeks dan jenis data.

Dalam kes ini, dalam rajah berikut:

  • untuk pautan, notasi Martin ("kaki gagak" digunakan);
  • jadual ditunjukkan sebagai segi empat tepat dibahagikan kepada 3 bahagian:
    • nama jadual;
    • kunci dalaman (ditandakan dengan penanda);
    • medan yang tinggal, manakala yang wajib ditanda dengan penanda.

Semasa membangunkan model ini, terdapat keinginan untuk menyertai jadual pentadbir dengan jadual pustakawan - tambah jadual pengguna, bagaimanapun:

  • pentadbir tidak dikaitkan dengan bilik tertentu (anda perlu mengisi medan yang sepadan dengan nilai nol);
  • ini mungkin akan merumitkan pengagihan hak akses - kini hanya pentadbir pangkalan data (yang bekerja melalui panel DBMS khas dan tidak mempunyai akaun dalam sistem yang sedang dibangunkan) mempunyai akses kepada jadual pentadbir. Walau bagaimanapun, apabila menyertai jadual, pertanyaan pengguna memerlukan akses kepada jadual baharu.

Semasa membina rajah ini, kecacatan dalam rajah ER ditemui dan diperbetulkan - jadual telah ditambah librarians_roomsyang menyatukan pustakawan dan dewan. Ini adalah perlu kerana seorang pustakawan boleh bekerja di beberapa bilik, tetapi beberapa pustakawan boleh bekerja di dalam bilik yang sama.

Apabila mereka bentuk pangkalan data, anda sepatutnya dapat membuat alasan sekurang-kurangnya seperti contoh di atas. Jika anda fikir anda berjaya, mari pergi lebih jauh: lebih banyak teori.