Dengan liburan yang semakin dekat, Sinterklas membutuhkan bantuan tambahan untuk mengirimkan hadiah kepada anak-anak di seluruh dunia. Hari ini, kami akan mengembangkan model data yang dapat membantu Sinterklas dan elfnya bekerja lebih efisien.
Latar Belakang
Pekerjaan Santa sangat penting, jadi dia perlu melakukan semua yang dia bisa untuk memastikan kesuksesan tepat waktu. Ingat saja semua masalah yang dihadapi Howard di 'Jingle All the Way' ketika mencoba menemukan satu figur Turbo Man — kita tidak bisa membiarkan Santa tergelincir lagi, atau reputasinya akan hancur. Jadi, untuk membantu Sinterklas tetap teratur, kami akan membagi aktivitasnya menjadi tiga fase utama.
-
Perencanaan
Pertama, Santa perlu merencanakan segalanya. Lagi pula, dia tidak bisa membiarkan para elfnya berkeliaran di sekitar pabrik dan panik ketika mereka mencoba memahami miliaran pengiriman! Selain membaca surat tahun ini dan menentukan hadiah apa yang disukai anak-anak, kita juga harus menganalisis tren dari tahun-tahun sebelumnya untuk mengumpulkan beberapa bahan umum atau bahkan membuat hadiah sebelumnya. Ini akan membantu mengurangi beberapa backlog saat kami mulai mengerjakan produksi.
-
Produksi
Setelah tahap perencanaan, kami siap untuk mulai memproduksi hadiah. Dengan bantuan elf Santa, kami dapat dengan cepat membuat dan mengemas hadiah sesuai dengan daftar keinginan yang kami terima. Namun, untuk membuat prosesnya lebih efisien, kita perlu mengatur semua bahan dan informasi yang kita miliki sehingga para elf dapat mengambil barang-barang yang mereka butuhkan secepat mungkin.
-
Pengiriman
Saatnya semakin dekat! Rusa kutub Santa sudah siap, dan pria itu sendiri dengan cemas memeriksa arlojinya. Hadiah dengan cepat dimuat ke giring oleh pembantu Santa. Pada titik ini, Sinterklas melihat jadwalnya untuk terakhir kalinya untuk memastikan dia memiliki semua alamat yang benar, serta catatan apa pun yang perlu dia pertimbangkan.
Sekarang setelah kita memiliki sedikit latar belakang tentang jenis informasi yang akan kita perlukan untuk bekerja, akhirnya kita dapat mulai merancang model data Sinterklas.
Model Data
Model data ini terdiri dari tiga bagian:
- Item
- Orang dan Daftar Keinginan
- Pengiriman
Mari kita lihat lebih dekat satu per satu.
Bagian 1:Item
Model data kami dimulai dengan bagian Item, yang berisi banyak tabel yang merupakan pusat dari dua bagian yang tersisa.
item_type
tabel bisa dibilang yang paling penting di sini. Tabel ini berisi daftar semua barang yang kita perlukan untuk diproduksi di pabrik Santa. Untuk setiap item, kami akan menyimpan informasi berikut:
item_name
— nama barangnya.properties
— pasangan nilai kunci tekstual yang menunjukkan ukuran, bentuk, warna, dan properti lain dari item yang dihasilkan, disimpan dalam format terstruktur.description
— deskripsi tekstual item yang tidak terstruktur.
Jika kita pernah memiliki dua item serupa yang hanya berbeda dalam beberapa propertinya, seperti warna, kita akan melanjutkan dan menyimpannya sebagai record individual dalam tabel.
Untuk keperluan model data kami, kami akan berasumsi bahwa Sinterklas tidak akan membeli hadiah tetapi akan memerintahkan elfnya untuk memproduksi semuanya di rumah. Untuk setiap jenis item yang berbeda, kami akan memiliki daftar prasyarat yang harus kami penuhi. Ini bisa berupa tenaga kerja atau bahan seperti kayu, plastik, logam, dan cat. Kita perlu menyimpan daftar semua prasyarat yang mungkin dan menghubungkannya dengan setiap item yang perlu kita produksi. Kami akan menggunakan empat tabel untuk mencapai ini.
Yang pertama dari keempat tabel ini adalah prerequisite
, yang, seperti namanya, menyimpan daftar semua kemungkinan prasyarat. Untuk setiap record dalam tabel ini, kami akan menyimpan nama prasyarat yang unik, semua properties
tambahan (kali ini dalam format tidak terstruktur), dan referensi ke prerequisite_type
dan kamus satuan. prerequisite_type
kamus akan digunakan untuk menyimpan daftar semua kategori prasyarat, seperti "tenaga kerja" dan "bahan". unit
kamus akan digunakan untuk menyimpan daftar semua unit yang akan kami gunakan untuk mengukur prasyarat kami. Misalnya, kita dapat mengharapkan tenaga kerja diukur dalam jam atau menit dan bahan diukur dalam hal biaya produksi (dolar), berat (kilogram), atau volume (liter).
Tabel terakhir di bagian ini adalah warehouse
, yang akan kami gunakan untuk melacak status inventaris kami saat ini untuk item dan material (karenanya item_type_id
dan prerequisite_id
kunci asing). Hanya satu dari dua kunci ini yang akan berisi nilai pada titik waktu tertentu. Selain kunci ini, kami akan menyimpan quantity
akhir yang tersedia pada warehouse_date
tertentu .
Bagian 2:Orang dan Daftar Keinginan
Bagian penting dari model data kami, bagian ini membahas hal-hal yang ingin ditemukan anak-anak di bawah pohon Natal mereka! Kami akan bekerja dari kanan ke kiri.
Dua tabel paling kanan adalah country
dan city
. Kami akan menggunakan dua tabel ini saat merujuk lokasi anak yang mengirimi Santa daftar keinginan. country
tabel hanya berisi country_name
yang unik atribut dan daftar semua countries
yang ada . Untuk lebih tepatnya dengan lokasi kami, kami akan menggunakan city
meja untuk menyimpan semua kota yang harus dikunjungi Santa. Untuk setiap kota dalam tabel ini, kami akan menyimpan:
city_name
— nama kota, yang belum tentu unik.postal_code
— kode pos kota.country_id
— id negara tempat kota itu berada. Bersama dengan dua atribut sebelumnya, ini membentuk kunci unik untuk tabel ini.latitude
danlongitude
— digunakan untuk membantu Sinterklas menemukan kota di petanya atau memasukkan koordinatnya ke dalam sistem navigasi yang dia gunakan.
Tentu saja, Anda tidak dapat memiliki keinginan tanpa orang! Kami akan menyimpan daftar semua orang di person
meja. Untuk setiap individu, kami akan menyimpan first_name
, last_name
, birth_date
, dan city
. Kami juga akan menyimpan alamat orang tersebut, serta delivery_details
tambahan Sinterklas mungkin perlu mempertimbangkan (seperti catatan yang menunjukkan bahwa seseorang tidak memiliki cerobong asap).
Tabel terakhir dari bagian ini berisi wish_list
yang menyimpan semua keinginan Natal yang pernah dibuat. Untuk setiap keinginan, kita perlu mengetahui:
person_id
— referensi ke orang yang membuat keinginan.item_type_id
— referensi ke item (tipe) yang diminta orang.quantity
— jumlah barang yang diinginkan ditentukan dalam keinginan.details
— semua detail yang dapat membantu Sinterklas memenuhi keinginannya.ts
— menunjukkan saat keinginan disimpan dalam sistem kami, yang penting untuk menentukan tahun di mana keinginan itu dibuat.gift_id
— referensi ke tabel hadiah yang menunjukkan hadiah yang dikirimkan untuk memenuhi keinginan ini.
Bagian 3:Pengiriman
Sekarang, kami akhirnya tiba di bagian paling menarik dari model data kami—hadiah dan pengiriman!
Setelah satu item diproduksi, kami akan memasukkan catatan terkaitnya ke dalam item
meja. Perhatikan bahwa saat item diproduksi, item tersebut masih belum diberikan ke hadiah apa pun, jadi gift_id
atribut akan berisi nilai null hingga item dikaitkan dengan hadiah tertentu. Kami juga perlu menyimpan jenis barang yang diproduksi (item_type_id
), serta quantity
. Meskipun kuantitas item sebagian besar akan menjadi 1, kita dapat mengharapkan kuantitas yang berbeda dalam beberapa kasus khusus (misalnya, lebih dari 1 item digabungkan menjadi satu set—ini sangat tidak biasa tetapi tetap memungkinkan).
Selanjutnya, kami akan menggabungkan satu atau beberapa item untuk menghasilkan gift
. Kami akan memperbarui item.gift_id
setelah kami mengemas barang-barang pilihan kami ke dalam hadiah itu. Setiap hadiah akan dikirimkan ke orang yang terkait (person_id
) dan akan memiliki status pelacakan (current_status_id
), serta stempel waktu saat Sinterklas berencana mengirimkan hadiah (delivery_time_planned
). Kami juga akan memperbarui nilai wish_list.gift_id
atribut untuk semua item yang berhasil dikirim.
Dua tabel terakhir dalam model data ini menyangkut pelacakan status pengiriman. Pertama, status
tabel berisi status_name
yang unik nilai yang akan kita gunakan saat mereferensikan status gft saat ini (gift.current_status_id
). Selain itu, status_history
table akan menyimpan daftar semua status untuk semua hadiah di database kami, serta stempel waktu semua pembaruan status (ts).
Mudah-mudahan, model data kami akan membantu Sinterklas menyelesaikan tahun pengiriman yang sukses lagi sehingga kami semua dapat menerima hadiah kami tepat waktu. Jika Anda ingin SQL bertema Natal lainnya, Vertabelo Academy telah menyiapkan tantangan liburan 24 kueri khusus. Silakan dan periksa! Atas nama keluarga Vertabelo, kami berharap Natal Anda menyenangkan!