Bitemporal Conceptual Data Model (BCDM)
BCDM bertujuan menangkap semantik esensial dari relasi time-varying (bitemporal) — model ini bukan dimaksudkan untuk presentasi, penyimpanan, atau evaluasi query secara langsung. Oleh karena itu BCDM adalah model konseptual, bukan model representasional (fisik).
- Conceptual (semantics) model vs representational (physical, performance-relevant) model — dibahas lebih lanjut di Representational Model of BCDM.
- BCDM ditekankan penggunaannya untuk desain basis data dan sebagai basis bahasa query.
Karakteristik BCDM
- Mendukung valid time dan transaction time sekaligus (bitemporal).
- Kedua domain waktu bersifat linear dan diskret:
- Domain valid-time:
- Domain transaction-time: — dengan UC (Until Changed) sebagai penanda bahwa fakta masih current (belum di-update/dihapus).
- Model bersifat point-based (tidak dapat menangkap semantik period-based secara langsung — lihat Temporal Database Introduction untuk perbandingan point-based vs period-based).
Bitemporal chronon adalah pasangan chronon transaction-time dan valid-time: . Bitemporal element adalah himpunan bitemporal chronon.
Timestamping pada BCDM bersifat tuple-timestamping: setiap tuple memiliki satu atribut timestamp yang domainnya adalah himpunan bitemporal element.
Skema dan Tuple BCDM
Diberikan atribut eksplisit (non-timestamp) :
Aturan penting: tuple value-equivalent (memiliki nilai atribut eksplisit yang identik) tidak diperbolehkan ada lebih dari satu dalam relasi BCDM. Konsekuensinya: seluruh histori sebuah fakta terkandung dalam satu tuple.
Contoh: Informasi Pegawai/Departemen
Misal pegawai Jake dipekerjakan di departemen shipping (Ship) dari valid time 10 hingga 15, dan fakta ini menjadi current di basis data pada transaction time 5. Sebelum ada penghapusan, transaction-time-nya masih UC:
Emp Dept T
Jake Ship {(UC,10), ..., (UC,15)}
Ketika terjadi koreksi (mis. departemen personalia menemukan bahwa Jake sebenarnya dipekerjakan dari valid time 5 hingga 20, dikoreksi mulai transaction time 10; lalu dikoreksi lagi kembali ke versi awal pada transaction time 15), bitemporal element pada tuple tersebut akan terus bertambah mencerminkan semua koreksi yang tercatat — direpresentasikan secara visual sebagai region pada bidang VT×TT.
Ketika Jake dipindahkan ke departemen Load (fakta lama (Jake,Ship) dihapus secara logis dari state current, fakta baru (Jake,Load) disisipkan) dan pegawai baru Kate dipekerjakan di Ship, relasi bitemporal pada transaction time 20 berisi tiga fakta:
Emp Dept T
Jake Ship {(5,10), ..., (5,15), (9,10), ..., (9,15), (10,5), ..., (10,20),
(14,5), ..., (14,20), (15,10), ..., (15,15), (19,10), ..., (19,15)}
Jake Load {(UC,10), ..., (UC,15)}
Kate Ship {(UC,25), ..., (UC,30)}
Diagram berikut mengilustrasikan region bitemporal (pada bidang VT×TT) dari ketiga fakta di atas:

Update dalam BCDM
Tiga jenis operasi update: insert, update (ts_update), dan delete.
- Insert: mencatat fakta yang belum tercatat sebagai current di relasi . Tiga kasus:
- Jika belum pernah tercatat sama sekali → tuple baru disisipkan.
- Jika pernah menjadi bagian dari state current sebelumnya (tapi sudah dihapus) → tuple yang mencatatnya di-update (ditambahkan bitemporal chronon baru).
- Jika sudah current saat ini → tidak perlu modifikasi (insersi ditolak).
- ts_update: rutin khusus untuk menambahkan chronon baru seiring berjalannya waktu (clock tick) — diterapkan ke semua relasi bitemporal pada setiap detak waktu. Setiap bitemporal chronon dengan transaction time
UCmenghasilkan chronon tambahan denganUCdiganti nilai transaction time saat ini:
ts_update(r, c_t):
for each x in r
for each (UC, c_v) in x[T]
x[T] <- x[T] ∪ {(c_t, c_v)}
- Delete: penghapusan logis dari state valid-time current — menghapus semua chronon dari timestamp tuple. Timestamp tidak lagi diperluas oleh
ts_updateselanjutnya, sehingga tuple tidak lagi muncul di state valid-time masa depan.
dengan .
- Modify: modifikasi tuple current, didefinisikan sebagai kombinasi delete lalu insert:
BCDM Pro dan Kontra
Kelebihan:
- Karena tuple value-equivalent tidak diperbolehkan, seluruh histori sebuah fakta terkandung dalam tepat satu tuple.
- Relasi yang berbeda secara sintaksis pasti memiliki isi informasi berbeda, dan sebaliknya.
Kekurangan:
- Representasi internal dan tampilan ke pengguna kurang baik untuk informasi temporal.
- Timestamp tuple yang panjangnya bervariasi dan voluminous sulit dikelola secara langsung.
- Nilai timestamp sulit dipahami dalam format BCDM mentah (himpunan chronon individual).
Karena kekurangan ini, dibutuhkan model representasional yang lebih praktis untuk implementasi — lihat Representational Model of BCDM.
Aljabar Relasional untuk BCDM
Aljabar relasional untuk BCDM menyediakan bahasa operasional bagi struktur data BCDM, dengan operator standar yang diperluas:
Temporal Projection
Memproyeksikan relasi dengan atribut non-timestamp ke subset atribut . Perhitungan timestamp hasil harus memenuhi dua aturan: semua chronon dari tuple value-equivalent di harus disertakan, dan tidak ada chronon spurious (tambahan tak-sah) yang muncul:
Temporal Selection
Memilih tuple dari yang memenuhi predikat pada atribut non-timestamp:
Temporal Union
Menggabungkan tuple dari dua relasi dengan skema yang kompatibel. Klausa pertama menangani tuple value-equivalent di kedua relasi (timestamp digabung dengan union); klausa kedua/ketiga menangani tuple yang hanya ada di salah satu relasi:
Temporal Difference
Menghitung tuple yang ada di tetapi tidak ada di . Timestamp hasil dihitung dari set difference bitemporal element, bergantung apakah ditemukan tuple value-equivalent di atau tidak:
Temporal Join
Dua tuple bergabung bila cocok pada atribut join dan memiliki timestamp bitemporal-element yang overlap. Timestamp hasil adalah irisan timestamp kedua tuple argumen:
Contoh: join relasi dept (siapa bekerja di departemen mana) dengan relasi mgr (siapa manajer tiap departemen) menghasilkan relasi “siapa dikelola oleh siapa”, dengan timestamp hasil berupa overlap region kedua tuple sumber (dapat divisualisasikan sebagai irisan dua region VT×TT).
Timeslice Operators
- Transaction-timeslice : memilih relasi pada transaction time (tidak melebihi waktu sekarang), mengembalikan relasi valid-time (menghilangkan dimensi transaction time).
- Valid-timeslice : memilih relasi pada valid time , mengembalikan relasi transaction-time.
Operator ini analog dengan operator timeslice pada basis data temporal biasa, memungkinkan “memotong” relasi bitemporal menjadi snapshot pada satu titik di salah satu dimensi waktu.
Sumber
- C. S. Jensen, M. D. Soo, R. T. Snodgrass: “Unifying temporal data models via a conceptual model”, Information Systems, vol. 19, no. 7, 1994.
- J. Gamper: “Chapter 4: Relational Algebra for Bitemporal Relations”, TSDB course materials, Free University of Bozen, 2012.
Flashcard
flashcards Apa tujuan utama BCDM dan mengapa disebut model konseptual? :: Menangkap semantik esensial relasi time-varying; disebut konseptual karena tidak dimaksudkan untuk presentasi/penyimpanan/evaluasi query langsung, melainkan basis desain dan bahasa query. Apa itu bitemporal chronon dan bitemporal element? :: Bitemporal chronon = pasangan (tt, vt) satu chronon transaction-time dan satu chronon valid-time; bitemporal element = himpunan bitemporal chronon. Apa arti UC (Until Changed) pada domain transaction-time BCDM? :: Penanda bahwa fakta tersebut masih current (belum diubah/dihapus) di basis data. Kenapa BCDM tidak mengizinkan tuple value-equivalent lebih dari satu dalam relasi? :: Agar seluruh histori satu fakta terkandung dalam tepat satu tuple, sehingga relasi yang berbeda secara sintaksis pasti berbeda informasinya (dan sebaliknya). Bagaimana operasi delete didefinisikan secara logis dalam BCDM? :: Menghapus semua chronon (UC, cv) dari timestamp tuple, sehingga timestamp tidak lagi diperluas oleh ts_update berikutnya (tuple tidak muncul di state valid-time masa depan). Bagaimana operasi modify didefinisikan dalam BCDM? :: Sebagai kombinasi delete kemudian insert: modify(r, fakta, tv) = insert(delete(r, fakta), fakta, tv). Sebutkan dua kelemahan utama BCDM sebagai model praktis :: Representasi internal/tampilan kurang baik, dan timestamp tuple yang panjangnya bervariasi/voluminous sulit dikelola serta sulit dipahami pengguna. Bagaimana timestamp hasil dihitung pada temporal join BCDM? :: Sebagai irisan (intersection) dari timestamp bitemporal-element kedua tuple argumen yang cocok pada atribut join dan saling overlap. Apa perbedaan transaction-timeslice dan valid-timeslice pada BCDM? :: Transaction-timeslice memilih relasi pada suatu transaction time tertentu (hasil = relasi valid-time); valid-timeslice memilih relasi pada suatu valid time tertentu (hasil = relasi transaction-time).