Dasar-dasar desain database

Dasar-dasar desain database

Database yang dirancang dengan benar memberi Anda akses ke informasi terbaru dan akurat. Karena desain yang benar sangat penting untuk mencapai tujuan Anda dalam bekerja dengan database, menginvestasikan waktu yang diperlukan untuk mempelajari prinsip desain yang baik. Pada akhirnya, Anda lebih cenderung menggunakan database yang memenuhi kebutuhan Anda dan dapat dengan mudah menampung perubahan.

Artikel ini menyediakan panduan untuk merencanakan database desktop. Anda akan mempelajari cara memutuskan informasi apa yang Anda perlukan, cara membagi informasi tersebut ke dalam tabel dan kolom yang sesuai, dan bagaimana tabel tersebut berhubungan satu sama lain. Anda harus membaca artikel ini sebelum membuat database desktop pertama.

Penting: Access menyediakan pengalaman desain yang memungkinkan Anda membuat aplikasi database untuk web. Banyak pertimbangan desain berbeda ketika Anda mendesain untuk web. Artikel ini tidak membahas desain aplikasi database web. Untuk informasi selengkapnya, lihat artikel membuat database untuk dibagikan di web.

Di artikel ini

Beberapa istilah database yang perlu diketahui

Apa itu desain database yang baik?

Proses desain

Menentukan tujuan database Anda

Menemukan dan menata informasi yang diperlukan

Membagi informasi ke dalam tabel

Mengubah item informasi menjadi kolom

Menentukan kunci utama

Membuat hubungan tabel

Menyempurnakan desain

Menerapkan aturan normalisasi


Beberapa istilah database yang perlu diketahui

Access menata informasi Anda ke dalam tabel: Daftar baris dan kolom yang mengingatkan pada pad atau lembar bentang akuntan. Dalam database sederhana, Anda mungkin hanya memiliki satu tabel. Untuk sebagian besar database Anda akan memerlukan lebih dari satu. Misalnya, Anda mungkin memiliki tabel yang menyimpan informasi tentang produk, tabel lain yang menyimpan informasi tentang pesanan, dan tabel lain dengan informasi tentang pelanggan.

Gambar yang menggambarkan tiga tabel dalam lembar data

Setiap baris lebih tepat disebut catatan, dan setiap kolom, bidang. Catatan adalah cara yang bermakna dan konsisten untuk menggabungkan informasi tentang sesuatu. Bidang adalah satu item informasi — tipe item yang muncul di setiap rekaman. Dalam tabel produk, misalnya, setiap baris atau rekaman akan menyimpan informasi tentang satu produk. Setiap kolom atau bidang memegang beberapa tipe informasi tentang produk tersebut, seperti nama atau harganya.

Atas Halaman

Apa itu desain database yang baik?

Prinsip tertentu memandu proses desain database. Prinsip pertama adalah bahwa informasi duplikat (juga disebut data yang berlebihan) tidak baik, karena ruang kosong dan meningkatkan kemungkinan kesalahan dan inkonsistensi. Prinsip kedua adalah kebenaran dan kelengkapan informasi penting. Jika database Anda berisi informasi yang salah, laporan apa pun yang menarik informasi dari database juga akan berisi informasi yang salah. Sebagai hasilnya, keputusan apa pun yang Anda buat yang didasarkan pada laporan tersebut akan salah informasi.

Desain database yang baik adalah salah satu yang:

  • Membagi informasi Anda ke dalam tabel berbasis subjek untuk mengurangi data yang berlebihan.

  • Menyediakan akses dengan informasi yang diperlukan untuk menggabungkan informasi dalam tabel bersama-sama sesuai keperluan.

  • Membantu mendukung dan memastikan keakuratan dan integritas informasi Anda.

  • Mengakomodasi kebutuhan pemrosesan dan pelaporan data Anda.

Atas Halaman

Proses desain

Proses desain terdiri dari langkah-langkah berikut ini:

  • Menentukan tujuan database Anda    

    Ini membantu mempersiapkan Anda untuk langkah yang tersisa.

  • Menemukan dan menata informasi yang diperlukan     

    Kumpulkan semua tipe informasi yang mungkin ingin Anda Rekam dalam database, seperti nama produk dan nomor pesanan.

  • Membagi informasi ke dalam tabel    

    Membagi item informasi Anda ke dalam entitas utama atau subjek, seperti produk atau pesanan. Setiap subjek kemudian menjadi tabel.

  • Ubah item informasi menjadi kolom    

    Putuskan informasi yang ingin Anda simpan di setiap tabel. Setiap item menjadi bidang, dan ditampilkan sebagai kolom dalam tabel. Misalnya, tabel karyawan mungkin menyertakan bidang seperti nama belakang dan tanggal Penyewaan.

  • Menentukan kunci utama    

    Pilih kunci utama setiap tabel. Kunci utama adalah kolom yang digunakan untuk mengidentifikasi secara unik setiap baris. Contohnya mungkin id produk atau ID pesanan.

  • Menyiapkan hubungan tabel    

    Lihat setiap tabel dan putuskan bagaimana data dalam satu tabel terkait dengan data dalam tabel lain. Tambahkan bidang ke tabel atau Buat tabel baru untuk mengklarifikasi hubungan, sebagaimana diperlukan.

  • Memperbaiki desain Anda    

    Menganalisis desain Anda untuk kesalahan. Buat tabel dan tambahkan beberapa data sampel data. Lihat apakah Anda bisa mendapatkan hasil yang Anda inginkan dari tabel Anda. Sesuaikan desain sesuai keperluan.

  • Menerapkan aturan normalisasi    

    Terapkan aturan normalisasi data untuk melihat apakah tabel Anda terstruktur dengan benar. Lakukan penyesuaian pada tabel, jika diperlukan.

