Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Cara Membuat Model Database Dari Awal

Jadi, Anda ingin membuat model database pertama tetapi tidak tahu bagaimana memulainya? Baca terus!

Saya berasumsi Anda sudah tahu sedikit tentang tabel, kolom, dan hubungan. Jika tidak, tonton tutorial video kami sebelum melanjutkan.

Mulai dengan Deskripsi Sistem

Anda harus selalu mulai membuat model database dengan deskripsi dari sebuah sistem. Dalam situasi kelas, deskripsi sistem diberikan kepada Anda oleh seorang guru. Dalam kehidupan nyata, menyiapkan deskripsi adalah proses dalam haknya sendiri. Saya hanya akan berasumsi bahwa Anda memiliki deskripsi. Tidak masalah apakah itu diberikan kepada Anda oleh klien Anda, bos Anda, guru Anda, atau Anda sendiri yang menulisnya.

Lihat deskripsi dan sorot semua kata benda . Kata benda dalam deskripsi secara kasar dapat dibagi menjadi tiga kategori:tabel, atribut, dan contoh.

  • Tabel mewakili entitas utama dalam sistem:orang, objek fisik, peristiwa, transaksi, dll.
  • Atribut adalah properti yang terkait dengan entitas utama. Mereka menggambarkan fitur entitas Anda. Dalam model database, kolom tersebut akan menjadi kolom di tabel Anda.
  • Contoh hanya itu, contoh. Mereka membantu Anda memahami tipe data atribut tertentu dan membantu Anda memahami hubungan antara entitas yang berbeda.

Memulai dengan deskripsi memiliki manfaat untuk memaksa Anda menggunakan glosarium . yang sama sebagai pengguna Anda. Jika Anda membuat sistem untuk sekolah dasar, Anda harus berbicara tentang murid. Jika Anda membuat sistem serupa untuk universitas, Anda harus berbicara tentang siswa.

Tabel, Hubungan, Kolom

  1. Setelah kata benda Anda disorot, identifikasi tabel . Anda tidak harus membuat model semuanya sekaligus. Fokus pada fungsionalitas inti sistem terlebih dahulu.
  2. Jika Anda memiliki tabel, cari tahu hubungan antara tabel. Langkah ini mungkin mengarah pada pengenalan tabel perantara (persimpangan) baru.
  3. Terakhir tambahkan kolom ke meja.

Pada titik ini, Anda harus membaca deskripsi lagi dan melihat apakah ada yang hilang. Saya jamin akan ada sesuatu untuk ditambahkan. Tambahkan tabel baru, hubungan baru, dan kolom baru. Baca deskripsi lagi...

Hal yang Perlu Diingat

Membuat model database adalah berulang proses. Jangan mencoba memodelkan semuanya sekaligus. Mulailah dengan entitas inti dari sistem Anda. Anda dapat menambahkan lebih banyak detail nanti.

Tidak apa-apa untuk mengajukan pertanyaan . Tidak peduli seberapa tepat deskripsinya, Anda akan selalu memiliki keraguan. Sesuatu akan selalu kurang spesifik. Ajukan pertanyaan tentang hal-hal yang tidak Anda yakini. Jika Anda tidak dapat mengajukan pertanyaan, buat asumsi yang masuk akal dan catat asumsi yang Anda buat.

Selalu ada lebih dari satu cara untuk memodelkan setiap sistem. Beberapa model jelas-jelas buruk, tetapi dengan kebanyakan model lainnya, sulit untuk menilai apakah mereka benar atau salah. Model tergantung pada apa tujuan sistem, bagaimana data masuk ke sistem, bahkan pada selera pribadi perancang. Saat Anda mendapatkan pengalaman, Anda akan menjadi lebih percaya diri tentang keputusan desain Anda.

Contoh:Sistem Sewa Mobil

Sebagai contoh kita akan membuat model database untuk sistem rental mobil. Pertama, lihat deskripsi sistem:

Perusahaan rental mobil menyewakan mobil ke pelanggan. Perusahaan memiliki beberapa mobil. Setiap mobil memiliki merek, nama model, tahun produksi, jarak tempuh, warna, dan sebagainya. Mobil dibagi ke dalam kategori berbeda:kecil, sedang, besar, limusin.

Perusahaan ini memiliki banyak lokasi tempat Anda dapat menyewa mobil. Lokasi sewa terletak di berbagai kota di seluruh negara. Mungkin ada lebih dari satu lokasi perusahaan dalam satu kota.

Siapa pun yang berusia di atas 21 tahun yang memiliki SIM yang valid dapat menyewa mobil. Pelanggan di bawah 25 tahun atau di atas 75 tahun membayar biaya yang berbeda (lebih tinggi) dari pelanggan lainnya.

