Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

program database reservasi janji dokter java (mysql)..mengalami kesulitan merancang skema janji

Tanggal-Waktu Adalah Satu Nilai

Nilai tanggal-waktu hampir selalu dilacak dalam perangkat lunak sebagai nilai tunggal. Secara teknis mereka diwakili secara internal sebagai hitungan detik/milidetik/mikrodetik/nanodetik sejak Epoch .

Anda mungkin ingin menampilkan tanggal dan waktu secara terpisah di antarmuka pengguna, tetapi tidak secara internal.

Juga, Anda hampir pasti harus memikirkan zona waktu. Pemrogram yang naif sering berpikir bahwa mereka dapat mengabaikan zona waktu, tetapi hal itu hampir pasti akan menyebabkan penderitaan di kemudian hari.

Pahami Penanganan Tanggal-Waktu Database Anda

Basis data yang berbeda menangani waktu-tanggal secara berbeda. Sangat penting bagi Anda untuk membaca dokumen, bermain-main, bereksperimen, dan mempelajari cara kerja database Anda.

Postgres memiliki penanganan tanggal-waktu yang sangat baik dan masuk akal. Bahkan jika Anda menggunakan database lain, lihat dokumentasi Postgres yang sangat baik pada tanggal- tipe data waktu dan fungsi tanggal-waktu (perintah) untuk mempelajari tentang berbagai masalah dan tentang apa yang didefinisikan oleh standar SQL versus khusus untuk database Anda.

Menyimpan Secara Global, Mempresentasikan Secara Lokal

Tanggal-Waktu adalah masalah yang sangat licin dan rumit. Salah satu kunci untuk mengatasi masalah adalah bekerja di UTC . Simpan nilai tanggal-waktu Anda dalam database (atau dalam file bersambung, atau komunikasi XML/JSON) di UTC. Tulis sebagian besar logika bisnis Anda dalam UTC, kecuali jika zona waktu lokal penting seperti mendefinisikan "awal hari baru".

Saat Anda mempresentasikan kepada pengguna, gunakan format ISO 8601 atau lokalkan ke zona waktu mereka sendiri (atau zona waktu yang mereka harapkan). Ini mengikuti ide dasar internasionalisasi/lokalisasi. Untuk nilai teks, Anda menggunakan string kunci tertentu dalam kode Anda. Setelah presentasi di antarmuka pengguna, Anda memetakan string internal tersebut ke nilai teks yang dilokalkan (diterjemahkan) untuk antarmuka pengguna. Beberapa dengan tanggal-waktu:UTC secara internal, zona waktu lokal di antarmuka pengguna.

Satu peringatan:Anda mungkin ingin juga menyimpan tanggal-waktu lokal demi sejarah. Aturan zona waktu sering berubah dan berubah-ubah karena politisi dan birokrat. Basis data zona waktu perangkat lunak Anda mungkin kedaluwarsa. Jadi, Anda mungkin ingin menyimpan apa yang Anda atau pengguna yakini sebagai tanggal-waktu tertentu lalu . Tapi jangan bergantung padanya; menentukan dan menyimpan nilai UTC.

Tip:Belajar berpikir dan membaca dalam waktu 24 jam. Hidup Anda sebagai programmer/debugger/sysadmin akan menjadi jauh lebih mudah dan tidak rawan kesalahan.

Joda-Time atau Java.time

Kelas java.util.Date dan .Calendar yang dibundel dengan Java terkenal merepotkan. Hindari mereka.

Alih-alih gunakan Joda-Time atau paket java.time yang baru dibangun ke dalam Java 8 (terinspirasi oleh Joda-Time, didefinisikan oleh JSR 310).

Kedua perpustakaan menggunakan format ISO 8601 sebagai default, baik untuk parsing dan menghasilkan string.

ISO 8601

ISO 8601 adalah standar yang masuk akal yang mendefinisikan bagaimana menyajikan nilai tanggal-waktu, zona waktu dan offset, durasi, dan periode dalam format tekstual yang spesifik dan tidak ambigu. Pelajari halaman Wikipedia yang ditulis dengan baik itu.