Atas Halaman

Menentukan tujuan database Anda

Ini adalah ide yang baik untuk menuliskan tujuan database pada kertas — tujuannya, bagaimana Anda mengharapkan untuk menggunakannya, dan siapa yang akan menggunakannya. Untuk database kecil untuk bisnis berbasis rumah, misalnya, Anda mungkin menulis sesuatu yang sederhana seperti "database pelanggan menyimpan daftar informasi pelanggan untuk tujuan pembuatan surat dan laporan." Jika database lebih kompleks atau digunakan oleh banyak orang, seperti yang sering terjadi dalam pengaturan perusahaan, tujuannya bisa dengan mudah menjadi paragraf atau lebih dan harus menyertakan Kapan dan bagaimana setiap orang akan menggunakan database tersebut. Idenya adalah untuk memiliki pernyataan misi yang dikembangkan dengan baik yang bisa dirujuk di seluruh proses desain. Memiliki pernyataan tersebut membantu Anda memfokuskan pada tujuan saat Anda membuat keputusan.

Atas Halaman

Menemukan dan menata informasi yang diperlukan

Untuk menemukan dan menata informasi yang diperlukan, mulai dengan informasi yang sudah ada. Misalnya, Anda dapat merekam pesanan pembelian dalam buku besar atau menyimpan informasi pelanggan pada formulir kertas dalam kabinet file. Kumpulkan dokumen tersebut dan cantumkan setiap tipe informasi yang diperlihatkan (misalnya, setiap kotak yang Anda isi pada formulir). Jika Anda tidak memiliki formulir yang sudah ada, bayangkan sebagai gantinya Anda harus mendesain formulir untuk merekam informasi pelanggan. Informasi apa yang akan Anda kenakan pada formulir? Kotak isian isi apa yang akan Anda buat? Mengidentifikasi dan mencantumkan setiap item ini. Misalnya, saat ini Anda menyimpan daftar pelanggan di kartu indeks. Memeriksa kartu ini mungkin memperlihatkan bahwa setiap kartu menampung nama pelanggan, alamat, kota, negara bagian, kode pos dan nomor telepon. Setiap item ini mewakili kolom potensial dalam tabel.

Saat Anda mempersiapkan daftar ini, jangan khawatir tentang membuatnya sempurna pada awalnya. Sebagai gantinya, cantumkan setiap item yang terlintas dalam pikiran. Jika orang lain akan menggunakan database, mintalah ide mereka juga. Anda dapat menyempurnakan daftar nanti.

Berikutnya, pertimbangkan tipe laporan atau surat yang mungkin ingin Anda hasilkan dari database. Misalnya, Anda mungkin menginginkan laporan penjualan produk untuk memperlihatkan penjualan menurut kawasan, atau laporan ringkasan inventaris yang memperlihatkan tingkat inventaris produk. Anda mungkin juga ingin menghasilkan surat formulir untuk dikirimkan kepada pelanggan yang mengumumkan acara penjualan atau menawarkan premi. Rancang laporan dalam pikiran Anda, dan bayangkan tampilannya. Informasi apa yang akan Anda tempatkan pada laporan? Cantumkan setiap item. Lakukan hal yang sama untuk surat formulir dan untuk laporan lain yang Anda antisipasi untuk dibuat.

orang membayangkan laporan inventaris produk

Memberikan pemikiran ke laporan dan surat Anda mungkin ingin membuat membantu Anda mengidentifikasi item yang akan Anda perlukan dalam database Anda. Misalnya, Anda memberi pelanggan kesempatan untuk ikut (atau keluar dari) pembaruan email berkala, dan Anda ingin mencetak daftar orang yang telah memilih ikut. Untuk merekam informasi tersebut, tambahkan kolom "Kirim email" ke tabel pelanggan. Untuk setiap pelanggan, Anda dapat mengatur bidang ke ya atau tidak.

Persyaratan untuk mengirim pesan email ke pelanggan menyarankan untuk merekam item lain. Begitu Anda tahu bahwa pelanggan ingin menerima pesan email, Anda juga perlu mengetahui alamat email tempat mengirimkannya. Oleh karena itu, Anda perlu merekam alamat email untuk setiap pelanggan.