Sebelum menyewa mobil, pelanggan biasanya melakukan reservasi untuk mobil. Seorang pelanggan menentukan tanggal kapan mobil akan disewa, lokasi penjemputan, lokasi pengantaran, dan kategori mobil yang ingin disewa. Pelanggan dapat menentukan, bahwa ia menginginkan beberapa peralatan tambahan di mobil, misalnya GPS, car seat untuk anak, dll.

Saat pelanggan menyewa mobil, ia menyatakan lokasi penjemputan dan pengantaran, serta tanggal pengantaran. Pelanggan dapat membeli berbagai jenis asuransi. Dia juga dapat memutuskan bahwa dia tidak memerlukan asuransi karena asuransi ditanggung sebaliknya, misalnya oleh perusahaan kartu kreditnya. Pelanggan dapat memilih opsi tambahan seperti kemungkinan berhenti lebih awal, berbagai opsi pengisian bahan bakar, dll.

Pelanggan membayar biaya saat mengembalikan mobil.

Kita mulai dengan menyorot semua kata benda: 

Tahap selanjutnya adalah menemukan tabel . Kami mencari entitas dasar dalam sistem. Sebagai permulaan, Anda setidaknya harus memiliki ini:mobil, pelanggan, lokasi, kota, peralatan, kategori (mobil), asuransi. Kami menempatkan mereka dalam diagram. Saya menambahkan id kolom di setiap tabel karena setiap tabel harus memiliki semacam id. Anda selalu dapat mengubah kunci utama nanti.




Entitas sistem dasar ada dalam model, tetapi Anda harus memperhatikan bahwa kami kehilangan fungsionalitas inti sistem:menyewa mobil dan reservasi. Ingat apa yang kami katakan di awal:tabel tidak hanya objek fisik tetapi juga peristiwa dan transaksi. Anda harus menambahkan reservation dan rental sebagai tabel juga. Ini dia:




Sekarang kita tambahkan referensi antar tabel dalam model. Saya memberi nomor referensi saat saya menambahkannya. Catatan di samping setiap referensi memberi tahu Anda kapan referensi itu ditambahkan:

  1. Setiap mobil termasuk dalam satu kategori,
  2. Setiap reservasi untuk kategori mobil,
  3. Setiap lokasi berada dalam satu kota,
  4. Setiap reservasi memiliki lokasi penjemputan dan pengantaran,
  5. Setiap reservasi dibuat oleh pelanggan,
  6. Setiap rental dibuat oleh pelanggan,
  7. Setiap sewa untuk mobil tertentu,
  8. Setiap rental memiliki lokasi penjemputan dan pengantaran.
  9. Setiap persewaan terhubung dengan beberapa asuransi. Tapi apakah hanya ada satu asuransi untuk setiap sewa? Tidak. Ada banyak asuransi yang terkait dengan persewaan (asuransi terhadap kerusakan kendaraan, terhadap cedera pribadi, terhadap mencederai mobil orang lain, ...). Saya menambahkan tabel perantara yang disebut rental_insurance terhubung ke rental dan insurance tabel.



Kami masih kehilangan referensi antara mobil dan peralatan. Apakah peralatan terpasang secara permanen pada mobil atau dapatkah dipindahkan dari satu mobil ke mobil lainnya? Tidak ada jawaban untuk pertanyaan itu dalam deskripsi, jadi kami akan membuat asumsi yang masuk akal:ya, itu bisa dipindahkan. Kami menambahkan tabel baru car_equipment dan referensi antara car dan equipment .

Kami menghapus company meja. Perusahaan rental secara implisit hadir dalam sistem. Bagaimanapun, perusahaan lain akan memiliki sistem dan database mereka sendiri.




Terakhir, kami menambahkan kolom dan tipe datanya. Kami juga memperhatikan bahwa tidak ada hubungan antara reservation dan equipment . Tetapi apakah reservasi dibuat untuk peralatan tertentu? Tidak, itu dibuat untuk jenis peralatan:kami menambahkan tabel equipment_category dan hubungkan tabel reservation dan equipment untuk itu.




Sudahkah kita selesai? Baca deskripsi lagi. Model database kami masih menghilangkan biaya. Nah...

Itu adalah latihan untuk pembaca. (Tetapi jika Anda tidak ingin melatih keterampilan pemodelan basis data Anda, di sini Anda dapat menemukan struktur basis data yang siap digunakan untuk perusahaan rental mobil.)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbedaan Antara Batasan Inline dan Out-of-Line

  2. Tutorial SSIS Untuk Pemula:Mengapa, Apa dan Bagaimana?

  3. Bagaimana tidak memanggil prosedur tersimpan yang dikompilasi secara asli Hekaton

  4. Dampak Rencana Eksekusi pada ASYNC_NETWORK_IO Menunggu – Bagian 1

  5. Visualisasi Data Menggunakan Apache Zeppelin – Tutorial