Perhatikan khususnya apa yang disebut standar Durations">Durations . Rentang waktu ditentukan dalam format ini:PnYnMnDTnHnMnS dimana P berarti "Periode", T memisahkan bagian tanggal dari bagian waktu, dan bagian opsional lainnya adalah angka + huruf. Janji temu setengah jam adalah PT30M . Ini mungkin berguna untuk Anda, seperti untuk bidang "period_" yang terlihat di ERD di bawah. Di Joda-Time, kelas Periode mewakili rentang waktu dengan melacak bulan, hari, jam, dll., dan mengetahui cara mengurai dan menghasilkan string dalam format ini.

Setengah Terbuka

Anda dapat memilih untuk menyimpan janji temu dengan salah satu dari dua cara. Salah satu caranya adalah mulai tanggal-waktu &durasi (90 menit, 20 menit, dll.). Cara lain adalah dengan merekam waktu mulai dan tanggal berhenti. Dalam hal ini, pendekatan yang biasa dan umumnya terbaik disebut "Setengah Terbuka". Ini berarti awalnya adalah inklusif sedangkan endingnya eksklusif .

Misalnya, janji temu satu jam pada jam tersebut akan berlangsung dari pukul 11:00 hingga 12:00, yang berarti "mulai pukul 11:00 dan berlangsung hingga, tetapi tidak termasuk, momen pertama pada jam berikutnya (siang)". Janji temu berikutnya akan berlangsung dari pukul 12:00 hingga 13:00.

Telusuri StackOverflow untuk "Setengah terbuka" untuk menemukan lebih banyak diskusi dan contoh serta diagram.

Banyak-Ke-Banyak

Hubungan antara Pasien dan Dokter adalah apa yang kami sebut Banyak-Untuk-Banyak . Seorang dokter melihat banyak pasien, dan seorang pasien mungkin melihat lebih dari satu dokter. Pastikan Anda mengetahui tentang tabel Many-To-Many dalam desain database relasional. Solusinya adalah selalu menambahkan tabel ketiga, terkadang disebut tabel "jembatan" yang berfungsi sebagai tabel anak untuk kedua tabel induk lainnya. Dalam kasus Anda, Penunjukan tabel adalah tabel jembatan.

Anda perlu mengetahui cara melakukan penggabungan dalam hubungan banyak-ke-banyak.

SQL Langsung

Jika Anda baru mengenal pemrograman atau baru mengenal basis data relasional, saya sarankan untuk menghindari Hibernate. Anda benar-benar harus memahami apa yang sedang terjadi. Hibernate memiliki beberapa kegunaan yang sesuai. Tetapi jika menurut Anda Hibernate akan secara ajaib membuat masalah database hilang, Anda akan kecewa.

Atribut

Atribut terserah Anda. Mereka bergantung pada masalah bisnis (atau pekerjaan rumah?) yang Anda coba selesaikan. Anda memiliki dasar-dasar yang benar.

Penjadwalan janji adalah masalah bisnis yang sangat sulit untuk menulis perangkat lunak. Misalnya, apakah Anda hanya merekam janji temu yang dibuat? Atau apakah Anda melacak ketersediaan dokter, dengan membuat slot waktu yang telah ditentukan, dan jika demikian, bagaimana Anda menangani pengecualian dan perubahan pada kalender setiap dokter? Anda perlu menulis persyaratan dan kasus penggunaan yang sangat spesifik. Sangat mudah bagi harapan pengguna untuk melebihi persyaratan yang Anda harapkan.

Berikut tampilan sederhananya.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Laravel menyisipkan ke 3 tabel terkait

  2. Perbedaan waktu yang diperlukan untuk memasukkan catatan InnoDB/MyISAM

  3. Cara memilih kolom untuk tabel INNER JOIN tergantung pada nilai array yang digabungkan

  4. Masalah menggunakan MS Access sebagai front-end ke back-end database MySQL?

  5. Menjalankan file MySQL *.sql di PHP