Pola desain biasanya terkait dengan desain berorientasi objek.
Apakah ada pola desain untuk membuat dan memprogram basis data relasional ?
Banyak masalah pasti harus memiliki solusi yang dapat digunakan kembali.
Contoh akan mencakup pola untuk desain tabel, prosedur tersimpan, pemicu, dll ...
Apakah ada repositori online dari pola semacam itu, mirip dengan martinfowler.com ?
Contoh masalah yang bisa dipecahkan oleh pola:
- Menyimpan data hierarkis (misalnya tabel tunggal dengan tipe vs beberapa tabel dengan kunci 1: 1 dan perbedaan ...)
- Menyimpan data dengan struktur variabel (mis. Kolom generik vs kolom xml vs dibatasi ...)
- Mendenormalkan data (bagaimana melakukannya dengan dampak minimal, dll ...)
design-patterns
database-design
rdbms
Sklivvz
sumber
sumber
Jawaban:
Ada sebuah buku di Martin Fowler's Signature Series yang disebut Refactoring Databases . Itu memberikan daftar teknik untuk refactoring database. Saya tidak bisa mengatakan saya sudah sering mendengar daftar pola basis data.
Saya juga sangat merekomendasikan Pola Model Data David C. Hay dan tindak lanjut A Metadata Map yang dibangun berdasarkan yang pertama dan jauh lebih ambisius dan menarik. Pendahuluan saja yang mencerahkan.
Juga tempat yang tepat untuk mencari beberapa model database pra-kalengan adalah Len Model Buku Sumber Daya Seri Silverston Volume 1 berisi model data yang berlaku secara universal (karyawan, akun, pengiriman, pembelian, dll), Volume 2 berisi model data spesifik industri (akuntansi, layanan kesehatan, dll), Volume 3 menyediakan pola model data.
Akhirnya, sementara buku ini seolah-olah tentang UML dan Object Modeling, Peter Coad's Modeling in Color With UML memberikan proses yang didorong oleh "pola dasar" pemodelan entitas mulai dari premis bahwa ada 4 arketipe inti dari setiap objek / model data
sumber
Pola desain bukan solusi yang dapat digunakan kembali.
Pola desain dapat digunakan kembali, menurut definisi. Mereka adalah pola kamu deteksi dalam solusi bagus lainnya.
Suatu pola tidak dapat digunakan kembali secara sepele. Anda dapat menerapkan desain down Anda dengan mengikuti pola.
Patters desain relasional meliputi hal-hal seperti:
Hubungan satu ke banyak (detail utama, orangtua-anak) menggunakan kunci asing.
Hubungan Many-to-Many dengan tabel jembatan.
Hubungan satu-ke-satu opsional dikelola dengan NULL di kolom FK.
Skema Bintang: Dimensi dan Fakta, desain OLAP.
Desain OLTP sepenuhnya dinormalisasi.
Beberapa kolom pencarian yang diindeks dalam dimensi.
"Tabel pencarian" yang berisi PK, deskripsi, dan nilai kode yang digunakan oleh satu atau lebih aplikasi. Mengapa punya kode? Saya tidak tahu, tetapi ketika harus digunakan, ini adalah cara untuk mengelola kode.
Uni-table. [Beberapa menyebut ini sebagai anti-pola; itu sebuah pola, kadang-kadang itu buruk, kadang-kadang itu bagus.] Ini adalah tabel dengan banyak hal yang sudah bergabung yang melanggar bentuk normal kedua dan ketiga.
Tabel array Ini adalah tabel yang melanggar bentuk normal pertama dengan memiliki array atau urutan nilai dalam kolom.
Basis data penggunaan campuran. Ini adalah database yang dinormalisasi untuk pemrosesan transaksi tetapi dengan banyak indeks tambahan untuk pelaporan dan analisis. Ini anti-pola - jangan lakukan ini. Orang-orang tetap melakukannya, jadi ini masih sebuah pola.
Kebanyakan orang yang mendesain database dapat dengan mudah mengoceh setengah lusin "Ini salah satu dari mereka"; ini adalah pola desain yang mereka gunakan secara teratur.
Dan ini tidak termasuk pola administrasi dan operasional penggunaan dan manajemen.
sumber
AskTom mungkin adalah satu-satunya sumber daya yang paling membantu tentang praktik terbaik pada Oracle DBs. (Saya biasanya cukup mengetik "asktom" sebagai kata pertama dari kueri google pada topik tertentu)
Saya tidak berpikir itu benar-benar tepat untuk berbicara tentang pola desain dengan basis data relasional. Database relasional sudah merupakan penerapan "pola desain" untuk suatu masalah (masalahnya adalah "bagaimana merepresentasikan, menyimpan, dan bekerja dengan data dengan tetap menjaga integritasnya", dan desain menjadi model relasional). Pendekatan lain (umumnya dianggap usang) adalah model Navigational dan Hierarchical (dan saya masih memiliki banyak model lain).
Karena itu, Anda dapat mempertimbangkan "Pergudangan Data" sebagai "pola" atau pendekatan yang agak terpisah dalam desain basis data. Secara khusus, Anda mungkin tertarik membaca tentang skema Bintang .
sumber
Setelah bertahun-tahun pengembangan basis data saya dapat mengatakan ada beberapa jalan keluar dan beberapa pertanyaan yang harus Anda jawab sebelum Anda mulai:
pertanyaan:
Tidak menggunakan:
rekomendasi:
Saya harap ini adalah titik awal yang baik.
sumber
Pertanyaan Anda agak kabur, tapi saya kira
UPSERT
bisa dianggap sebagai pola desain. Untuk bahasa yang tidak diimplementasikanMERGE
, sejumlah alternatif untuk menyelesaikan masalah (jika ada baris yang sesuai, ada yangUPDATE
lainINSERT
).sumber
Tergantung apa yang Anda maksud dengan suatu pola. Jika Anda berpikir Orang / Perusahaan / Transaksi / Produk dan semacamnya, maka ya - ada banyak skema basis data generik yang sudah tersedia.
Jika Anda berpikir Factory, Singleton ... maka tidak - Anda tidak memerlukan semua ini karena mereka terlalu rendah untuk pemrograman DB.
Jika Anda berpikir penamaan objek database, maka itu di bawah kategori konvensi, bukan desain per se.
BTW, S.Lott, hubungan satu-ke-banyak dan banyak-ke-banyak bukanlah "pola". Mereka adalah blok bangunan dasar dari model relasional.
sumber