Masuk akal untuk membuat prototipe dari setiap laporan atau daftar output dan mempertimbangkan item apa yang akan Anda perlukan untuk menghasilkan laporan. Misalnya, saat Anda memeriksa surat formulir, beberapa hal mungkin terpikirkan. Jika Anda ingin menyertakan salam yang tepat — misalnya, string "Mr.", "Mrs." atau "ms." yang memulai salam, Anda harus membuat item salam. Selain itu, Anda mungkin akan memulai Surat dengan "Dear Mr. Smith", daripada "Dear. Mr Sylvester Smith ". Ini menyarankan Anda biasanya ingin menyimpan nama belakang yang terpisah dari nama depan.

Poin penting untuk diingat adalah Anda harus memisahkan setiap bagian informasi ke bagian terkecil yang berguna. Dalam kasus nama, untuk membuat nama belakang tersedia, Anda akan memecah nama menjadi dua bagian — nama depan dan nama belakang. Untuk mengurutkan laporan dengan nama belakang, misalnya, ini membantu agar nama belakang pelanggan disimpan secara terpisah. Secara umum, jika Anda ingin mengurutkan, mencari, menghitung, atau melaporkan berdasarkan item informasi, Anda harus meletakkan item tersebut di bidangnya sendiri.

Pikirkan pertanyaan yang mungkin Anda inginkan untuk dijawab database. Misalnya, berapa banyak penjualan produk unggulan Anda yang Anda tutup bulan lalu? Di mana pelanggan terbaik Anda tinggal? Siapa pemasok untuk produk terlaris Anda? Mengantisipasi pertanyaan ini akan membantu Anda masuk ke item tambahan untuk direkam.

Setelah mengumpulkan informasi ini, Anda siap untuk langkah berikutnya.

Atas Halaman

Membagi informasi ke dalam tabel

Untuk membagi informasi ke dalam tabel, pilih entitas utama, atau subjek. Misalnya, setelah menemukan dan menata informasi untuk database penjualan produk, daftar Pendahuluan mungkin terlihat seperti ini:

Item informasi tulisan tangan dikelompokkan ke dalam subjek

Entitas utama yang diperlihatkan di sini adalah produk, pemasok, pelanggan, dan pesanan. Oleh karena itu, masuk akal untuk memulai dengan empat tabel ini: satu untuk fakta tentang produk, satu untuk fakta tentang pemasok, satu untuk fakta tentang pelanggan, dan satu untuk fakta tentang pesanan. Meskipun ini tidak menyelesaikan daftar, itu adalah titik awal yang baik. Anda dapat terus menyempurnakan daftar ini hingga Anda memiliki desain yang berfungsi baik.

Saat pertama kali meninjau daftar item awal, Anda mungkin tergoda untuk menempatkannya dalam satu tabel, dan bukan empat yang diperlihatkan dalam ilustrasi sebelumnya. Anda akan mempelajari mengapa itu adalah ide yang buruk. Pertimbangkan sejenak, tabel diperlihatkan di sini:

Gambar memperlihatkan tabel yang berisi produk dan pemasoknya

Dalam kasus ini, setiap baris berisi informasi tentang produk dan pemasoknya. Karena Anda bisa memiliki banyak produk dari pemasok yang sama, nama pemasok dan informasi alamat harus diulang berkali-kali. Ruang disk kosong ini. Merekam informasi pemasok hanya sekali dalam tabel pemasok terpisah, lalu menautkan tabel tersebut ke tabel produk, adalah solusi yang jauh lebih baik.

Masalah kedua dengan desain ini terjadi ketika Anda perlu mengubah informasi tentang pemasok. Misalnya, Anda perlu mengubah alamat pemasok. Karena muncul di banyak tempat, Anda mungkin secara tidak sengaja mengubah alamat di satu tempat, tapi lupa untuk mengubahnya di yang lain. Merekam alamat pemasok hanya dalam satu tempat menyelesaikan masalah.

Saat Anda mendesain database Anda, selalu Cobalah untuk merekam setiap fakta sekali saja. Jika Anda menemukan informasi yang sama di lebih dari satu tempat, seperti alamat untuk pemasok tertentu, tempatkan informasi tersebut dalam tabel terpisah.

Terakhir, anggaplah hanya ada satu produk yang dipasok oleh kilang anggur Coho, dan Anda ingin menghapus produknya, tapi mempertahankan nama dan informasi alamat pemasok. Bagaimana Anda menghapus catatan produk tanpa juga kehilangan informasi pemasok? Anda tidak bisa. Karena setiap catatan berisi fakta tentang produk, serta fakta tentang pemasok, Anda tidak bisa menghapusnya tanpa menghapusnya. Untuk mempertahankan fakta yang terpisah, Anda harus memisahkan satu tabel menjadi dua: satu tabel untuk informasi produk, dan tabel lain untuk informasi pemasok. Menghapus catatan produk hanya harus menghapus fakta tentang produk, bukan fakta tentang pemasok.

Setelah Anda memilih subjek yang diwakili oleh tabel, kolom dalam tabel tersebut sebaiknya menyimpan fakta-fakta tentang subjek. Misalnya, tabel produk sebaiknya menyimpan fakta hanya tentang produk. Karena alamat pemasok adalah fakta tentang pemasok, dan bukan fakta tentang produk, itu milik pemasok.

Atas Halaman

Mengubah item informasi menjadi kolom

Untuk menentukan kolom dalam tabel, tentukan informasi yang perlu Anda Lacak tentang subjek yang direkam dalam tabel. Misalnya, untuk tabel pelanggan, nama, alamat, kota-negara-zip, kirim email, salam, dan alamat email terdiri dari daftar kolom yang baik. Setiap catatan dalam tabel berisi kumpulan kolom yang sama, sehingga Anda bisa menyimpan nama, alamat, kota-negara-zip, mengirim email, salam dan informasi alamat email untuk setiap catatan. Misalnya, kolom alamat berisi alamat pelanggan. Setiap catatan berisi data tentang satu pelanggan, dan bidang alamat berisi alamat untuk pelanggan tersebut.

Setelah menentukan kumpulan kolom awal untuk setiap tabel, Anda dapat menyempurnakan kolom lebih lanjut. Misalnya, masuk akal untuk menyimpan nama pelanggan sebagai dua kolom terpisah: nama depan dan nama belakang, sehingga Anda dapat mengurutkan, mencari, dan mengindeks pada kolom tersebut. Demikian pula, alamat sebenarnya terdiri dari lima komponen terpisah, alamat, kota, negara bagian, kode pos, dan negara/kawasan, dan juga masuk akal untuk menyimpannya dalam kolom terpisah. Jika Anda ingin melakukan pencarian, memfilter atau mengurutkan operasi menurut negara bagian, misalnya, Anda memerlukan informasi status yang disimpan dalam kolom terpisah.

Anda juga harus mempertimbangkan apakah database hanya akan menyimpan informasi yang berasal dari domestik, atau juga internasional. Misalnya, jika Anda berencana untuk menyimpan alamat internasional, lebih baik untuk memiliki kolom kawasan dan bukan negara bagian, karena kolom tersebut bisa menampung kedua negara bagian domestik dan kawasan negara/kawasan lain. Demikian pula, kode pos lebih masuk akal daripada kode pos jika Anda akan menyimpan alamat internasional.

Daftar berikut ini memperlihatkan beberapa tips untuk menentukan kolom Anda.

  • Jangan Sertakan data terhitung    

    Dalam kebanyakan kasus, Anda tidak boleh menyimpan hasil perhitungan dalam tabel. Sebagai gantinya, Anda dapat mengakses perhitungan saat Anda ingin melihat hasilnya. Misalnya, ada produk pada laporan pesanan yang menampilkan subtotal unit pada urutan untuk setiap kategori produk dalam database. Namun, tidak ada unit pada kolom subtotal urutan dalam tabel apa pun. Sebagai gantinya, tabel Products menyertakan unit pada kolom urutan yang menyimpan unit pada urutan untuk setiap produk. Dengan data tersebut, Access menghitung subtotal setiap kali Anda mencetak laporan. Subtotal itu sendiri tidak boleh disimpan dalam tabel.

  • Menyimpan informasi di bagian logiknya yang terkecil    

    Anda mungkin tergoda untuk memiliki satu bidang untuk nama lengkap, atau untuk nama produk bersama dengan deskripsi produk. Jika Anda mengombinasikan lebih dari satu jenis informasi dalam sebuah bidang, sulit untuk mendapatkan kembali setiap fakta. Cobalah untuk memecah informasi ke dalam bagian logika; Misalnya, buat bidang terpisah untuk nama depan dan belakang, atau untuk nama produk, kategori, dan deskripsi.

Gambar memperlihatkan item informasi selama proses desain

Setelah Anda menyempurnakan kolom data dalam setiap tabel, Anda siap untuk memilih setiap kunci utama tabel.

Atas Halaman

Menentukan kunci utama

Setiap tabel harus menyertakan kolom atau kumpulan kolom yang secara unik mengidentifikasi setiap baris yang disimpan dalam tabel. Ini sering kali merupakan nomor identifikasi unik, seperti nomor ID karyawan atau nomor seri. Dalam terminologi database, informasi ini disebut kunci utama tabel. Access menggunakan bidang utama untuk mengaitkan data dengan cepat dari beberapa tabel dan menyatukan data untuk Anda.

Jika Anda sudah memiliki pengidentifikasi unik untuk sebuah tabel, seperti nomor produk yang secara unik mengidentifikasi setiap produk dalam Katalog Anda, Anda bisa menggunakan pengidentifikasi tersebut sebagai kunci utama tabel-tapi hanya jika nilai dalam kolom ini akan selalu berbeda untuk setiap catatan. Anda tidak bisa memiliki nilai duplikat dalam kunci utama. Misalnya, jangan gunakan nama orang sebagai kunci utama, karena nama tidak unik. Anda dapat dengan mudah memiliki dua orang dengan nama yang sama dalam tabel yang sama.

Kunci utama harus selalu memiliki nilai. Jika nilai kolom bisa menjadi tidak ditetapkan atau tidak diketahui (nilai yang hilang) di beberapa titik, nilai tidak bisa digunakan sebagai komponen dalam kunci utama.

Anda harus selalu memilih kunci utama yang nilainya tidak akan berubah. Dalam database yang menggunakan lebih dari satu tabel, kunci utama tabel dapat digunakan sebagai referensi dalam tabel lain. Jika kunci utama berubah, perubahan juga harus diterapkan di mana-mana kunci dirujuk. Menggunakan kunci utama yang tidak akan mengubah kemungkinan bahwa kunci utama mungkin menjadi tidak sinkron dengan tabel lain yang mereferensikan.

Sering kali, bilangan unik sewenang-wenang digunakan sebagai kunci utama. Misalnya, Anda dapat menetapkan masing-masing urutan nomor pesanan yang unik. Satu-satunya tujuan nomor pesanan adalah untuk mengidentifikasi pesanan. Setelah ditetapkan, tidak pernah berubah.

Jika Anda tidak memiliki kolom atau kumpulan kolom yang mungkin membuat kunci utama yang baik, pertimbangkan untuk menggunakan kolom yang memiliki tipe data AutoNumber. Saat Anda menggunakan tipe data AutoNumber, Access secara otomatis menetapkan nilai untuk Anda. Pengidentifikasi tersebut bersifat tidak terbatas; ini tidak berisi informasi faktual yang mendeskripsikan baris yang diwakilinya. Pengidentifikasi tanpa pengguna sangat ideal untuk digunakan sebagai kunci utama karena tidak berubah. Kunci utama yang berisi fakta tentang baris — nomor telepon atau nama pelanggan, misalnya — cenderung berubah, karena informasi faktual itu sendiri mungkin berubah.

Gambar memperlihatkan tabel Produk dengan bidang kunci utama.

1. kumpulan kolom ke tipe data AutoNumber sering kali membuat kunci utama yang baik. Tidak ada dua id produk yang sama.

Dalam beberapa kasus, Anda mungkin ingin menggunakan dua atau beberapa bidang yang bersama-sama, memberikan kunci utama tabel. Misalnya, tabel detail pesanan yang menyimpan item baris untuk pesanan akan menggunakan dua kolom dalam kunci utamanya: ID pesanan dan ID Produk. Saat kunci utama menggunakan lebih dari satu kolom, kunci utama juga disebut tombol komposit.

Untuk database penjualan produk, Anda dapat membuat kolom AutoNumber untuk setiap tabel untuk berfungsi sebagai kunci utama: ProductID untuk tabel produk, OrderID untuk tabel pesanan, CustomerID untuk tabel pelanggan, dan SupplierID untuk tabel pemasok.

Gambar memperlihatkan item informasi selama proses desain


Atas Halaman

Membuat hubungan tabel

Sekarang Anda telah membagi informasi ke dalam tabel, Anda memerlukan cara untuk menyatukan informasi lagi dengan cara yang bermakna. Misalnya, formulir berikut ini menyertakan informasi dari beberapa tabel.

Gambar formulir pesanan

1. Informasi di formulir ini berasal dari tabel Pelanggan...

2.... Tabel karyawan...

3.... Tabel pesanan...

4.... Tabel produk...

5.... dan tabel detail pesanan.

Access adalah sistem manajemen database relasional. Dalam database relasional, Anda membagi informasi Anda ke dalam tabel terpisah yang berbasis subjek. Anda kemudian menggunakan hubungan tabel untuk menyatukan informasi yang diperlukan.

Atas Halaman

Membuat hubungan satu ke banyak

Pertimbangkan contoh ini: tabel pemasok dan produk dalam database pesanan produk. Pemasok dapat memasok sejumlah produk. Ini mengikuti bahwa untuk setiap pemasok yang diwakili dalam tabel pemasok, ada banyak produk yang diwakilkan dalam tabel produk. Hubungan antara tabel pemasok dan tabel produk adalah, oleh karena itu, hubungan satu ke banyak.

Konseptual satu ke banyak

Untuk mewakili hubungan satu-ke-banyak di desain database Anda, ambil kunci utama pada sisi "satu" dari hubungan dan tambahkan sebagai kolom atau kolom tambahan ke tabel pada sisi "banyak" dari hubungan. Dalam kasus ini, misalnya, Anda menambahkan kolom ID pemasok dari tabel pemasok ke tabel produk. Access dapat menggunakan nomor ID pemasok dalam tabel produk untuk menemukan pemasok yang tepat untuk setiap produk.

Kolom ID pemasok dalam tabel produk disebut foreign key. Kunci asing adalah kunci utama tabel lain. Kolom ID pemasok dalam tabel produk adalah kunci asing karena juga merupakan kunci utama dalam tabel pemasok.

Gambar memperlihatkan item informasi selama proses desain

Anda menyediakan basis untuk bergabung dalam tabel terkait dengan menetapkan pasangan kunci utama dan kunci asing. Jika Anda tidak yakin tabel mana yang harus berbagi kolom yang sama, mengidentifikasi hubungan satu ke banyak memastikan bahwa dua tabel yang terlibat akan, memang, memerlukan kolom bersama.

Atas Halaman

Membuat hubungan banyak ke banyak

Pertimbangkan hubungan antara tabel produk dan tabel pesanan.

