GIẢI QUYẾT VẤN ĐỀ THÒI GIAN BẤT ĐỊNH TRONG CƠ SỞ DỮ DIỆU HƯỚNG THỜI GIAN ỨNG DỤNG VÀO TRONG CƠ SỞ DỮ LIỆU BỆNH VIỆN

125 388 0
GIẢI QUYẾT VẤN ĐỀ THÒI GIAN BẤT ĐỊNH TRONG CƠ SỞ DỮ DIỆU HƯỚNG THỜI GIAN ỨNG DỤNG VÀO TRONG CƠ SỞ DỮ LIỆU BỆNH VIỆN

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH Chuyên ngành : Mã số ngành : Công nghệ thông tin 01.0.2.10 TP HỒ CHÍ MINH, Tháng năm 2005 i Trước tiên xin chân thành gửi lời cảm ơn đến thầy cô khoa khoa CNTT trường Đại học Bách Khoa TP.HCM phòng Đạo tạo sau đại học thời gian qua giúp đỡ hoàn thành khóa học thạc sĩ Đặc biệt xin chân thành gửi lời cảm ơn sâu sắc đến thầy Dương Tuấn Anh, người vừa truyền đạt kiến thức lớp đồng thời vừa người hướng dẫn trực tiếp hoàn thành luận văn Nếu tài liệu quý tận tình hướng dẫn thầy có lẽ luận văn không đạt kết ngày hôm Vì luận văn hoàn thành thời gian hạn hẹp nên không tránh khỏi thiếu sót, mong góp ý thầy cô bạn Học viên Lê Văn Quốc Anh ii A temporal database provides the ability to keep track of the values of attributes as they evolve over time as well as to store the history of updates made to the database With the term “valid-time indeterminacy” we mean that an event stored in a database did in fact occur, but we don’t know exactly when the event occurred The temporal databases that support storing and retrieving this kind of events are called temporal databases with indeterminacy In order to deal with valid-time indeterminacy, this thesis has to solve three tasks Firstly, it extends the data model to support indeterminacy Secondly, it develops the temporal query language that supports user’s indeterminate query This temporal query language is called SubTSQL Finally, the layer is built to process temporal queries in SubTSQL and execute them on Oracle DBMS This layer has to convert SubTSQL statements into equivalent SQL-92 commands iii Cơ sở liệu hướng thời gian hỗ trợ khả lưu vết thay đổi giá trị thuộc tính tương ứng với biến động giá trị theo thời gian, lưu vết lần cập nhật liệu sở liệu Sự bất định thời gian hiểu kiện lưu trữ sở liệu biết xảy ra, cụ thể xảy lúc ta chắn Cơ sở liệu hướng thời gian hỗ trợ việc xử lý liệu dạng gọi sở liệu hướng thời gian hỗ trợ thời gian bất định Để giải bất định thời gian sở liệu hướng thời gian, luận văn chia làm ba công việc Thứ nhất, ta mở rộng mô hình sở liệu để hỗ trợ yếu tố bất định thời gian Thứ hai, ta xây dựng cú pháp ngôn ngữ truy vấn hỗ trợ việc truy vấn liệu có yếu tố thời gian bất định Ngôn ngữ có tên SubTSQL Cuối cùng, ta thiết kế layer hỗ trợ việc xử lý câu lệnh ngôn ngữ truy vấn SubTSQL thực thi Oracle DBMS Layer phải thực việc chuyển đổi câu lệnh SubTSQL thành câu SQL-92 tương đương iv DANH MỤC HÌNH viii DANH MỤC BẢNG ix CHƯƠNG 1: MỞ ĐẦU   ✁   ✁ ✁ ✂   ✁ ✠     ✁ ✁ ✜ ✄ ✆ ✝ ✄ ✞ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ☛ ☞ ✌ ✍ ✢ ✝ ✣ ✆ ✮ ✚ ✍ ✚ ✟ ✍ ✝ ✤ ✄ ✝ ✎ ✆ ☞ ✏ ✑ ✒ ✄ ✞ ☞ ✓ ✔ ✑ ✒ ✕ ✖ ✗ ✎ ✟ ✆ ✥ ✍ ☞ ✝ ✎ ☞ ✏ ✑ ☞ ✦ ☞ ☞ ✧ ✍ ✤ ✆ ★ ✩ ✍ ✘ ✝ ✙ ✪ ✁ ✶ ✓ ✯ ✰ ✕ ✪ ✟ ✱ ✍ ✒ ✲ ✍ ✳ ✴ ✤ ✁ ✁ ✷ ✆ ★ ✸ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁   ✟ ✚ ✆ ✓ ✛ ✍ ☞ ☞ ✏ ✑ ✪ ✟ ✱ ✍ ✒ ✲ ✄ ✁ ✁ ✵ ✁ ✄ ✁ ✁ ✬ ✁ ✁ ✟ ✁ ✁ ✗ ✁ ✁ ✎ ✁ ✁ ✁ ✄ ✫ ✍ ✬ ✟ ✁   ✝ ✁ ✭ ✁ ☎ ✁ ✡   ✄ ✑ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✠ ✍ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✜ ✆ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✜ ✍ CHƯƠNG 2: MỘT SỐ KHÁI NIỆM CƠ BẢN ✠ ✠ ✠ ✁ ✁ ✁   ✠ ✁ ✁ ✹ ✧ ✹ ✾ ✝ ✜ ✆ ✝ ☞ ✺ ✳ ✻ ✼ ✣ ✪ ✄ ✞ ✟ ✝ ✔ ☎ ✍ ✤ ✆ ✝ ✽ ✄ ✤ ✄ ✑ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✳ ✘ ✿ ✝ ✦ ✄ ✍ ✄ ✞ ✰ ❀ ✆ ✝ ✟ ✱ ✆ ✍ ✤ ✣ ✆ ★ ✖ ✍ ✤ ☞ ✺ ✳ ✁ ✦ ☞ ❂ ✭ ✝ ❃ ❂ ✆ ✖ ✦ ✍ ✆ ★ ✫ ✍ ✿ ✝ ✖ ✵ ✍ ✤ ✆ ✝ ✽ ✄ ✤ ✄ ✑ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✶ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ❁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ❁ ✍ ✁ 2.3.1 2.3.2 2.3.3 2.3.4 ✁ ✍ ✁ ✷ ✠ ✩ ✁ ✻ ✁ ✼ ✁ ✁ ✁ ✁ ✣ ✁ ✁ ✪ ✁ ✁ ✁ ✄ ✁ ✞ ✁ ✁ ✟ ✁ ✝ ✁ ✁ ✁ ✁ ✔ ✁ ☎ ✁ ✁ ✁ ✍ ✁ ✁ ✤ ✁ ✁ ✆ ✁ ✁ ✁ ✝ ✁ ✽ ✁ ✁ ✁ ✄ ✁ ✁ ✤ ✁ ✁ ✄ ✁ ✁ ✑ ✁ ✍ ✁ ✁ ✁ ✁ ✁ ✍ Khái niệm thời điểm khoảng Các phép so sánh khoảng: Các phép toán ghép tách khoảng Đại số quan hệ thời gian 10 ✁ ✁ ✹ ✻ ★ 2.4.1 2.4.2 2.4.3 2.4.4 ✾ ✍ ✤ ✰ ✧ ✝ ✩ ✍ ✝ ☞ ✺ ✳ ✻ ✼ ✣ ✪ ✄ ✞ ✟ ✝ ✔ ☎ ✍ ✤ ✆ ✝ ✽ ✄ ✤ ✄ ✑ ✍ ✒ ☎ ✄ ✆ ✝ ✽ ✄ ✤ ✄ ✑ ✍ ✙ ✚ ✆ ✓ ✛ ✍ ✁ ✁ ✁ ✁     ✝ Các khái niệm 11 Mô hình đường thời gian 12 Thời điểm bất định 12 Đoạn thời gian bất định khoảng thời gian bất định (Indeterminate period and indeterminate interval) 13 Mở rộng cú pháp cho ngôn ngữ truy vấn SQL 13 2.4.5 CHƯƠNG 3: CÁC NGHIÊN CỨU CÓ LIÊN QUAN 15 ✜ ✁   ✁ ✷ ✧ ✍ ✁ ✤ ✆ ★ ✩ ✍ ✝ ❄ ❅ ❆ ✆ ★ ❇ ✳ ☛ ✙ ✚ ✆ ● ✓ ✛ ✍ ✝ ✼ ✣ ✪ ✄ ✞ ✟ ✆ ✝ ✽ ✄ ✤ ✄ ✑ ✍ ✒ ✑ ✪ ✄ ✼ ❈ ✆ ✄ ✰ ❉ ❊ ☞ ✏ ✑ ✷ ✟ ★ ✆ ✄ ✳ ✁ ❋ ✗ ★ ❉ ✳ ✖ ✍ ✒ ✕ ◆ ✁ ✟ ❉ ❉ 3.1.1 3.1.2 3.1.4 ✁ ✠ ✳ ✪ ✑ ✍ ✁ ✁ ✁ ✁ ✁ ✁ ☞ ✁ ✝ ✁ ✁ ✑ ✁ ✁ ★ ✁ ✁ ✼ ✁ ✁ ■ ✁ ✁ ✡ ✁ ✁ ✁ ✁ ✁ ✁ ✍ ✁ ✁ ✖ ✁ ✁ ✼ ✁ ✁ ✤ ✁ ✁ ✁ ★ ✁ ✁ ✑ ✁ ✳ ✁ ✁ ✳ ✁ ❏ ✁ ✁ ✁ ❑ ✁ ✁ ✥ ✁ ✁ ✁ ✁ ✄ ✁ ✁ ✝ ✁ ✁ ▲ ✁ ✁ ✁ ☞ ✁ ✁ ▼ ✁ ✑ ✁ ✁ ✁ ✰ ✁ ✁ ❉ ✁ ✁ ✁ ✁ ✳ ✁ ✷ ✁ ✁ ✁ ✖ ✁ ✁ ✁ ✖ ✁ ✁ ✿ ✁ ❀ ✁ ✁ ✁ ✢ ✁ ✁ ✖ ✁ ✁ ✁ ★ ✁ ✁ ✆ ✁ ✁ ✝ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁   ✶ ✼ ✁ ◆ ✢ ✤ ❖ ★ ✧ ✍ ✍ ✤ ✣ ■ ✟ ❉ ✁ 3.2.1 3.2.2 ✄ Các khái niệm liên quan đến vấn đề thời gian bất định 15 Xây dựng mô hình sở liệu hướng thời gian hỗ trợ thời gian bất định cách mở rộng mô hình sở liệu truyền thống 15 Mở rộng cú pháp câu lệnh SQL cho phép thao tác liệu có yếu tố thời gian sở liệu hướng thời gian 16 Ý tưởng thực 20 3.1.3 ✜ ✍ ❍ ✄ € ✖ ✍ ✑ ❀ ◗ ✡ ✁ ✪ ✁ ✁ ☞ ✁ ✁ ✏ ✁ ✁ ✑ ✁ ✁ ✆ ✁ ✁ ✁ ✦ ✁ ☞ ✁ ✁ ✤ ✁ ✁ ✁ ✄ ✁ ✁ ✵ ✁ ❍ ✁ ✁ ✁ ✄ ✁ ✁ ✁ ☞ ✁ ✝ ✁ ✁ ✑ ✁ ✁ ★ ✁ ✁ ✼ ✁ ✁ ✡ ✁ ✁ ✁ ✍ ✁ ✁ ✖ ✁ ✁ ✁ ✼ ✁ ✁ ✤ ✁ ✁ ★ ✁ ✁ ✑ ✁ ✁ ✳ ✁ ✁ ✳ ✁ ❏ ✁ ✁ ❑ ✁ ✁ ✁ ✥ ✁ ✁ ✁ ✁ ✄ ✁ ✝ ✁ ✁ ✁ ▲ ✁ ✁ ☞ ✁ ✁ ❖ ✁ ✁ ★ ✁ ✁ ✁ ✁ ✄ ✁ € ✁ ✖ ✁ ✁ ✍ ✁ ✁ ✑ ✁ ✁ ❀ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✠   ❖ Mô hình liệu 21 Câu truy vấn thông tin yếu tố thời gian 22 v 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 ✜ ✁ ✜ Câu truy vấn thông tin có yếu tố thời gian 23 Rút trích Valid-time 23 Chiếu lên Valid-time 24 Các hàm tổng kết 24 Hỗ trợ bất định Valid-time 25 ✁ ✷ ✆ ✧ ✝ ✍ ✤ ✽ ✆ ✄ ✤ ★ ✄ ✩ ✑ ✍ ✝ ❄ ✍ ❏ ❅ ✄ ✞ ✍ ✁ ✍ ✆ ✤ ✝ ✼ ☛ ☞ ✍ ✂ ✆ ✤ ✄ ✒ ✟   ✕ ✍ ✖ ☞ ✤ ✧ ✺ ✳ ✍ ✍ ✻ ✤ ✼ ✣ ✣ ✆ ✪ ✄ ★ ✞ ✟ ✗ ✟ ✒ ✙ ✚ ✞ ✍ ✍ ☞ ✝ ✝ ✒ ✄ ✖ ✞ ☞ ✍ ✺ ❊ ✳ ❏ ✻ ✼ ✢ ✣ ✷ ✪ ✡ ✄ ✞ ✟ ✝ ✄ ✝ ✥ ✔ ✰ ☎ ✍ ✮ ✲ ✁ ✷ ✝ ✟ 3.3.1 3.3.2 3.3.3 ✍ ✤ ❏ ✝ ☎ ✖ ✑ ✷ ✧ ✍ ✤ ✢ ✤ ✝ ✞ ■ ✝ ✧ ✍ ✤ ■ ✄ ✍ ❀ ❑ ✥ ✄ ✝ ▲ ☞ ✦ ✆ ☞ ✝ ✝ ☎ ✖ ✑ ■ ✤ ✍ ✭ ❅ ✄ ✷ ✹ ✁ ✞ ✁ ✁ ✠ ✶ ✝ Mô hình liệu cho ứng dụng sở liệu bệnh viện 26 Định nghĩa tiểu ngôn ngữ SubTSQL 27 Xây dựng Layer 27 CHƯƠNG 4: GIẢI QUYẾT VẤN ĐỀ THỜI GIAN BẤT ĐỊNH .30 ✭ ✁   ✁ ✟ ✗ ✠ ✼ ☛ ✍ ✤ ✰ ✧ ✝ ✩ ✍ ✝ ☞ ✺ ✳ ✻ ✼ ✣ ✪ ✁ ☞ ✭ ✁ ✠ ✝ ✖ ☞ ✺ ✳ ✻ ✼ ✣ ✪ ✄ ✞ ✟ ✙ ✞ ✍ ✝ ✒ ✄ ✞ ✁ ✄ ✁ ✞ ✁ ✟ ✁ ✁ ✝ ✁ ✁ ✁ ✔ ✁ ✁ ☎ ✁ ✁ ✁ ✍ ✁ ✁ ✤ ✁ ✁ ✁ ✆ ✁ ✁ ✝ ✁ ✁ ✽ ✁ ✄ ✁ ✁ ✤ ✁ ✁ ✁ ✄ ✁ ✑ ✁ ✁ ✍ ✁ ✁ ✝ ✁ ✁ ✁ ✁ ❆ ✁ ✆ ✁ ✁ ✁ ✁ ★ ✁ ❇ ✁ ✁ ✻ ★ ✾ ✍ ✤ ✆ ✄ ✟   ✍ ✤ ✧ ✍ ✍ ✤ ✣ ✆ ★ ✟ ✗ ✒ ✚ ✍ ☞ ✺ ✳ ✻ ✼ ✣ ✪ ✄ ✞ ✟ ✝ ✔ ☎ ✍ ✤ ✆ ✁ ✁ ✁ ✁ ✝ ✁ ✆ ✝ ☛ ☞ ✝ ✁ ✽ ✁ ✁ ✁ ✁ ✁ ✁ ✄ ✁ ✁ ✁ ✁ ✤ ✁ ✄ ✁ ✁ ✁ ✁ ✑ ✁ ✁ ✁ ✁ ✁ ✁ ✍ ✁ ✁ ✁ ✁ ✙ ✁ ✁ ✁ ✁ ✚ ✁ ✁ ✁ ✁ ✁ ✁ ✆ ✁ ✁ ✁ ✁ ✓ ✁ ✛ ✁ ✁ ✁ ✁ ✁ ✍ ✝ ✁ ✁ ✁ ✁ ✜ ✡ ✜ ✝ ✄ ✞ ✍ ✆ ★ ✟ ✗ ✒ ✚ ✍ ✆ ★ ✫ ✍ ✼ ✣ ✪ ✄ ✞ ✟ ✒ ☎ ✄ ✆ ✝ ✽ ✄ ✤ ✄ ✑ ✍ ✙ ✚ ✆ ✓ ✛ ✍ ✽ ✄ ✁ ✤ ✄ ✑ ✁ ✍ ☞ ✝ ✖ ❂ ✝ ✁ ❃ ✁ ✁ ✁ ✁ ✜   ❂ ✁ ✝ Hệ số tin cậy (Confidence factor): δ 31 Mức độ hỗ trợ thứ tự (Ordering Plausibility): γ 31 4.2.1 4.2.2 ✁ ✁ ✁ ✹ ✭ ✆ ✁ ✍ ✁ ◆ ■ ✝ ✄ ✎ ✆ ✿ ✎ ✑ ☛ ✗ ❉ ★ ☞ ✪ ✌ ✍ ✍ ✤ ✧ ✍ ✍ ✤ ✣ ✡ ✟ ✙ ■ ✁ ✡ ☞ ☛ ☞ ✎ ✸ ❂ ✝ ✦ ❂ ✰ ✻ ★ ✾ ✍ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✜ ✠ ✤ CHƯƠNG 5: NGÔN NGỮ SUBTSQL MỞ RỘNG VÀ HIỆN THỰC 34 ✶ ✁   ✁ ◆ ✷ ✸ ❂ 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 5.1.7 ✶ ✁ ✠ ✝ ✦ ❂ ✍ ✤ ✧ ✍ ✍ ✤ ✣ ✡ ✟ ✙ ■ ✁ ✡ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✜ ✭ ☛ Câu lệnh tạo bảng: CREATE 34 Câu lệnh thêm hàng vào bảng: INSERT 35 Câu lệnh truy vấn thông tin: SELECT 37 Câu lệnh xóa thông tin: DELETE 39 Câu lệnh cập nhật thông tin: UPDATE 41 Câu lệnh cập nhật giá trị mặc định hệ số tin cậy δ 43 Câu lệnh cập nhật giá trị mặc định mức độ hỗ trợ γ 43 ✁ ✁ ❅ ✄ ✞ ✍ 5.2.1 5.2.2 5.2.3 5.2.4 ✆ ✝ ☛ ☞ ✑ ☛ ✗ ❉ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✭ ✜ ★ Hiện thực hóa mức độ hỗ trợ γ - phép toán Before 43 Hiện thực hóa tham số độ tin cậy δ – phép toán Shrink 46 Hiện thực hóa hàm ghép FOLD khoảng thời gian 49 Xây dựng layer 50 CHƯƠNG 6: CÀI ĐẶT ỨNG DỤNG - CSDL BỆNH VIỆN .60 ❁ ❁ ✁ ✁   ✠ ✁ ■ ✝ ■ ✝ ✄ ✎ ✆ ✿ ✎ ☞ ✺ ✳ ✻ ✼ ✣ ✪ ✄ ✞ ✟ ✆ ✝ ❉ ✖ ✼ ✄ ✏ ✓ ✄ ✁ ✯ ✟ ✆ ★ ✛ ✙ ✞ ✍ ◆ ☛ 6.2.1 6.2.2 6.2.3 ☞ ✆ ✝ ✄ ✰ ✾ ✆ ✳ ✘ ☞ ✟ ✠ ✪ ✞ ✍ ✝ ✡ ✟ ✙ ■ ✝ ✁ ✡ ✒ ☛ ✼ ✑ ✁ ✍ ✁ ✁ ✁ ✁ ✝ ✁ ✁ ✍ ✠ ✁ ✁ ✁ ✁ ✻ ✁ ✁ ✁ ✙ ✁ ✁ ✁ ✞ ✁ ✁ ✁ ✍ ✁ ✁ ✝ ✁ ✁ ✒ ✁ ✁ ✁ ✄ ✁ ✁ ✞ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ❁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ❁ ✡ ✍ ✁ ✁ ✁ ✁ ✁ ✠ ✂ Câu lệnh CREATE TABLE, INSERT, DELETE, UPDATE 62 Câu lệnh SELECT 64 Sử dụng phép toán FOLD 72 CHƯƠNG 7: KẾT LUẬN 76 ✁   ✁ ✁ ✒ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ❁ ✒ ✷ ✦ ☞ ✿ ✎ ✆ ✬ ✟ ✵ ✓ ✓ ✓ ✥ ✆ ✓ ✔ ❇ ☞ vi ✁ ✠ ✁ ✁ ✒ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✁ ✒ ✄ ✝ ✔ ✺ ✍ ✤ ✝ ✔ ☎ ✍ ✤ ❂ ✝ ✦ ✆ ✆ ★ ✄   ✒ ✍ THƯ MỤC THAM KHẢO .78 PHỤ LỤC A: Các hàm so sánh thời gian nhúng vào DBMS A-1 PHỤ LỤC B: Phân tích từ vựng – SubTSQL.lex B-1 PHỤ LỤC C: Phân tích cú pháp – SubTSQL.Y C-1 BẢNG CÁC THUẬT NGỮ VIỆT-ANH D-1 vii DANH MỤC HÌNH Hình 1: Mối quan hệ thời điểm 18 Hình 2: Kiến trúc Layer 28 Hình 3: Ví dụ hàm khối xác suất với phân bố “xác suất sớm” 31 Hình 4: Lưu đồ thể trình xử lý câu lệnh SubTSQL .33 Hình 5: shrink_l(δ,(|1~20|,Uniform)) 47 Hình 6: Hàm khối xác suất Uniform 47 viii DANH MỤC BẢNG Bảng 1: Các phép so sánh khoảng Allen Bảng 2: Ý nghĩa tân từ so sánh khoảng Allen Bảng 3: Bảng giá trị Pr[ei ≤ ej] 18 Bảng 4: Thay thời điểm dựa hệ số tin cậy .20 Bảng 5: Bảng quan hệ Stocks hỗ trợ valid-time 22 Bảng 6: Bảng own hỗ trợ vừa valid-time vừa transaction-time 22 Bảng 7: Bảng Patient lưu trữ thông tin bệnh nhân bệnh lý 26 Bảng 8: Mô tả phép so sánh khoảng theo phép so sánh before, before_e, after, after_e, equal thời điểm 46 Bảng 9: Các hàm so sánh thời điểm xác định 51 Bảng 10: Các hàm so sánh thời điểm bất định 51 Bảng 11: Các hàm so sánh khoảng xác định 52 Bảng 12: Các hàm so sánh khoảng bất định 53 Bảng 13: Các hàm co thời điểm bất định 53 ix CHƯƠNG 1: MỞ ĐẦU Chương dẫn nhập lĩnh vực sở liệu hướng thời gian đưa cần thiết phải đưa vào yếu tố thời gian bất định Trong phần công trình liên quan điểm qua sơ lược kèm theo mặt hạn chế Từ đặt vấn đề giải luận văn 1.1 Giới thiệu Cơ sở liệu hướng thời gian nghiên cứu từ lâu có nhiều kết thành công Nhiều mô hình liệu thời gian ngôn ngữ truy vấn thời gian đưa mô hình áp dụng vào ứng dụng cụ thể Trong thực tế, nhiều lĩnh vực khác y học, kinh doanh, khoa học… yêu cầu lưu trữ liệu theo thời gian Một đối tượng thay đổi theo thời gian, người ta không quan tâm đến trạng thái mà quan tâm đến trạng thái thời điểm khứ Dữ liệu chứa thông tin gọi liệu có tính chất lịch sử Chẳng hạn kinh doanh, giá sản phẩm thay đổi, giá lưu trữ với thời điểm thay đổi giá hay khoảng thời gian giá có hiệu lực Với sở liệu hướng thời gian, người ta thực truy vấn với điều kiện chọn liên quan đến thời gian như: xét kiện khoảng thời gian đó, hay trước thời điểm, hay sau thời điểm…Các phép toán so sánh liên quan đến tính tương quan thuộc tính thời gian hỗ trợ Một số trường hợp, thực tế điều hay xảy ra, thời điểm xảy kiện không xác định rõ ràng mà nêu cách chung chung Ví dụ: bệnh nhân khai báo tuổi 30, cụ thể sinh vào ngày tháng năm không xác định; hay lần điều trị gần bệnh nhân “khoảng tháng năm 2003”, đoán khả bệnh nhân điều trị ngày 12,13,14,15,16,17 tháng 7, cụ thể ngày không xác định Đó số ví dụ vấn đề thời gian bất định Các hệ thống hỗ trợ định cần làm việc sở liệu hướng thời gian với thời gian bất định Việc truy vấn sở liệu hướng thời gian với thời gian bất định phải dựa độ tin cậy cung cấp, với độ tin cậy khác liệu trả câu truy vấn khác 1.2 Sự cần thiết việc đưa vào yếu tố bất định Như trình bày phần trên, nhiều ứng dụng sở liệu ngày cần xử lý liệu có liên quan đến thời gian bất định Yếu tố thời gian thông tin nhập vào sở liệu luôn tường minh, cụ thể, xác Nguyên nhân không xác trình bày chương luận văn Tuy nhiên thông tin không hữu dụng việc truy vấn Câu truy vấn có đưa vào yếu tố mức độ đáng tin hay độ tin cậy từ người sử dụng phải đưa kết hợp | CONNECT | SHOWDATE | SHOWDATE ON | SHOWDATE OFF { stmt_type=STMT_CONNECT; } { stmt_type=STMT_SHOWDATE; } { stmt_type=STMT_SHOWDATE; show_date=1; } { stmt_type=STMT_SHOWDATE; show_date=0; } //////////////////////////////////////////////////////////////////////// // SELECT STATEMENT /////////////////////////////////////////////////////////////////////// selectstmt : DETERMINATE select1 where1 when1 group1 having1 order1 { determinate_stmt=1; } | INDETERMINATE select1 where1 when1 group1 having1 order1 select1 : SELECT attributes_list FROM tables_list | SELECT FOLD attributes_list FROM tables_list : WHERE boolean_expression { fold_option=1; } where1 { whereExpr=(struct MyBoolExpression*)malloc(sizeof(struct MyBoolExpression)); *whereExpr=$2.expr; } | { whereExpr=NULL; } when1 { : WHEN time_expression whenExpr=(struct MyBoolExpression*)malloc(sizeof(struct MyBoolExpression)); *whenExpr=$2.expr; } 102 | { whenExpr=NULL; } group1 group_by_list : | : GROUP BY group_by_list group_attribute ',' group_by_list | group_attribute group_attribute : ID { add_GroupByList($1.stringval,""); }; | ID '.' ID { add_GroupByList($3.stringval,$1.stringval); }; having1 : HAVING boolean_expression { havingExpr=(struct MyBoolExpression*)malloc(sizeof(struct MyBoolExpression)); *havingExpr=$2.expr; } | { havingExpr=NULL; } order1 order_by_list : : ORDER BY order_by_list | order_attribute ',' order_by_list | order_attribute order_attribute : ID { add_OrderByList($1.stringval,""); }; | ID '.' ID { add_OrderByList($3.stringval,$1.stringval); }; attributes_list : attribute ',' attributes_list | attribute attribute : ID '.' ID { add_AttributesList($3.stringval,"",$1.stringval); #if SUBTSQL_DEBUG printf("attribute %d:%s %s\n",attributes_number,$3.stringval,$1.stringval); #endif }; 103 | ID '.' ID ID { add_AttributesList($3.stringval,$4.stringval,$1.stringval); #if SUBTSQL_DEBUG printf("attribute %d:%s %s\n",attributes_number,$3.stringval,$1.stringval); #endif }; | ID '.' '*' { add_AttributesList("*","",$1.stringval); printf("(%s)",$1.stringval); #if SUBTSQL_DEBUG printf("attribute %d:%s %s\n",attributes_number,$3.stringval,$1.stringval); #endif }; | ID { add_AttributesList($1.stringval,"",""); #if SUBTSQL_DEBUG printf("attribute %d:%s\n",attributes_number,$1.stringval); #endif }; | ID ID { add_AttributesList($1.stringval,$2.stringval,""); #if SUBTSQL_DEBUG printf("attribute %d:%s\n",attributes_number,$1.stringval); #endif }; | '*' { add_AttributesList("\*","",""); #if SUBTSQL_DEBUG printf("attribute %d:%s\n",attributes_number,$1.stringval); #endif }; | BEGIN '(' ID ')' { add_AttributesList("#BEGIN_FUNC#","BEGIN",$3.stringval); //Mark this atribute is Begin() function #if SUBTSQL_DEBUG printf("attribute %d:%s\n",attributes_number,$1.stringval); #endif }; | BEGIN '(' ID ')' ID { add_AttributesList("#BEGIN_FUNC#",$5.stringval,$3.stringval); #if SUBTSQL_DEBUG printf("attribute %d:%s\n",attributes_number,$1.stringval); #endif }; | END '(' ID ')' { add_AttributesList("#END_FUNC#","END",$3.stringval); }; 104 | END '(' ID ')' ID { add_AttributesList("#END_FUNC#",$5.stringval,$3.stringval); }; | VALID_TIME { add_AttributesList("#VALID_TIME#","",""); }; | ID '.' VALID_TIME { add_AttributesList("#VALID_TIME#","",$1.stringval); }; tables_list : table_item | table_item ',' tables_list table_item : table { set_Credibility(default_credibility); } | table WITH CREDIBILITY NUMBER { set_Credibility($4.intval); } table { : ID add_TablesList($1.stringval,"",default_credibility); } | ID ID { add_TablesList($1.stringval,$2.stringval,default_credibility); } //////////////////////////////////////////////////////////////////////////// ///////////// boolean_expression : bool_term { $$.expr=$1.expr; } | boolean_expression OR bool_term { $$.expr.left=(struct MyBoolExpression*)malloc(sizeof(struct MyBoolExpression)); $$.expr.right=(struct MyBoolExpression*)malloc(sizeof(struct MyBoolExpression)); *($$.expr.left)=$1.expr; *($$.expr.right)=$3.expr; $$.expr.op=BOOL_OR; //whereExpr=(struct MyBoolExpression*)malloc(sizeof(struct MyBoolExpression)); //*whereExpr=$$.expr; } bool_term : bool_fact 105 { $$.expr=$1.expr; } | bool_term AND bool_fact { $$.expr.left=(struct MyBoolExpression*)malloc(sizeof(struct MyBoolExpression)); $$.expr.right=(struct MyBoolExpression*)malloc(sizeof(struct MyBoolExpression)); *($$.expr.left)=$1.expr; *($$.expr.right)=$3.expr; $$.expr.op=BOOL_AND; } bool_fact { $$.expr=$1.expr; } : bool_prim | NOT bool_prim { $$.expr.right=(struct MyBoolExpression*)malloc(sizeof(struct MyBoolExpression)); $$.expr.left=NULL; *($$.expr.right)=$2.expr; $$.expr.op=BOOL_NOT; } bool_prim { $$.expr=$1.expr; } : predicate | '(' boolean_expression ')' { $$.expr.left=(struct MyBoolExpression*)malloc(sizeof(struct MyBoolExpression)); $$.expr.right=NULL; *($$.expr.left)=$2.expr; $$.expr.op=CAL_BRACKET; } predicate : expr RELOP expr { $$.expr.left=(struct MyBoolExpression*)malloc(sizeof(struct MyBoolExpression)); $$.expr.right=(struct MyBoolExpression*)malloc(sizeof(struct MyBoolExpression)); *($$.expr.left)=$1.expr; *($$.expr.right)=$3.expr; $$.expr.op=$2.numrel; } expr { : expr '+' term $$.expr.left=(struct MyBoolExpression*)malloc(sizeof(struct MyBoolExpression)); 106 $$.expr.right=(struct MyBoolExpression*)malloc(sizeof(struct MyBoolExpression)); *($$.expr.left)=$1.expr; *($$.expr.right)=$3.expr; $$.expr.op=CAL_ADD; } | expr '-' term { $$.expr.left=(struct MyBoolExpression*)malloc(sizeof(struct MyBoolExpression)); $$.expr.right=(struct MyBoolExpression*)malloc(sizeof(struct MyBoolExpression)); *($$.expr.left)=$1.expr; *($$.expr.right)=$3.expr; $$.expr.op=CAL_SUB; } | term { $$.expr=$1.expr; } term { : term '*' factor $$.expr.left=(struct MyBoolExpression*)malloc(sizeof(struct MyBoolExpression)); $$.expr.right=(struct MyBoolExpression*)malloc(sizeof(struct MyBoolExpression)); *($$.expr.left)=$1.expr; *($$.expr.right)=$3.expr; $$.expr.op=CAL_MUL; } | term '/' factor { $$.expr.left=(struct MyBoolExpression*)malloc(sizeof(struct MyBoolExpression)); $$.expr.right=(struct MyBoolExpression*)malloc(sizeof(struct MyBoolExpression)); *($$.expr.left)=$1.expr; *($$.expr.right)=$3.expr; $$.expr.op=CAL_DIV; } | factor { $$.expr=$1.expr; } factor { : prim | '-' prim $$.expr=$1.expr; } { $$.expr.right=(struct MyBoolExpression*)malloc(sizeof(struct MyBoolExpression)); $$.expr.left=NULL; *($$.expr.right)=$2.expr; $$.expr.op=CAL_NEG; 107 } prim { : ID $$.expr.left=NULL; $$.expr.right=NULL; $$.expr.op=VAL_ID; strcpy($$.expr.attributeName,$1.stringval); } | ID '.' ID { $$.expr.left=NULL; $$.expr.right=NULL; $$.expr.op=VAL_TABLE_DOT_ID; strcpy($$.expr.tableName,$1.stringval); strcpy($$.expr.attributeName,$3.stringval); } | NUMBER { $$.expr.left=NULL; $$.expr.right=NULL; $$.expr.op=VAL_NUMBER; $$.expr.numberval=$1.intval; } | REAL { $$.expr.left=NULL; $$.expr.right=NULL; $$.expr.op=VAL_REAL; $$.expr.realval=$1.floatval; } | STRING { $$.expr.left=NULL; $$.expr.right=NULL; $$.expr.op=VAL_STRING; strcpy($$.expr.attributeName,$1.stringval); } | '(' expr ')' { $$.expr.left=(struct MyBoolExpression*)malloc(sizeof(struct MyBoolExpression)); *($$.expr.left)=$2.expr; $$.expr.right=NULL; $$.expr.op=CAL_BRACKET; } //////////////////////////////////////////////////////////////////////////// ///////////////////////// time_expression : time_term { $$.expr=$1.expr; } | time_expression OR time_term { 108 $$.expr.left=(struct MyBoolExpression*)malloc(sizeof(struct MyBoolExpression)); $$.expr.right=(struct MyBoolExpression*)malloc(sizeof(struct MyBoolExpression)); *($$.expr.left)=$1.expr; *($$.expr.right)=$3.expr; $$.expr.op=BOOL_OR; } time_term { $$.expr=$1.expr; } : time_fact | time_term AND time_fact { $$.expr.left=(struct MyBoolExpression*)malloc(sizeof(struct MyBoolExpression)); $$.expr.right=(struct MyBoolExpression*)malloc(sizeof(struct MyBoolExpression)); *($$.expr.left)=$1.expr; *($$.expr.right)=$3.expr; $$.expr.op=BOOL_AND; } time_fact { $$.expr=$1.expr; } : time_prim | NOT time_prim { $$.expr.right=(struct MyBoolExpression*)malloc(sizeof(struct MyBoolExpression)); $$.expr.left=NULL; *($$.expr.right)=$2.expr; $$.expr.op=BOOL_NOT; } time_prim : period_exp TEMPOP period_exp { $$.expr.left=(struct MyBoolExpression*)malloc(sizeof(struct MyBoolExpression)); $$.expr.right=(struct MyBoolExpression*)malloc(sizeof(struct MyBoolExpression)); *($$.expr.left)=$1.expr; *($$.expr.right)=$3.expr; $$.expr.op=$2.temprel; $$.expr.plausibility=default_plausibility; } | period_exp TEMPOP period_exp WITH PLAUSIBILITY NUMBER { $$.expr.left=(struct MyBoolExpression*)malloc(sizeof(struct MyBoolExpression)); $$.expr.right=(struct MyBoolExpression*)malloc(sizeof(struct MyBoolExpression)); *($$.expr.left)=$1.expr; 109 *($$.expr.right)=$3.expr; $$.expr.op=$2.temprel; $$.expr.plausibility=$6.intval; } | instant_exp RELOP instant_exp { $$.expr.left=(struct MyBoolExpression*)malloc(sizeof(struct MyBoolExpression)); $$.expr.right=(struct MyBoolExpression*)malloc(sizeof(struct MyBoolExpression)); *($$.expr.left)=$1.expr; *($$.expr.right)=$3.expr; $$.expr.op=$2.numrel-80; //-100 + 20 $$.expr.plausibility=default_plausibility; } | instant_exp RELOP instant_exp WITH PLAUSIBILITY NUMBER { $$.expr.left=(struct MyBoolExpression*)malloc(sizeof(struct MyBoolExpression)); $$.expr.right=(struct MyBoolExpression*)malloc(sizeof(struct MyBoolExpression)); *($$.expr.left)=$1.expr; *($$.expr.right)=$3.expr; $$.expr.op=$2.numrel-80; $$.expr.plausibility=$6.intval; } | '(' time_expression ')' { $$.expr.left=(struct MyBoolExpression*)malloc(sizeof(struct MyBoolExpression)); $$.expr.right=NULL; *($$.expr.left)=$2.expr; $$.expr.op=CAL_BRACKET; } period_exp : ID { $$.expr.left=NULL; $$.expr.right=NULL; $$.expr.op=VAL_ID; strcpy($$.expr.attributeName,$1.stringval); } | time_period { $$.expr.left=NULL; $$.expr.right=NULL; $$.expr.op=VAL_TIMEPERIOD; $$.expr.timeval=$1.periodval; } time_period : '['time_instant','time_instant']' { $$.periodval.t_begin=$2.instantval; $$.periodval.t_end=$4.instantval; } 110 time_instant { time_t now; now = time(0); : NOW $$.instantval.day=localtime(&now)->tm_mday; $$.instantval.month=localtime(&now)->tm_mon; $$.instantval.year=localtime(&now)->tm_year+1900; } | '#'NUMBER'/'NUMBER'/'NUMBER'#' { $$.instantval.day=$2.intval; $$.instantval.month=$4.intval; $$.instantval.year=$6.intval; } instant_exp : BEGIN'('ID')' { $$.expr.left=NULL; $$.expr.right=NULL; $$.expr.op=VAL_ID_BEGIN; strcpy($$.expr.attributeName,$3.stringval); } | END'('ID')' { $$.expr.left=NULL; $$.expr.right=NULL; $$.expr.op=VAL_ID_END; strcpy($$.expr.attributeName,$3.stringval); } | time_instant { $$.expr.left=NULL; $$.expr.right=NULL; $$.expr.op=VAL_TIMEINSTANT; $$.expr.instantval=$1.instantval; } //////////////////////////////////////////////////////////////////////// // INSERT STATEMENT /////////////////////////////////////////////////////////////////////// insertstmt : DETERMINATE INSERT INTO table_name VALUES '(' values_list ')' VALID '[' time_instant ',' time_instant ']' { determinate_stmt=1; v_time.t_begin.lower=$11.instantval; v_time.t_end.lower=$13.instantval; } | INDETERMINATE INSERT INTO table_name VALUES '(' values_list ')' VALID '[' time_instant ',' time_instant ']' mass_function '~' '[' time_instant ',' time_instant ']' mass_function { 111 determinate_stmt=0; v_time.t_begin.lower=$11.instantval; v_time.t_begin.upper=$13.instantval; v_time.t_begin.pmf=$15.mass_function; v_time.t_end.lower=$18.instantval; v_time.t_end.upper=$20.instantval; v_time.t_end.pmf=$22.mass_function; } table_name : ID { strcpy(tables_list[0].TableName,$1.stringval); attributes_number=0; } | ID '(' attributes_list ')' { strcpy(tables_list[0].TableName,$1.stringval); } values_list : value1 { value1 | value1 ',' values_list : NUMBER | REAL | STRING add_ValuesList(yytext); } { add_ValuesList(yytext); } { add_ValuesList(yytext); } mass_function : EARLY { $$.mass_function=MASS_EARLY; } | LATE { $$.mass_function=MASS_LATE; } | NORMAL { $$.mass_function=MASS_NORMAL; } | UNIFORM { $$.mass_function=MASS_UNIFORM; } //////////////////////////////////////////////////////////////////////// // CREATE STATEMENT /////////////////////////////////////////////////////////////////////// create_stmt : attribute_type_list ')' DETERMINATE CREATE TABLE ID '(' 112 { determinate_stmt=1; strcpy(create_tableName,$4.stringval); } | INDETERMINATE CREATE TABLE ID '(' attribute_type_list ')' { determinate_stmt=0; strcpy(create_tableName,$4.stringval); } attribute_type_list : attribute_type | attribute_type ',' attribute_type_list attribute_type : ID data_type { add_Attribute_type_List($1.stringval,$2.stringval); } data_type : ID { strcpy($$.stringval,$1.stringval); } | ID '(' NUMBER ')' { sprintf($$.stringval,"%s(%d)",$1.stringval,$3.intval); } //////////////////////////////////////////////////////////////////////// // DELETE STATEMENT /////////////////////////////////////////////////////////////////////// delete_stmt : { determinate_stmt=1; } DETERMINATE delete1 | INDETERMINATE delete1 : DELETE FROM delete_table WHERE boolean_expression WHEN time_expression DELETE FROM delete_table WHERE boolean_expression DELETE FROM delete_table WHEN time_expression DELETE FROM delete_table { determinate_stmt=0; } delete1 | | | delete_table : ID { strcpy(delete_tableName,$1.stringval); } //////////////////////////////////////////////////////////////////////// // UPDATE STATEMENT 113 /////////////////////////////////////////////////////////////////////// update_stmt : { determinate_stmt=1; } DETERMINATE update1 | INDETERMINATE update1 : UPDATE update_table SET update_set_list WHERE boolean_expression WHEN time_expression UPDATE update_table SET update_set_list WHERE boolean_expression UPDATE update_table SET update_set_list WHEN time_expression UPDATE update_table SET update_set_list { determinate_stmt=0; } update1 | | | update_table : ID { strcpy(update_tableName,$1.stringval); } update_set_list : set_list_item | set_list_item ',' update_set_list set_list_item : ID TO update_value { add_update_set_list($1.stringval,$3.stringval); } update_value : ID { strcpy($$.stringval,yytext); } | { strcpy($$.stringval,yytext); } | { strcpy($$.stringval,yytext); } | { strcpy($$.stringval,yytext); } NUMBER STRING REAL %% 114 BẢNG CÁC THUẬT NGỮ VIỆT-ANH STT TỪ TIẾNG VIỆT biên dịch phân tích cú pháp TỪ TIẾNG ANH compile parser phân tích từ vựng cận scanner lower support cận upper support sở liệu hướng thời gian temporal database co thời gian shrink cú pháp BNF đại số quan hệ BNF syntax relational algebra 10 độ mịn granularity 11 độ phân giải resolution 12 đoạn thời gian time period 13 đoạn thời gian bất định indeterminate period 14 đoạn thời gian xác định determinate period 15 đường thời gian time-line hàm khối xác suất probability mass function – p.m.f 17 hàm khối xác suất chuẩn probably normal function 18 hàm khối xác suất probably uniform function 19 hàm tổng kết 20 hàm xác suất sớm aggregate operator probably early function 21 hàm xác suất trễ probably late function 22 hạt thời gian chronon 23 hệ số tin cậy credibility 24 khoảng thời gian interval 25 khoảng thời gian bất định indeterminate interval 26 khoảng thời gian xác định định determinate interval 27 mô hình liệu data model 28 mô hình quan hệ relational model 29 mức độ hỗ trợ plausibility 30 ngôn ngữ truy vấn hướng thời gian temporal query language 16 115 STT TỪ TIẾNG VIỆT 31 phân bố xác suất 32 phép ghép TỪ TIẾNG ANH probability distribution fold 33 phép tách unfold 34 phép toán khoảng interval operator 35 ràng buộc constraint 36 ràng buộc toàn vẹn integrity constraint 37 so sánh khoảng 38 bất định interval comparison indeterminacy 39 phân bố 40 thời điểm distribution instant 41 thời điểm bất định indeterminate instant 42 thời điểm xác định determinate instant 43 thời gian giao dịch transaction-time 44 thời gian hợp lệ valid-time 45 thời gian hợp lệ không tường minh implicit valid-time 46 thuộc tính attribute 47 thuộc tính có thay đổi theo thời gian thuộc tính không thay đổi theo thời gian temporal attribute 48 49 tiểu ngôn ngữ nontemporal attribute sub language 50 xác định determinate 116 [...]... sau: Mô hình dữ liệu cho ứng dụng cơ sở dữ liệu bệnh viện Định nghĩa tiểu ngôn ngữ SubTSQL Xây dựng một Layer 25 3.3.1 Mô hình dữ liệu cho ứng dụng cơ sở dữ liệu bệnh viện Tác giả chọn ứng dụng cơ sở dữ liệu cụ thể là cơ sở dữ liệu bệnh viện: theo dõi và điều trị bệnh ung thư Mô hình cơ sở dữ liệu hướng thời gian được tác giả xây dựng dựa trên mô hình cơ sở dữ liệu quan hệ truyền thống, thêm vào các thuộc... niệm cơ bản về cơ sở dữ liệu hướng thời gian cũng như vấn đề mở rộng để có thể xử lý được với dữ liệu có yếu tố thời gian bất định Các khái niệm cơ bản về cơ sở dữ liệu hướng thời gian bao gồm các thuật ngữ, định nghĩa các phép toán liên quan đến thời gian và các hướng mở rộng mô hình cơ sở dữ liệu quan hệ thành cơ sở dữ liệu hướng thời gian Vấn đề mở rộng mô hình để có thể xử lý được với dữ liệu với thời. .. theo thời gian sẽ là vấn đề khó khăn Như vậy cần thiết kế một mô hình cơ sở dữ liệu có hiệu quả hơn trong việc quản lý những dữ liệu có giá trị thay đổi theo thời gian Cơ sở dữ liệu hướng thời gian mở rộng cơ sở dữ liệu truyền thống bằng cách thêm yếu tố thời gian 5 2.2 Một số khái niệm, thuật ngữ trong cơ sở dữ liệu hướng thời gian Mô hình cơ sở dữ liệu hướng thời gian đã có một số công trình đề cập... cụ thể là cơ sở dữ liệu bệnh viện 2 1.4 Vấn đề mà luận văn sẽ giải quyết Mục đích của luận văn này là nghiên cứu về vấn đề thời gian bất định trong cơ sở dữ liệu hướng thời gian, mở rộng mô hình cơ sở dữ liệu quan hệ truyền thống để có thể xử lý được dữ liệu với thời gian bất định, đồng thời mở rộng cú pháp của SQL-92 cho phép làm việc dễ dàng trên dữ liệu có thuộc tính là thời gian bất định Đề tài cũng... SỐ KHÁI NIỆM CƠ BẢN Phần này sẽ trình bày một số khái niệm cơ bản về cơ sở dữ liệu hướng thời gian và vấn đề bất định trong cơ sở dữ liệu hướng thời gian 2.1 Mô hình cơ sở dữ liệu hướng thời gian Cơ sở dữ liệu hướng thời gian (temporal database) được hiểu một cách nôm na là cơ sở dữ liệu có khả năng chứa dữ liệu có tính chất lịch sử thay vì dữ liệu hiện tại Lĩnh vực này đã được nhiều nhà nghiên cứu từ... vấn có yếu tố bất định về thời gian sẽ phải xử lý trực tiếp trên dữ liệu trước khi truy vấn và kết quả trước khi trả về Về công trình của hai tác giả Dyreson và Snodgrass[7], các tác giả đã tập trung giải quyết các vấn đề liên quan đến mở rộng cơ sở dữ liệu hướng thời gian thêm vào yếu tố bất định Công trình đã xây dựng một nền móng lý thuyết về vấn đề thời gian bất định trong cơ sở dữ liệu hướng thời. .. dù là nhỏ nhất của bệnh nhân đó đối với bệnh viêm phổi Như vậy cần có cơ chế cho phép lưu trữ những thông tin có thời gian xảy ra là bất định và cơ chế cho phép truy vấn, xử lý trên dữ liệu bất định theo thời gian này 1.3 Những hạn chế của các công trình liên quan Trong công trình “Hiện thực tiểu ngôn ngữ truy vấn cho cơ sở dữ liệu hướng thời gian – Ứng dụng vào cơ sở dữ liệu bệnh viện – NCS Phạm Văn... của đề tài khác đã nghiên cứu về cơ sở dữ liệu hướng thời gian với thời gian xác định của nghiên cứu sinh Phạm Văn Chung [4], mở rộng cú pháp của SubTSQL, hiện chỉ cho phép thực hiện truy vấn với thời gian xác định, để có thể hỗ trợ thực hiện các câu truy vấn với dữ liệu thời gian bất định Cụ thể, luận văn sẽ tập trung giải quyết những công việc như sau: - Xây dựng mô hình cơ sở dữ liệu hướng thời gian. .. trong cơ sở dữ liệu bệnh viện, những sự kiện về bệnh lý thường không được biết một cách chắc chắn Ví dụ một bác sĩ chỉ có thể biết việc dùng thuốc của bệnh nhân vào đó xảy ra trong khoảng từ 6 AM đến 8 AM”, hay sự nhiễm bệnh của bệnh nhân có thể xảy ra trong khoảng đầu tháng 7”… Đó là những ví dụ về sự bất định về thời gian 2.4.1 Các khái niệm Vấn đề thời gian bất định trong cơ sở dữ liệu hướng thời. .. Bách Khoa TP.HCM[4], tác giả đã xây dựng mô hình cơ sở dữ liệu hướng thời gian cho ứng dụng cơ sở dữ liệu bệnh viện bằng cách mở rộng cơ sở dữ liệu quan hệ truyền thống đưa thêm yếu tố thời gian Tuy nhiên mô hình này chỉ xử lý trên dữ liệu với thời gian xác định Yếu tố bất định chưa được đề cập đến Công trình này cũng xây dựng một tiểu ngôn ngữ truy vấn SubTSQL dựa trên ngôn ngữ SQL-92 chuẩn, được

Ngày đăng: 29/11/2015, 22:38

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan