Apakah Anda tahu sumber yang bagus untuk belajar bagaimana merancang solusi SQL?
Di luar sintaks bahasa dasar, saya sedang mencari sesuatu untuk membantu saya memahami:
- Tabel apa yang akan dibuat dan bagaimana menautkannya
- Cara mendesain untuk skala yang berbeda (aplikasi klien kecil ke situs web besar yang didistribusikan)
- Cara menulis kueri SQL yang efektif / efisien / elegan
sql
database
database-design
scalability
ripper234
sumber
sumber
Jawaban:
Saya mulai dengan buku ini: Desain Basis Data Relasional Jelas Dijelaskan (Seri Morgan Kaufmann dalam Sistem Manajemen Data) (Paperback) oleh Jan L. Harrington dan merasa sangat jelas dan bermanfaat
dan seiring dengan bertambahnya kecepatan, yang ini juga bagus Sistem Basis Data: Pendekatan Praktis untuk Desain, Implementasi dan Manajemen (Seri Ilmu Komputer Internasional) (Paperback)
Saya pikir desain SQL dan database berbeda (tapi saling melengkapi).
sumber
Saya mulai dengan artikel ini
http://en.tekstenuitleg.net/articles/software/database-design-tutorial/intro.html
Ini cukup ringkas dibandingkan dengan membaca seluruh buku dan menjelaskan dasar-dasar desain basis data (normalisasi, jenis hubungan) dengan sangat baik.
sumber
Pengalaman sangat penting, tetapi dalam hal desain tabel Anda dapat belajar banyak dari bagaimana ORM seperti Hibernate dan Grails beroperasi untuk melihat mengapa mereka melakukan sesuatu. Sebagai tambahan:
Pisahkan jenis data yang berbeda - jangan menyimpan alamat di tabel pesanan Anda, tautkan ke alamat di tabel alamat yang terpisah, misalnya.
Saya pribadi suka memiliki bilangan bulat atau kunci pengganti yang panjang pada setiap tabel (yang menyimpan data, bukan yang menautkan tabel yang berbeda bersama-sama, hubungan e, g., M: n) yang merupakan kunci utama.
Saya juga suka memiliki kolom cap waktu yang dibuat dan dimodifikasi.
Pastikan bahwa setiap kolom yang Anda lakukan "di mana kolom = val" dalam kueri apa pun memiliki indeks. Mungkin bukan indeks yang paling sempurna di dunia untuk tipe data, tetapi setidaknya indeks.
Siapkan kunci asing Anda. Juga atur ON DELETE dan ON MODIFY aturan mana yang relevan, baik kaskade atau set null, tergantung pada struktur objek Anda (jadi Anda hanya perlu menghapus sekali pada 'kepala' dari pohon objek Anda, dan semua sub-objek objek mendapatkan dihapus secara otomatis).
Jika Anda ingin memodernisasi kode Anda, Anda mungkin ingin membuat modularise skema DB Anda - mis., Ini adalah area "pelanggan", ini adalah area "pesanan", dan ini adalah area "produk", dan menggunakan tabel join / link di antara mereka, bahkan jika itu adalah relasi 1: n, dan mungkin menduplikasi informasi penting (yaitu, menduplikasi nama produk, kode, harga ke tabel order_details Anda). Baca tentang normalisasi.
Orang lain akan merekomendasikan hal yang sebaliknya untuk beberapa atau semua hal di atas: p - tidak pernah ada cara yang benar untuk melakukan beberapa hal eh!
sumber
explain analyze
apakah suatu indeks menguntungkan.Saya sangat menyukai artikel ini .. http://www.codeproject.com/Articles/359654/important-database-designing-rules-which-I-fo
sumber
Head First SQL adalah pengantar yang bagus.
sumber
Ini adalah pertanyaan yang, menurut pendapat saya, membutuhkan pengetahuan yang berbeda dari domain yang berbeda.
Yang mengatakan, mungkin Anda ingin membaca beberapa buku, secara pribadi saya telah menggunakan buku ini di kursus basis data universitas saya (dan menemukan yang layak, tetapi saya belum membaca buku-buku lain di bidang ini, jadi saran saya adalah untuk memeriksa beberapa buku bagus dalam desain basis data).
sumber
Sudah lama sejak saya membacanya (jadi, saya tidak yakin seberapa banyak itu masih relevan), tetapi ingatan saya adalah bahwa buku SQL for Smarties karya Joe Celko memberikan banyak info tentang penulisan pertanyaan yang elegan, efektif, dan efisien .
sumber