Sebuah pesanan bisa berisi lebih dari satu produk. Di sisi lain, sebuah produk bisa muncul di banyak pesanan. Karena itu, untuk tiap rekaman dalam tabel Pesanan, bisa terdapat banyak rekaman dalam tabel Produk. Dan untuk setiap rekaman dalam tabel produk, ada banyak rekaman di tabel pesanan. Tipe hubungan ini disebut hubungan banyak-ke-banyak karena untuk setiap produk, mungkin ada banyak pesanan; dan untuk urutan apa pun, ada banyak produk. Perhatikan bahwa untuk mendeteksi hubungan banyak ke banyak antara tabel Anda, penting untuk mempertimbangkan kedua sisi hubungan.

Subjek dari dua tabel — pesanan dan produk — memiliki hubungan banyak ke banyak. Ini menimbulkan masalah. Untuk memahami masalahnya, Bayangkan apa yang akan terjadi jika Anda mencoba membuat hubungan antara dua tabel dengan menambahkan bidang ID Produk ke tabel pesanan. Untuk memiliki lebih dari satu produk per pesanan, Anda memerlukan lebih dari satu catatan dalam tabel pesanan per pesanan. Anda akan mengulangi informasi pesanan untuk setiap baris yang berkaitan dengan satu urutan — yang menghasilkan desain yang tidak efisien yang dapat menyebabkan data tidak akurat. Anda mengalami masalah yang sama jika Anda meletakkan bidang ID pesanan dalam tabel produk — Anda akan memiliki lebih dari satu catatan dalam tabel produk untuk setiap produk. Bagaimana cara mengatasi masalah ini?

Jawabannya adalah untuk membuat tabel ketiga, sering disebut tabel persimpangan, yang memecah hubungan banyak ke banyak ke dalam hubungan 2 1-ke-banyak. Anda menyisipkan kunci utama dari masing-masing dua tabel ke tabel ketiga tersebut. Sebagai hasilnya, tabel ketiga merekam setiap kemunculan atau contoh hubungan.

Konseptual hubungan banyak ke banyak

Setiap catatan dalam tabel detail pesanan mewakili satu item baris pada pesanan. Kunci utama tabel detail pesanan terdiri dari dua bidang — kunci asing dari pesanan dan tabel produk. Menggunakan bidang ID pesanan saja tidak berfungsi sebagai kunci utama untuk tabel ini, karena satu pesanan bisa memiliki banyak item baris. ID pesanan diulang untuk setiap item baris pada pesanan, sehingga bidang tidak berisi nilai unik. Menggunakan bidang ID Produk saja tidak berfungsi baik, karena satu produk bisa muncul di berbagai pesanan. Namun, keduanya selalu menghasilkan nilai unik untuk setiap rekaman.

Di database penjualan produk, tabel pesanan dan tabel produk tidak terkait satu sama lain secara langsung. Sebagai gantinya, mereka secara tidak langsung terkait dengan tabel detail pesanan. Hubungan banyak-ke-banyak antara pesanan dan produk diperlihatkan dalam database dengan menggunakan hubungan 2 1-to-many:

  • Tabel pesanan dan detail pesanan memiliki hubungan satu ke banyak. Setiap pesanan bisa memiliki lebih dari satu item baris, tetapi setiap item baris tersambung ke satu urutan saja.

  • Tabel detail tabel dan pesanan produk memiliki hubungan satu ke banyak. Setiap produk bisa memiliki banyak item baris yang terkait dengannya, namun setiap item baris merujuk ke satu produk saja.

Dari tabel detail pesanan, Anda bisa menentukan semua produk pada pesanan tertentu. Anda juga dapat menentukan semua pesanan untuk produk tertentu.

Setelah memasukkan tabel detail pesanan, daftar tabel dan bidang mungkin terlihat seperti ini:

Gambar memperlihatkan item informasi selama proses desain


Atas Halaman

Membuat hubungan satu ke satu

Tipe hubungan lainnya adalah hubungan satu lawan satu. Misalnya, Anda perlu merekam beberapa informasi produk tambahan khusus yang akan Anda perlukan jarang atau yang hanya berlaku untuk beberapa produk. Karena Anda tidak memerlukan informasi sesering mungkin, dan karena menyimpan informasi dalam tabel produk akan menghasilkan ruang kosong untuk setiap produk yang tidak diterapkan, Anda menempatkannya dalam tabel terpisah. Seperti tabel produk, Anda menggunakan ProductID sebagai kunci utama. Hubungan antara tabel pelengkap ini dan tabel produk adalah hubungan satu ke satu. Untuk setiap rekaman dalam tabel produk, terdapat rekaman yang cocok dalam tabel tambahan. Saat Anda memang mengidentifikasi hubungan tersebut, kedua tabel harus berbagi bidang yang sama.

Saat Anda mendeteksi perlunya hubungan satu-ke-satu di database Anda, pertimbangkan Apakah Anda bisa memasukkan informasi dari dua tabel bersama-sama dalam satu tabel. Jika Anda tidak ingin melakukannya karena beberapa alasan, mungkin karena akan menghasilkan banyak ruang kosong, daftar berikut ini memperlihatkan cara Anda mewakili hubungan dalam desain Anda:

  • Jika dua tabel memiliki subjek yang sama, Anda mungkin bisa menyetel hubungan dengan menggunakan kunci utama yang sama di kedua tabel.

  • Jika dua tabel memiliki subjek yang berbeda dengan kunci utama berbeda, pilih salah satu tabel (salah satu) dan sisipkan kunci utamanya di tabel lain sebagai kunci asing.

