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

Desain optimal untuk Database dengan acara berulang

Saya hanya akan membuat entri untuk setiap pengulangan acara, ke beberapa cakrawala. Namun, itu berarti Anda memerlukan tabel lain yang dapat Anda gunakan untuk memproyeksikan tanggal jika mereka memindai melewati tanggal cakrawala Anda. Yaitu, Anda memerlukan tabel peristiwa yang berisi satu rekaman untuk setiap kemunculan peristiwa berulang (1 Januari, 8 Januari, 15 Januari, ... hingga Desember), dan tabel dengan setiap rekaman yang tersedia untuk benih tahun depan (mulai tanggal:1 Jan; ulangi:7; hingga:2011) sehingga pada awal 2012 (atau segera setelah pengguna meminta tampilan bulan 2012+), Anda dapat membuat acara mendatang.

Ini memiliki dua kelemahan besar:

  1. Database Anda memiliki data selama setahun penuh. Namun, jika menambahkan data satu tahun penuh merusak kinerja Anda, sistem Anda mungkin kurang bertenaga. (Tampaknya merupakan persyaratan bahwa aplikasi kalender dapat menangani tanggal selama bertahun-tahun)
  2. Di akhir cakrawala peristiwa, Anda perlu membuat tanggal mendatang untuk acara rutin.

Keuntungan (IMO) yang lebih besar daripada kerugiannya:

  1. Matematika lebih mudah saat menampilkan kalender. Menggunakan metode Tim di atas, jika pengguna memuat 18 Des 2011, bagaimana Anda akan menghitung acara berulang mana yang harus ditempatkan pada hari itu? Anda akan dipaksa untuk mengulang SETIAP acara berulang setiap kali Anda menampilkan tanggal. Pengorbanannya adalah kerugian #1, yang menurut saya merupakan solusi yang lebih baik daripada harus mengulang perhitungan ini.
  2. Anda dapat mengedit kejadian tertentu dari suatu peristiwa. Menggunakan metode Tim, jika pertemuan terjadi pada hari libur dan pengguna mengubahnya ke hari sebelumnya, bagaimana Anda akan melakukannya? Dengan menggunakan metode satu entri per acara yang dijelaskan di sini, Anda cukup memodifikasi catatan untuk acara tersebut, dengan mudah memindahkan satu kejadian di kalender.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. cara menggabungkan tabel dengan hubungan 1 ke banyak menjadi 1 baris record

  2. Apakah fungsi MySQL TRIM tidak memangkas jeda baris atau carriage return?

  3. Cara menghapus Mysql Shell di MacOS

  4. kesalahan bind_param - Jumlah elemen dalam string definisi tipe tidak cocok dengan jumlah variabel pengikatan

  5. Cara menggunakan 'memiliki' dengan paginate pada kolom hubungan di laravel 5