Saya belajar tentang normalisasi baru-baru ini, dan memahami betapa pentingnya saat menerapkan skema baru.
Bagaimana saya bisa mengecek apakah database saya memenuhi persyaratan 2NF atau 3NF?
Tinjauan manual adalah pilihan yang pasti, tetapi saya sedang mencari alat otomatis di sini.
Saya tidak mencari alat point-and-klik, lebih banyak sesuatu yang akan menyoroti kemungkinan optimasi untuk membuat tabel 3NF compliant. Saya kira itu mungkin menggunakan statistik berdasarkan data sampel yang baik dan / atau analisis semantik nama kolom.
Jawaban:
Normalisasi benar-benar digunakan di dunia nyata ... dan mudah-mudahan Anda tahu bahwa 3NF hanyalah yang ketiga dari ... apa yang sekarang, 8? Tetapi 3NF harus menjadi target yang mudah.
Namun ... Saya berani mengatakan bahwa tidak ada alat seperti itu.
Normalisasi, secara teknis, adalah atribut dari setiap tabel. Dalam database yang diberikan, tabel yang berbeda mungkin memiliki tingkat normalisasi yang berbeda.
Setiap tabel mewakili fakta ... fakta tentang kejadian jenis tertentu (orang, akun, pesanan, pengiriman, barang, lokasi) termasuk, kadang-kadang, kunci asing yang mengarahkan Anda ke jenis fakta lain tentang hal itu.
Normalisasi berkaitan dengan seberapa akurat dan efisien fakta diwakili dalam tabel serta kemampuan desain tabel untuk mencegah pola data yang ambigu dan berlebihan.
Dengan demikian, diperlukan pemahaman tentang fakta aktual ... yang berada di luar ruang lingkup alat otomatis.
Di dunia di mana semua instruktur mengajar semua mata pelajaran dan setiap siswa dapat mengambil kombinasi apa pun tetapi tidak lebih dari satu mata pelajaran pada setiap mata pelajaran dari masing-masing instruktur, tabel ini memang bisa dikatakan berada di 3NF. Di dunia nyata, membuat klaim 3NF untuk tabel ini tidak masuk akal.
Untuk memahami apa yang tidak ada dalam 3NF diperlukan pemahaman tentang sifat fakta yang diwakilinya. Dalam kenyataan kami, tabel ini tidak akan menjadi 3NF karena (antara alasan lain) subjek dan instruktur dikaitkan bersama dengan cara-cara yang tidak ada hubungannya dengan siswa. Jika kita memiliki kursus di mana instruktur mengajar mata pelajaran yang disimpan di tempat lain dalam database kita, mengapa kita menyalin kedua nilai di sini alih-alih kunci asing dari tabel lain yang menunjukkan bahwa siswa telah mendaftar untuk kursus? Jika instruktur diganti, kami harus mengubah banyak catatan di banyak tempat.
Semakin normal suatu basis data, semakin konsisten secara intrinsik dengan dunia nyata dan dengan dirinya sendiri, dan semakin sulit untuk fakta-fakta basis data secara tidak sengaja menjadi tidak benar. Desain basis data adalah seni, tetapi yang paling pasti adalah ilmu juga.
Meskipun saya tidak melihat secara langsung dengan semua yang ditulisnya, saya akan merekomendasikan buku Chris Date, Desain Basis Data dan Teori Relasional: Bentuk Normal dan All That Jazz yang masuk ke detail luar biasa tentang teori yang mendasari model relasional.
sumber
Bagian dari titik menggunakan metode formal dalam mengembangkan teori relasional adalah mengembangkan prosedur yang dapat diotomatisasi. Saya cukup yakin CJ Date keluar dan mengatakan bahwa dalam Pengantar Sistem Basis Data .
Beberapa alat CASE yang dirilis pada akhir 1980-an atau awal 1990-an dapat menurunkan setiap skema 5NF yang mungkin baik dengan menganalisis diagram ER atau dengan analisis statistik data sampel.
Visio Enterprise Architect (saya pikir) adalah alat yang relatif baru di sepanjang garis tersebut.
sumber
Saya sangat meragukan bahwa Anda masih membutuhkan jawaban, tetapi jika Anda atau orang lain mendapat manfaat, Anda mungkin ingin mencoba alat ini: http://uisacad5.uis.edu/cgi-bin/mcrem2/ database_design_tool.cgi
sumber
Saya pikir jika Anda bisa menulis alat untuk melakukannya, masih akan memerlukan tinjauan manual untuk membuat pekerjaan. bentuk normal didefinisikan berdasarkan dependensi fungsional dan ini tidak dapat ditentukan hanya dari inspeksi data. Dengan kata lain, ini adalah masalah logika induktif daripada deduktif untuk menentukan apakah ada ketergantungan fungsional.
sumber