Apa landasan teori yang Anda temukan untuk desain basis data "Pola penyimpanan"? Saya kira tidak ada. Ini adalah lapisan kerumitan yang bertumpu pada premis palsu: bahwa "lapisan kegigihan" adalah sesuatu yang harus diisolasi. Dari apa yang bisa saya katakan, ini memainkan ke ketidaktahuan pemrograman yang luas tentang prinsip-prinsip desain relasional, dan panders ke sentralitas yang disyaratkan dari desain OO aplikasi. Tapi itu tidak membenarkan keberadaannya dengan alasan yang rasional, apalagi teoretis.
One True Path ke desain basis data tidak berubah dalam 30 tahun: menganalisis data. Temukan kunci dan batasan dan hubungan banyak ke satu. Desain tabel Anda sesuai dengan bentuk normal Boyce-Codd. Gunakan tampilan dan prosedur tersimpan untuk memfasilitasi akses data.
Meskipun tidak dicintai, SQL DBMS menyediakan lapisan isolasi yang lebih baik daripada apa pun yang bisa diberikan oleh programmer. Memang benar bahwa ketika database berubah, SQL yang digunakan untuk mengaksesnya mungkin harus berubah. Tetapi perhatikan bahwa itu benar terlepas dari apakah ada lapisan mediasi atau tidak . Selama aplikasi menggunakan tampilan dan prosedur tersimpan untuk mengakses DBMS, alat rekayasa SQL biasa akan menunjukkan ketika perubahan pada basis data yang mendasari membatalkan pandangan dan prosedur tersimpan tersebut.
Disinilah letak tantangannya, tentu saja. Lapisan mediasi memberikan ilusi isolasi dan kenyamanan bagi programmer menulis kode, yang ia tahu bagaimana melakukannya. Mempelajari desain basis data dan SQL membutuhkan pembelajaran sesuatu yang baru. Kebanyakan orang lebih suka mati daripada berpikir, dan banyak yang berhasil.
Seseorang di tim Anda pasti akan keberatan bahwa menulis SQL untuk mendukung 200 kelas Anda banyak pekerjaan. Tanpa keraguan. Tapi setidaknya ini berguna . Jika Anda mendesain database dengan meniru desain OO Anda, Anda juga akan melakukan banyak pekerjaan, banyak yang tidak berguna, dan mengalahkan sebagian besar apa yang ditawarkan DBMS kepada Anda.
Sebagai contoh, Anda merenungkan Unit Kerja mencerminkan dalam database (seperti tabel atau tabel, saya kira). Unit kerja adalah built-in layanan DBMS: begin transaction
... database update ... commit transaction
. Tidak ada yang bisa dimodelkan, selain pemetaan kelas Anda ke tabel database di SQL.
Pertanyaan Anda telah diposting 4 tahun yang lalu. Saya menjawab karena "diperbarui" dalam beberapa cara baru-baru ini, menunjukkan masih menarik bagi seseorang. Saya harap jawaban saya mendorong pembaca untuk menerapkan teori relasional dasar untuk masalah daripada mengadopsi solusi yang tidak berguna.