Jeffrey Cross
Jeffrey Cross

Bila hendak menamakannya

Terdapat sedikit perang agama pangkalan data mengenai blog Dare Obasanjo dan Jeff Atwood, semua mengenai perkara yang dinamakan pangkalan data pangkalan data: ketika hendak menormalkan, apabila tidak, dan persoalan prestasi dan integriti data yang mendesak keputusan.

Inilah akar hujah. Apa yang telah kita ajarkan mengenai reka bentuk pangkalan data adalah tidak relevan jika reka bentuk tidak dapat memberikan hasil prestasi yang diperlukan.

Borang normal ke-3 membantu memastikan hubungan di DB anda mencerminkan realiti, bahawa anda tidak mempunyai data pendua, bahawa sifar untuk banyak hubungan dalam sistem anda dapat menampung senario yang berpotensi, dan ruang itu tidak terbuang dan dirizabkan untuk data yang tidak digunakan secara eksplisit. Kelemahan adalah bahawa objek tunggal dalam sistem mungkin merangkumi banyak jadual dan, apabila kumpulan data anda semakin besar, gabungan dan / atau beberapa pilihan yang diperlukan untuk mengeluarkan entiti dari sistem akan memberi kesan kepada prestasi sistem.

Dengan menafsirkan, anda boleh berkompromi dan tarik beberapa hubungan tersebut ke dalam jadual induk. Anda mungkin membuat keputusan, misalnya, bahawa pengguna hanya boleh mempunyai 3 nombor telefon, 1 alamat kerja, dan 1 alamat rumah. Dengan berbuat demikian, anda telah memenuhi keperluan senario biasa dan menghapus keperluan untuk bergabung dengan alamat atau alamat nombor berasingan alamat. Ini bukan satu kompromi yang tidak biasa. Lihat jadual kenalan di telefon bimbit purata anda untuk melihatnya dalam tindakan.

Jeff menulis:

Kedua-dua penyelesaian mempunyai kebaikan dan keburukan mereka. Oleh itu marilah saya bertanya kepada anda: yang lebih baik - pangkalan data dinormalkan, atau pangkalan data yang tidak dinamakan?

Soalan silap! Jawapannya adalah bahawa tidak mengapa! Sehingga anda mempunyai jutaan dan jutaan baris data, iaitu. Segala-galanya pantas untuk n kecil.

Jadi untuk n besar, apakah penyelesaiannya? Dalam pengalaman peribadi saya, anda biasanya boleh mempunyai kedua-dua cara.

Reka bentuk pangkalan data anda ke 3NF dari awal untuk memastikan integriti data dan untuk membenarkan ruang untuk pertumbuhan, hubungan tambahan, dan kewarasan masa depan dan pengindeksan. Hanya apabila anda mendapati terdapat masalah prestasi yang perlu anda fikirkan tentang mengoptimumkan. Biasanya ini boleh dicapai melalui pertanyaan yang lebih bijak.Apabila tidak boleh, anda memperoleh data yang dinamakan semula daripada sumber dinormalkan. Ini boleh semudah bidang tambahan dalam jadual induk yang menyusun maklumat semakan pada sisipan, atau ia boleh menjadi jadual cache objek penuh yang dikemaskini dari sumber rasmi pada beberapa masa yang tetap atau ketika sesuatu yang penting bahkan berlaku.

Baca perbincangan dan berkongsi ulasan anda. Kepada saya, takeaway besar adalah bahawa tidak ada penyelesaian yang sesuai dengan setiap masalah dunia nyata. Pada akhirnya, reka bentuk akhir anda harus mencerminkan keperluan unik masalah yang sedang dipecahkan.

Apabila Tidak Normalkan Pangkalan Data SQL Anda Mungkin Normalizing Tidak Normal

Kongsi

Meninggalkan Komen