Menentukan hubungan antara tabel membantu Anda memastikan bahwa Anda memiliki tabel dan kolom yang tepat. Saat hubungan satu-ke-satu atau satu-ke-banyak ada, tabel yang diperlukan untuk berbagi kolom atau kolom umum. Jika ada hubungan banyak ke banyak, tabel ketiga diperlukan untuk mewakili hubungan.

Atas Halaman

Menyempurnakan desain

Setelah Anda memiliki tabel, bidang, dan hubungan yang Anda perlukan, Anda harus membuat dan mengisi tabel Anda dengan sampel data dan mencoba bekerja dengan informasi: membuat kueri, menambahkan catatan baru, dan seterusnya. Melakukan hal ini membantu menyoroti potensi masalah — misalnya, Anda mungkin perlu menambahkan kolom yang Anda lupa sisipkan selama fase desain, atau Anda mungkin memiliki tabel yang harus dibagi menjadi dua tabel untuk menghapus duplikasi.

Lihat apakah Anda bisa menggunakan database untuk mendapatkan jawaban yang Anda inginkan. Buat draf bentuk dan laporan yang kasar dan lihat apakah mereka memperlihatkan data yang Anda harapkan. Cari duplikasi data yang tidak diperlukan dan, saat Anda menemukannya, Ubah desain Anda untuk menghilangkannya.

Saat Anda mencoba database awal Anda, Anda mungkin akan menemukan ruang untuk penyempurnaan. Berikut adalah beberapa hal untuk diperiksa:

  • Apakah Anda lupa kolom apa pun? Jika demikian, Apakah informasi termasuk dalam tabel yang sudah ada? Jika informasi tentang sesuatu yang lain, Anda mungkin perlu membuat tabel lain. Buat kolom untuk setiap item informasi yang perlu Anda Lacak. Jika informasi tidak bisa dihitung dari kolom lain, kemungkinan Anda akan memerlukan kolom baru untuk data tersebut.

  • Apakah ada kolom yang tidak diperlukan karena mereka bisa dihitung dari bidang yang sudah ada? Jika item informasi bisa dihitung dari kolom lain yang sudah ada — harga diskon terhitung dari harga eceran, misalnya — biasanya lebih baik untuk dilakukan, dan menghindari pembuatan kolom baru.

  • Apakah Anda berulang kali memasukkan informasi duplikat di salah satu tabel Anda? Jika demikian, Anda mungkin perlu membagi tabel menjadi dua tabel yang memiliki hubungan satu ke banyak.

  • Apakah Anda memiliki tabel dengan banyak bidang, jumlah catatan terbatas, dan banyak bidang kosong dalam setiap catatan? Jika demikian, pikirkan tentang mendesain ulang tabel sehingga memiliki lebih sedikit bidang dan lebih banyak rekaman.

  • Apakah setiap item informasi telah dipecah menjadi bagian terkecil yang berguna? Jika Anda perlu melaporkan, mengurutkan, mencari, atau menghitung pada item informasi, letakkan item tersebut di kolomnya sendiri.

  • Apakah setiap kolom berisi fakta tentang subjek tabel? Jika kolom tidak berisi informasi tentang subjek tabel, kolom berada dalam tabel berbeda.

  • Apakah semua hubungan antara tabel yang diwakili, baik dengan bidang umum atau oleh tabel ketiga? Hubungan satu ke satu dan satu-ke-banyak memerlukan kolom umum. Hubungan banyak ke banyak memerlukan tabel ketiga.

Menyempurnakan tabel produk

Misalkan, setiap produk dalam database penjualan produk berada di bawah kategori umum, seperti minuman, bumbu, atau makanan laut. Tabel produk bisa menyertakan bidang yang memperlihatkan kategori masing-masing produk.

Misalkan setelah memeriksa dan menyempurnakan desain database, Anda memutuskan untuk menyimpan Deskripsi kategori bersama dengan namanya. Jika Anda menambahkan bidang Deskripsi kategori ke tabel produk, Anda harus mengulangi setiap deskripsi kategori untuk setiap produk yang berada di bawah kategori — ini bukan solusi yang baik.

Solusi yang lebih baik adalah membuat kategori menjadi subjek baru untuk database untuk dilacak, dengan tabel sendiri dan kunci utamanya sendiri. Anda kemudian dapat menambahkan kunci primer dari tabel kategori ke tabel produk sebagai kunci asing.

Tabel kategori dan produk memiliki hubungan satu-ke-banyak: Kategori dapat menyertakan lebih dari satu produk, namun satu produk hanya bisa dimiliki oleh satu kategori.

Saat Anda meninjau struktur tabel Anda, waspada untuk mengulangi grup. Misalnya, pertimbangkan tabel yang berisi kolom berikut:

  • Product ID

  • Nama

  • ID1 produk

  • Name1

  • ID2 produk

  • Name2

  • ID3 produk

  • Name3

