Saya membookmark posting blog Phil Factor Normalisasi dan 'Anima notitia copia' hari ini karena merangkum kasus ini dengan rapi dan berlawanan dengan normalisasi tipe data tertentu. Jalankan kueri berikut pada contoh SQL dan lihat apakah Anda setuju.
SELECT * FROM sys.syslanguages
SQL memungkinkan Anda membuat basis data relasional. Namun, bahkan jika baunya buruk, itu bukan kejahatan untuk melakukan hal-hal mengerikan yang tidak berhubungan dengan Database SQL asalkan diperlukan dan Anda dapat membedakannya; tidak hanya itu tetapi juga hanya jika Anda menyadari risiko dan implikasinya.
Anda menyebutkan bahwa file XML berisi "informasi tambahan tentang data". Apakah ada manfaat dalam pemodelan metadata dalam database relasional, untuk keperluan interogasi mungkin? Jika demikian, mungkin ada kasus untuk mengekstraksi data yang relevan dan mempertahankan XML yang tersisa sebagai jenis dokumen XML.
... jika Anda melewatkan string JSON atau XML, dan diminta untuk menyimpannya dalam database, maka yang perlu Anda lakukan hanyalah bertanya pada diri sendiri, dalam peran Anda sebagai Anima notitia copia (Jiwa basis data) 'apakah saya punya tertarik pada isi informasi ini? '. Jika jawabannya adalah 'Tidak!', Atau 'nequequam! Maka itu adalah nilai atom, betapapun kompleksnya itu.
Argumen Phil Factor adalah bahwa bidang non-relasional dalam database relasional dapat diterima jika bidang tersebut diperlakukan sebagai atom yaitu tidak berubah, atau ketika seluruh bidang berubah, bukan bagian penyusunnya. Perpanjangan alami dari hal ini adalah bahwa jika dokumen Anda mengandung elemen yang Anda minati, mungkin ada nilai dalam menerapkan model relasional untuk elemen-elemen tersebut.
Relevan dengan pertanyaan tetapi terutama untuk ungkapan, satu kutipan terakhir dari Phil:
Tentu saja, saya tidak pernah dengan sengaja membuat database yang tidak disukai oleh Codd, tetapi di sekitar tepinya ada antarmuka dan data feed yang saya tulis yang telah menyebabkan kecocokan desis di antara para fundamentalis Normalisasi.
Bukankah kita semua!