Hubungan Pangkalan Data

Hubungan pangkalan data adalah tulang belakang semua pangkalan data hubungan

Hubungan didirikan di antara dua jadual pangkalan data apabila satu jadual mempunyai kunci asing yang merujuk kunci primer jadual lain. Inilah konsep asas di sebalik pangkalan data hubungan relasi.

Bagaimana Kunci Asing berfungsi untuk mewujudkan hubungan

Mari mengkaji asas-asas kekunci utama dan asing. Kunci utama mengenal pasti setiap rekod dalam jadual. Ia adalah jenis kunci calon yang biasanya merupakan lajur pertama dalam jadual dan boleh dijana secara automatik oleh pangkalan data untuk memastikan ia unik.

Kunci asing adalah kunci calon lain (bukan kunci utama) yang digunakan untuk menghubungkan rekod ke data dalam jadual lain.

Sebagai contoh, pertimbangkan kedua-dua jadual yang mengenal pasti guru yang mengajar kursus mana.

Di sini, kunci utama Kursus Kursus ialah Course_ID. Kunci luarnya adalah Teacher_ID:

Kursus
Course_ID Nama kursus Teacher_ID
Course_001 Biologi Teacher_001
Course_002 Matematik Teacher_001
Course_003 Bahasa Inggeris Teacher_003

Anda dapat melihat bahawa kunci utama dalam Kursus sepadan dengan kunci utama dalam Guru:

Guru
Teacher_ID Teacher_Name
Teacher_001 Carmen
Teacher_002 Veronica
Teacher_003 Jorge

Kita boleh mengatakan bahawa kunci asing Teacher_ID telah membantu mewujudkan hubungan antara jadual Kursus dan Guru.

Jenis Hubungan Pangkalan Data

Menggunakan kekunci asing, atau kekunci calon lain, anda boleh melaksanakan tiga jenis perhubungan antara jadual:

Satu-ke-satu : Hubungan jenis ini hanya membenarkan satu rekod pada setiap sisi hubungan.

Kekunci utama berkaitan dengan hanya satu rekod - atau tidak - dalam jadual lain. Contohnya, dalam perkahwinan, setiap pasangan mempunyai hanya satu pasangan lain. Hubungan seperti ini boleh dilaksanakan dalam satu jadual dan oleh itu tidak menggunakan kunci asing.

Satu-ke-banyak : Hubungan satu ke banyak membolehkan satu rekod tunggal dalam satu jadual untuk dihubungkan dengan pelbagai rekod dalam jadual lain.

Pertimbangkan perniagaan dengan pangkalan data yang mempunyai jadual Pelanggan dan Pesanan.

Pelanggan tunggal boleh membeli berbilang pesanan, tetapi satu pesanan tidak dapat dihubungkan dengan berbilang pelanggan. Oleh itu, jadual Pesanan akan mengandungi kunci asing yang dipadankan dengan kunci utama jadual Pelanggan, sementara jadual Pelanggan tidak mempunyai kunci asing menunjuk ke jadual Pesanan.

Ramai-banyak : Ini adalah perhubungan yang kompleks di mana banyak rekod dalam jadual boleh dihubungkan ke banyak rekod dalam jadual lain. Sebagai contoh, perniagaan kami mungkin tidak hanya memerlukan jadual Pelanggan dan Pesanan, tetapi mungkin juga memerlukan jadual Produk.

Sekali lagi, hubungan antara jadual Pelanggan dan Pesanan adalah satu-ke-banyak, tetapi pertimbangkan hubungan antara jadual Perintah dan Produk. Pesanan boleh mengandungi berbilang produk, dan produk boleh dihubungkan dengan beberapa pesanan: beberapa pelanggan mungkin menghantar pesanan yang mengandungi beberapa produk yang sama. Hubungan seperti ini memerlukan sekurang-kurangnya tiga jadual.

Apakah Hubungan Pangkalan Data Penting?

Mewujudkan hubungan yang konsisten antara jadual pangkalan data membantu memastikan integriti data, menyumbang kepada pengaturcaraan pangkalan data. Sebagai contoh, bagaimana jika kita tidak menghubungkan sebarang jadual melalui kunci asing dan sebaliknya hanya menggabungkan data dalam jadual Kursus dan Guru, seperti:

Guru dan Kursus
Teacher_ID Teacher_Name Kursus
Teacher_001 Carmen Biologi, Matematik
Teacher_002 Veronica Matematik
Teacher_003 Jorge Bahasa Inggeris

Reka bentuk ini tidak fleksibel dan melanggar prinsip pertama pengaturcaraan pangkalan data, Formula Pertama Pertama (1NF), yang menyatakan bahawa setiap sel jadual harus mengandungi sekeping data tunggal dan diskrit.

Atau mungkin kami memutuskan untuk menambah rekod kedua untuk Carmen, untuk menguatkuasakan 1NF:

Guru dan Kursus
Teacher_ID Teacher_Name Kursus
Teacher_001 Carmen Biologi
Teacher_001 Carmen Matematik
Teacher_002 Veronica Matematik
Teacher_003 Jorge Bahasa Inggeris

Ini masih merupakan reka bentuk yang lemah, memperkenalkan duplikasi yang tidak perlu dan apa yang disebut anomali penyisipan data , yang hanya bermakna ia dapat menyumbang kepada data yang tidak konsisten.

Sebagai contoh, jika guru mempunyai beberapa rekod, bagaimana jika beberapa data perlu diedit, tetapi orang yang melakukan penyuntingan data tidak menyedari bahawa terdapat banyak rekod? Jadual kemudian akan mengandungi data yang berbeza untuk individu yang sama, tanpa cara yang jelas untuk mengenal pasti atau mengelakkannya.

Memecahkan jadual ini ke dalam dua jadual, Guru dan Kursus (seperti digambarkan di atas), mewujudkan hubungan yang sepatutnya di antara data dan oleh itu membantu memastikan keseragaman dan ketepatan data.