Di sini, setiap produk adalah grup berulang dari kolom yang berbeda dari yang lainnya hanya dengan menambahkan angka ke akhir nama kolom. Saat Anda melihat kolom dengan nomor ini, Anda harus mengunjungi kembali desain Anda.

Desain tersebut memiliki beberapa kekurangan. Sebagai permulaan, memaksa Anda untuk meletakkan batas atas jumlah produk. Segera setelah Anda melebihi batas tersebut, Anda harus menambahkan grup kolom baru ke struktur tabel, yang merupakan tugas administratif utama.

Masalah lain adalah bahwa pemasok tersebut memiliki lebih sedikit dari jumlah produk yang akan menyia-nyiakan beberapa ruang, karena kolom tambahan akan kosong. Kesalahan yang paling serius dengan desain tersebut adalah membuat banyak tugas yang sulit dijalankan, seperti mengurutkan atau mengindeks tabel menurut ID Produk atau nama.

Setiap kali Anda melihat grup yang berulang meninjau desain secara menyeluruh dengan membagi tabel menjadi dua. Dalam contoh di atas, lebih baik menggunakan dua tabel, satu untuk pemasok dan satu untuk produk, ditautkan dengan ID pemasok.

Atas Halaman

Menerapkan aturan normalisasi

Anda dapat menerapkan aturan normalisasi data (terkadang hanya disebut aturan normalisasi) sebagai langkah berikutnya dalam desain Anda. Anda menggunakan aturan ini untuk melihat apakah tabel Anda terstruktur dengan benar. Proses menerapkan aturan ke desain database Anda disebut menormalkan database, atau hanya normalisasi.

Normalisasi paling berguna setelah Anda telah mewakili semua item informasi dan telah mencapai desain pendahuluan. Idenya adalah untuk membantu Anda memastikan bahwa Anda telah membagi item informasi Anda ke dalam tabel yang sesuai. Normalisasi apa yang tidak dapat dilakukan adalah memastikan bahwa Anda memiliki semua item data yang benar untuk memulai.

Anda menerapkan aturan dalam suksesi, pada setiap langkah memastikan bahwa desain Anda tiba di salah satu yang dikenal sebagai "bentuk normal." Lima bentuk normal diterima secara luas — bentuk normal pertama melalui bentuk normal kelima. Artikel ini memperluas tiga pertama, karena semua yang diperlukan untuk sebagian besar desain database.

Formulir normal pertama

Bentuk normal pertama menyatakan bahwa di setiap persimpangan baris dan kolom dalam tabel di sana, ada satu nilai, dan tidak pernah ada daftar nilai. Misalnya, Anda tidak dapat memiliki bidang bernama harga tempat Anda meletakkan lebih dari satu harga. Jika Anda memikirkan setiap persimpangan baris dan kolom sebagai sel, setiap sel hanya bisa menampung satu nilai.

Bentuk normal kedua

Bentuk normal kedua mensyaratkan bahwa masing-masing kolom non-kunci sepenuhnya tergantung pada kunci utama keseluruhan, bukan hanya pada bagian kunci. Aturan ini berlaku saat Anda memiliki kunci utama yang terdiri dari lebih dari satu kolom. Misalnya, Anda memiliki tabel yang berisi kolom berikut ini, di mana ID pesanan dan ID Produk merupakan kunci utama:

  • ID pesanan (kunci utama)

  • ID Produk (kunci utama)

  • Nama Produk

Desain ini melanggar bentuk normal kedua, karena nama produk bergantung pada ID Produk, tapi bukan pada ID pesanan, sehingga tidak tergantung pada seluruh kunci utama. Anda harus menghapus nama produk dari tabel. Ini termasuk dalam tabel yang berbeda (Products).

Formulir normal ketiga

Bentuk normal ketiga mengharuskan tidak hanya setiap kolom non-penting tergantung pada kunci utama keseluruhan, namun kolom non-kunci tersebut tidak saling berdampingan.

Cara lain untuk mengatakan ini adalah bahwa setiap kolom non-kunci harus tergantung pada kunci utama dan tidak ada kecuali kunci utamanya. Misalnya, Anda memiliki tabel yang berisi kolom berikut:

  • ProductID (kunci utama)

  • Nama

  • Rp

  • Discount

Asumsikan bahwa diskon tergantung pada harga eceran yang disarankan (SRP). Tabel ini melanggar bentuk normal ketiga karena kolom non-kunci, diskon, tergantung pada kolom non-kunci lainnya, SRP. Kemandirian kolom berarti Anda dapat mengubah kolom non-kunci tanpa mempengaruhi kolom lain. Jika Anda mengubah nilai dalam bidang SRP, diskon akan berubah sesuai, sehingga melanggar aturan tersebut. Dalam kasus ini diskon harus dipindahkan ke tabel lain yang dikunci pada SRP.

Atas Halaman

Perlu bantuan lainnya?

Kembangkan keterampilan Office Anda
Jelajahi pelatihan
Dapatkan fitur baru terlebih dahulu
Gabung ke Office Insiders

Apakah informasi ini bermanfaat?

Terima kasih atas umpan balik Anda!

Terima kasih atas umpan balik Anda! Sepertinya menghubungkan Anda ke salah satu agen dukungan Office kami akan sangat membantu.

×