Trang chủ » Một số kiến thức, kinh nghiệm thiết kế cơ sở dữ liệu có yếu tố thời gian
Bài báo NCKH CNTT

Một số kiến thức, kinh nghiệm thiết kế cơ sở dữ liệu có yếu tố thời gian

Trong bài báo này, tác giả chia sẻ chi tiết về một giải pháp nghiên cứu xây dựng CSDL của một Hệ thống hỗ trợ công tác báo cáo, thống kê số liệu theo các biểu mẫu sử dụ ng trong cơ quan hành chính. Giải pháp này chia sẻ một quy trình xây dựng CSDL với các bước thực hiện cụ thể, trong đó có sự phân tích một số lỗi thường gặp liên quan đến việc áp dụng “máy móc” các lí thuyết phương pháp thiết kế. Đồng thời, đ ề xuất các cách giải quyết phù hợp để nâng cao hiệu quả xử lí CSDL, đáp ứng các nhu cầu sử dụng khác nhau trong thực tiễn.

Tác giả bài viết: NGUYỄN HỒNG LY
(
Chi cục Tiêu chuẩn Đo lường Chất lượng Đồng Tháp, Việt Nam)

TÓM TẮT

     Hiện nay, các tài liệu nghiên cứu ứng dụng về cơ sở dữ liệu (CSDL) có yếu tố thời gian rất ít, các bài báo được chia sẻ chủ yếu là nghiên cứu lí thuyết, nộ i dung không đi sâu vào giải quyết một ứng dụng cụ thể. Vì vậy, việc nghiên cứu và đề xuất các giải pháp chi tiết cụ thể để các cá nhân, tổ chức có thể vận dụng dễ dàng và hiệu quả trong việc xây dựng CSDL đảm bảo tính đầy đủ, chính xác của thông tin. Từ đó giúp cho việc khai thác sử dụng thông tin mang lại hiệu quả. Trong bài báo này, tác giả chia sẻ chi tiết về một giải pháp nghiên cứu xây dựng CSDL của một Hệ thống hỗ trợ công tác báo cáo, thống kê số liệu theo các biểu mẫu sử dụ ng trong cơ quan hành chính. Giải pháp này chia sẻ một quy trình xây dựng CSDL với các bước thực hiện cụ thể, trong đó có sự phân tích một số lỗi thường gặp liên quan đến việc áp dụng “máy móc” các lí thuyết phương pháp thiết kế. Đồng thời, đ ề xuất các cách giải quyết phù hợp để nâng cao hiệu quả xử lí CSDL, đáp ứng các nhu cầu sử dụng khác nhau trong thực tiễn.

Từ khóa: cơ sở dữ liệu; thiết kế; yếu tố thời gian.

ABSTRACT

     Limited research has been conducted on the application of temporal databases. The review ofrelated literature shows that articles are mainly theoretical with few applications. Therefore, it is necessary to suggest detailed solutions so that individuals and organizations can easily and effectively apply them in building a database to ensure the completeness and accuracy of information.

     This article shares information on a solution to build a database for a system that supports reporting and statistical templates and forms used in administrative agencies. It includes a database building process with steps, including the analysis of some common errors related to the “mechanical” application of design methods. At the same time, the paper proposes suitable solutions to improve the efficiency of database processing to meet different usage needs in practice.

Keywords: database; design; temporal database

x
x x

1. Giới thiệu

     Chúng ta biết rằng, tất cả thông tin về sự tồn tại của các sự vật, hiện tượng trong thế giới thực luôn gắn liền với các yếu tố thời gian cụ thể của quá khứ, hiện tại hay tương lai. Do đó, những thông tin của thực thể khi đư ợc lưu trữ trong CSDL cần có đầy đủ các yếu tố thời gian liên quan. Bởi vì, các yếu tố thời gian này sẽ ảnh hưởng rất lớn đến sự hoàn chỉnh và tính chính xác của thông tin.

     Tuy nhiên thực tế hiện nay, nhiều hệ thống thông tin có CSDL được thiết kế theo kiểu đơn giản hóa, bỏqua các yếu tố thời gian. Dẫn đến hậu quả làm cho CSDL mất đi tính đầy đủ về mặt thời gian, ảnh hưởng đến sự chính xác của những thông tin được phản ánh và tính thực tiễn của ứng dụng.

     Chẳng hạn như trong một hệ thống thông tin báo cáo, nếu CSDL của hệ thống không được thiết lập các yếu tố thời gian liên quan, để theo dõi sự biến động dữ liệu của các đối tượng theo thời gian, mà chỉ quan tâm đến việc lưu trữ các giá trị hiện tại. Thì báo cáo về các đối tượng đó cũng sẽ chứa thông tin không đảm bảo được tính đầy đủ, chính xác. Kết quả là quyết định được đưa ra dựa trên các báo cáo đó có thể sẽ trở nên sai lệch.

     Như vậy, làm thế nào để quản lí dữ liệ u thay đổi theo thời gian? Giải pháp cho vấn đềnày chính là xây dựng CSDL có yếu tố thời gian (sau đây gọi tắt là CSDL thời gian).

     CSDL thời gian cho phép lưu trữ và truy nhập các loại dữ liệu thời gian. Thuật ngữ dữ liệu thời gian có thể hiểu là dữ liệu hay đối tượng được xác định với một yếu tố thời gian (nhãn thời gian) cụ thể (Jensen & Snodgrass, 1999). Nói cách khác, một đ ối tượng có thể có nhiều giá trị khác nhau tại những thời điểm khác nhau.

     Điểm khác biệt giữa CSDL thời gian và CSDL phi thời gian đó là: CSDL thời gian hỗ trợ lưu trữ thông tin của một đối tượng liên quan đến thời gian trong quá khứ, hiện tại và tương lai (nếu có) của nó. Trong khi, CSDL phi thời gian, chỉ lưu trữ các dữ kiện được cho là đúng tại thời điểm hiện tại (Khi dữ liệu được cập nhật, chèn hoặc xóa thì nó được viết đè lên trạng thái dữ liệu cũ và tạo nên một trạng thái mới trong CSDL. Và khi đó trạng thái trước khi có thay đổi xảy ra sẽ không còn nữa.

     Yếu tố thời gian được đưa ra với nhiều ngữ nghĩa khác nhau phụ thuộc vào loại thời gian mà hệ thống tương ứng hỗ trợ. Có hai loại thời gian thường được sử dụng là thời gian giao tác (Transaction Time) và thời gian hợp lệ (Valid Time), cụ thể:

     – Thời gian giao tác là thời gian lúc thực thể/sự kiện đư ợc lưu tr ữtrong CSDL. Nó được hệ thống ghi nhận và người dùng không thể can thiệp thay đổi.

     – Thời gian hợp lệ của một sự kiện là thời gian mà sự kiện đó được xem là đúng trong thực tế. Nó được thiết lập bởi ngư ời dùng và có thể thay đổi.

     Trong phần tiếp theo tác giả trình bày quy trình với 5 bư ớc thực hiện đ ể xây dựng CSDL của một Hệ thống thông tin hỗtrợ công tác báo cáo, thống kê số liệu theo các biểu mẫu sử dụng trong các cơ quan hành chính nhà nước (sau đây gọi tắt là Hệ thống BCTK) và kết quả thiết kế một số chức năng hỗ trợ truy vấn lịch sử dữ liệu của các thực thể có sự thay đổi theo thời gian trên hệ thống này.

     2. Nội dung

     a) Quy trình xây dựng CSDL thời gian của Hệ thống BCTK

     Việc xây dựng CSDL thời gian của Hệ thống BCTK được thực hiện với 5 bước như sau:

     Bước 1. Xác định mục đích của CSDL Hệ thống BCTK

     Về cơ bản chức năng chính của Hệ thống BCTK là cung cấp các biểu mẫu để thu thập dữ liệu, xử lí, lưu trữ và kết xuất các biểu báo cáo thống kê. Do đó, mục đích của CSDL của Hệ thống BCTK được xác định là một CSDL có khả năng lưu trữ đầy đủ các dữ liệu cần thiết theo thời gian, để thuận lợi trong việc thực hiện những chức năng của Hệ thống BCTK, chẳng hạn như: dữ liệu có thể dễ dàng cập nhật, thông tin có thể truy xuất nhanh chóng, đảm bảo tính đầy đ ủ, chính xác nhằm phục vụ hiệu quả cho công tác quản lí và điều hành.

     Bước 2. Thiết kế CSDL mức khái niệm

     Công tác báo cáo thống kê trong các cơ quan hành chính được thực hiện theo sự phân công, phân cấp. Theo đó, mỗi đơn vị có trách nhiệm thực hiện các chế độ báo cáo (còn được gọi là loại báo cáo) theo định kì hoặc đột xuất liên quan đến lĩnh vực, phạm vi quản lí.

     Việc thực hiện chế độ báo cáo thống kê do các người dùng thuộc mỗi đơn vị thực hiện, trên cơ sở vai trò chức trách được giao, để thực hiện các hoạt động nghiệp vụ báo cáo thống kê theo sự phân công (ủy quyền) như: thiết kế biểu mẫu, nhập liệu, kiểm tra, kí duyệt, ban hành.

     Kết quả thực hiện đối với mỗi loại báo cáo thống kê, bao gồm: các biểu dữ liệu báo cáo thống kê tương ứng với mỗi kì báo cáo theo các biểu mẫu được quy định.

     Đối với các biểu mẫu của mỗi loại báo cáo, có thể khác nhau về số bảng biểu, số hàng chỉ tiêu, số cột thuộc tính.


Hình 1. Biểu mẫu báo cáo thống kê nhiệm vụ khoa học và công nghệ

     Sau khi phân tích nghiệp vụ hoạt động báo cáo thống kê và các thành phần dữ liệu trong các biểu mẫu, có thể xác định các tập thực thể cần có trong CSDL của một Hệ thống BCTK, như sau:

STTTên tập thực thểGiải thích
1Department Đơn vị
2UserNgười dùng
3RoleVai trò người dùng
4Report TypeLoại báo cáo
5Report PeriodKì báo cáo
6TableBảng biểu
7Form Biểu mẫu
8TargetChỉ tiêu
9AttributeThuộc tính

     Xác định mối quan hệ trong thế giới thực giữa các thực thể trên ta có thể vẽ được mô hình thực thể kết hợp (ER) của CSDL Hệ thống BCTK như Hình 2:


Hình 2. Mô hình ER của CSDL hệ thống báo cáo thống kê

     Sử dụng biểu đồ venn để biểu diễn các tập thực thể và các mối quan hệ của mô hình ER trên, ta có thể thấy mô hình này không phản ánh tốt khía cạnh thời gian trong thực tế của một số dữ liệu cần lưu trữ, đơn cử như vấn đề không thể biểu diễn được các giá trị của những cặp chỉ tiêu, thuộc tính của mối quan hệ kết hợp (Combine) theo thời gian. Ví dụ: Trong thực tế chúng ta cần quản lí lịch sử các giá trị đã được lưu trữ của cặp chỉ tiêu, thuộc tính (a, b) của mối quan hệ kết hợp hai thực thể này, tương ứng với các khoảng thời gian (t1, t2), (t3, t4).Thông qua biểu đồ venn ta có thể biểu diễn các bộ giá trị của cặp chỉ tiêu, thuộc tính trên như Hình 3:

Hình 3. Biểu diễn các giá trị cặp chỉ tiêu, thuộc tính theo thời gian

     Tuy nhiên, việc biểu diễn một mối quan hệ giữa hai thực thể nhiều hơn một đư ờng nối, như bi ểu đồ venn trên (Hình 3) theo lí thuyết của mô hình ER là “không cho phép”.

     Ngoài ra, các thực thể Department (Đơn vị), User (Người dùng); các mối quan hệ Assign (Phân công), Relate_to (Liên quan), Authorize (Ủy quyền), Work (Làm việc), Has_R (Có vai trò), Has_F (Có biểu mẫu); các thuộc tính DueDate (Hạn báo cáo), Formula (Công thức), Value (Giá trị) cũng cần phải quản lí các dữ liệ u thay đổi theo thời gian hoặc theo dõi lịch sử tương tác của người dùng.

     Tuy nhiên, những yêu cầu đó khó có thể thực hiện được theo lí thuyết mà mô hình ER đưa ra, hay nói cách khác là mô hình ER không đảm bảo giải quyết đầy đủ vấn đề liên quan đến yếu tố thời gian của các thực thể, thuộc tính và mối quan hệ.

     Hiện nay, có nhiều mô hình được đ ề xuất cho việc thiết kế CSDL thời gian mức khái niệm như: TimeER, TempEER, TempRT, TERC+… Trong đó, mô hình TimeER do (Gregersen & Jensen, 1999) xây dựng như là một mở rộng của mô hình ER với sự hỗ trợ khá đầy đủ các yếu tố thời gian so với các mô hình khác. Đây cũng chính là mô hình được tôi lựa chọn để thiết kế CSDL mức khái niệm của Hệ thống BCTK.

     “Mô hình TimeER phát triển dựa trên mô hình ER. Mô hình này cho phép hỗ trợ các loại thời gian sau: thời gian sống của một thực thể, thời gian hợp lệ của một sự kiện và thời gian giao tác của một thực thể hoặc một sự kiện. Mô hình này quy ước rằng, đ ối với các thực thể, hệ thống chỉ có thể hỗ trợ thời gian sống (LifeSpan, kí hiệu là LS), hoặc thời gian giao tác (Transaction Time, kí hiệu là TT), hoặc cả hai loại thời gian này (kí hiệu là LT). Còn đối với các thuộc tính, hệ thống chỉ cho phép hỗ trợ thời gian hợp lệ (Valid Time, kí hiệu là VT), hoặc thời gian giao tác (TT) hoặc cả hai loại thời gian này (BiTemporal, kí hiệu là BT). Ngoài ra, do một mối quan hệ có thể xem là một tập thực thể hoặc một thuộc tính, nhờ vậy mà người thiết kế có thể xác đ ịnh các yếu tố thời gian hỗ trợ cho mối quan hệ đó nếu cần”. Dựa vào lí thuyết mô hình TimeER, mô hình CSDL mức khái niệm của Hệ thống BCTK có thể được hoàn thiện bằng việc bổ sung những loại thời gian liên quan, cần thiết cho sự quản lí đối với các thực thể, thuộc tính và mối quan hệ trong mô hình ER đã thiết kế ở trên, để đư ợc mô hình TimeER như Hình 4:


Hình 4. Mô hình CSDL Hệ thống Báo cáo thống kê mức khái niệm

     Bước 3. Thiết kế CSDL thời gian mức Logic

     Để chuyển đổi từ mô hình TimeER sang mô hình quan hệ, theo nghiên cứu (Hoang & Nguyen, 2012)đã xây dựng một phương pháp tổng quát dựa trên ý tưởng xây dựng các loại quan hệ (Quan hệ chính R(E): lưu định danh các thực thể của kiểu thực thể E, kèm thông tin của các thuộc tính đơn trị; Quan hệ thời gian (TR): lưu trữ dữ liệu thờ i gian liên quan đến nhữ ng thay đổi của các thực thể và các sự kiện trong một hệ thống; Các quan hệ khác: lưu thông tin về mối quan hệ giữa các kiểu thực thể và các dữ liệu đa trị của các thuộc tính. Các quan hệ chính đóng vai trò “trung tâm”).

     Phương pháp trên đã giải quyết tương đối toàn diện các vấn đề liên quan đến việc chuyển đổi mô hình TimeER sang mô hình quan hệ.

     Tuy nhiên, hiện nay các hệ quản trịCSDL được sử dụng phổ biến như SQL Server, MariaDB… đã có hỗ trợ bả ng lưu trữ lịch sử dữ liệu kèm theo bảng lưu dữ liệu hiện thời, do đó trong trường hợp chuyển đổi một thực thể có yếu tố thời gian sang lược đồ quan hệ, thay vì phải xây dựng thêm lược đ ồ quan hệ thời gian tách khỏi lược quan hệ chính như Phương pháp do (Hoang & Nguyen, 2012) đề xuất, thì chỉ cần xây dựng một lược đồ quan hệ có các thuộc tính của loại thời gian liên quan.

     Theo đó, mô hình mức khái niệm (TimeER) của Hệ thống BCTK sẽ được chuyển đổi sang mô hình quan hệ, gồm các lược đồ quan hệ như sau:

     – Departments (ID, DeptName, TTs_Dept, TTe_Dept).

     – Users (UserName, Password, FullName, DeptID, LSs_User, LSe_User, TTs_User, TTe_User)

     – Roles (ID, RoleName).

     – RoleOfUser (UserID, RoleID, TTs_RU, TTe_RU).

     – ReportTypes ( ReportTypeID, ReportTypeName).

     – ReportingDeadlines (ReportTypeID, DueDate, TTs_RpDeadline, TTe_RpDeadline).

     – ReportTypesToDeparments (ReportTypeID, DeptID, TTs_RTD, TTe_RTD).

     – ReportPeriods (ID, PeriodName, DateStart, DateEnd).- Forms (ID, FormName, ReportTypeID).

     – Relate_PeriodForm ( FormID, PeriodID).

     – FormStatus (ID, Status, TTs_Status, TTe_Status).

     – Work_UserForm ( UserID, FormID, Action, TTs_Work, TTe_Work).

     – Authorizations (FormID, UserID, Permission, TTs_Authorization, TTe_Authorization).

     – Tables (ID, TableName, FormID).

     – Attributes (ID, AtributeName, DataTye, ParentID, TableID).

     – Targets (ID, TargetName, DataType, IsParent, TableID).

     – AttributeTargetPairs (TargetID, AttributeID).

     – Formulas_AT ( ID, Formula, TTs_Formula, TTe_Formula).

     – Values_AT ( ID, Value, VTs_Value, VTe_Value, TTs_Value, TTe_Value).

     Trong quy trình thiết kế CSDL, thông thường sau khi chuyển đổi từ mô hình mức khái niệm sang mô hình quan hệ, sẽ tiến hành bước chuẩn hóa CSDL. Tuy nhiên, một lỗi chúng ta rất hay mắc phải là áp dụng các quy tắc chuẩn hóa mà không cần suy nghĩ về bản chất của ứng dụng, để rồi sau đó gặp các vấn đề về hiệu suất và phải tùy chỉnh.

     Cho nên trước khi thực hiện công việc chuẩn hóa, chúng ta cần phải xác định bản chất của ứng dụng đang thiết kế là gì, là loại ứng dụng giao dịch (Transactional) hay ứng dụng phân tích (Analytical)?

     Trong loại ứng dụng Transactional, người dùng cuối thường xuyên thực hiện các thao tác thêm, cập nhật, xóa các bản ghi. CSDL cho hệ thống này được gọi là OLTP.

     Còn với ứng dụng Analytical, người dùng cuối thường quan tâm nhiều hơn đến phân tích, báo cáo, dự báo… Những loại CSDL này có số lần chèn và cập nhật ít hơn. Mục đích chính ở đây là tìm nạp và phân tích dữ liệu nhanh nhất có thể. CSDL cho hệ thống này được gọi là OLAP.

     Từ đó, nếu chúng ta thấy rằng việc chèn, cập nhậ t và xóa được thực hiện thường xuyên trên ứng dụng thì hãy thiết kế bảng chuẩn hóa (normalization), nếu không thì tạo cấu trúc CSDL không chuẩn hóa phẳng (denormalized).

     Hệ thống BCTK là một ứng dụng phân tích dữ liệu, nhằm phục vụ cho việc tổng hợp, phân tích và báo cáo thông tin. Tuy nhiên, việc chuẩn hóa CSDL của hệ thống cần được xem xét, đánh giá cẩn thận để đảm bảo tính nhất quán và hiệu suất của hệ thống.

     Áp dụng các quy tắc chuẩn hóa CSDL trong Hệ thống BCTK cho thấy lược đồ quan hệ của CSDL đã được thiết kế ở mức chuẩn hóa 3NF (Third Normal Form) – đây là mức chuẩn hóa phổ biến và phù hợp với nhiều hệ thống thông tin quản lí.

     Việc chuẩn hóa CSDL giúp tránh được các vấn đề như sự lặp lại dữ liệu hoặc mất mát dữ liệu.Tuy nhiên, nếu không cần thiết, không nên chuẩn hóa CSDL ở mức cao hơn 3NF để tránh ảnh hưởng đến hiệu suất của hệ thống.

     Bước 4. Thiết kế CSDL thời gian mức Vật lí

     Trong thiết kế CSDL mức vật lí, các lược đồ quan hệ (LĐQH) sẽ được chuyển thành mô hình vật lí, tức là tập hợp các bảng. Theo quy tắc chuyển đổi, mỗi LĐQH và các thuộc tính của nó sẽ được chuyển thành bảng có các cột tương ứng và liên kết giữa các LĐQH trở thành ràng buộc giữa các bảng. Khóa chính của LĐQH sẽ chuyển thành khóa chính của bảng,và các LĐQH có yếu tố thời gian, khóa chính được đề xuất là khóa kết hợp giữa thuộc tính khóa của quan hệ chính và các thuộc tính thời gian.

     Tuy nhiên, trong thực tế, ràng buộc khóa chính như vậy về lí thuyết rất chặt chẽ nhưng ít được sử dụng do hạn chế hiệu suất truy vấn. Vì vậy, để đơn giản hóa việc cài đặt và tối ưu tốc độ truy vấn ở một số bảng của CSDL, chúng ta có thể bổ sung thêm thuộc tính khóa chính ID kiểu INT và thiết lập tự động tăng, còn các thuộc tính khóa kết hợp thay vì được chọn làm khóachính sẽ được đặt giá trị ràng buộc duy nhất (unique).

     Đối với các bảng có quan hệ nhiều – nhiều, việc cài đặt CSDL thông thường sẽ phải có thêm bảng trung gian. Có hai cách để xác định khóa chính của bảng trung gian. Cách làm theo nhiều lí thuyết hướng dẫn là sử dụng khóa ngoại của hai bảng làm khóa chính của bảng trung gian. Tuy nhiên, trong thực tế, cách làm này ít được sử dụng vì khó mở rộng trong trường hợp có thêm bảng mới về sau liên quan đến quan hệ nhiều – nhiều.

     Do đó, cách làm thứ hai là tạo ra khóa chính riêng giúp bảng trung gian tồn tại độc lập với các bảng liên quan đến quan hệ nhiều – nhiều. Cách làm này giúp dễ mở rộng CSDL về sau, khi cần thêm bảng mới liên quan đến quan hệ nhiều – nhiều, chỉ cần thêm một khóa ngoại mới vào bảng trung gian.

     Có thể thấy, việc thiết kế CSDL mức vật lí là một quá trình quan trọng và phức tạp, đòi hỏi kiến thức chuyên sâu về cơ sở dữ liệu. Tuy nhiên, khi thực hiện đúng và hiệu quả, nó sẽ giúp cải thiện hiệu suất và độ tin cậy của hệ thống.

     Ngoài ra, việc thiết kế CSDL mức vật lí cũng phải đáp ứng các yêu cầu về bảo mật dữ liệu. Để đảm bảo an toàn cho dữ liệu, các bảng trong CSDL nên được cài đặt các ràng buộc và phân quyền truy cập cho người dùng. Ngoài ra, cần sử dụng các công nghệ bảo mật như mã hóa dữ liệu, kiểm tra và giám sát các hoạt động truy cập vào CSDL.

     Trong tổng thể, việc thiết kế CSDL mức vật lí là một quá trình quan trọng và phức tạp trong việc xây dựng hệ thống thông tin. Nó yêu cầu kiến thức chuyên sâu về cơ sở dữ liệu và khả năng áp dụng cácquy tắc chuyển đổi lược đồ quan hệ thành mô hình vật lí. Nếu được thực hiện đúng và hiệu quả, việc thiết kế CSDL mức vật lí sẽ giúp cải thiện hiệu suất và độ tin cậy của hệ thống và đảm bảo an toàn cho dữ liệu.

     Ghi chú: Kính mời Quý độc giả tải tệp PDF đính kèm bên dưới để xem toàn bộ bài viết:

Nguồn: Tạp chí Khoa học Trường Đại học Sư phạm Tp Hồ Chí Minh,
Tập 20, Số 2 (2023): 218-231

BAN BIÊN TẬP
10/2023

Download file (PDF): Một số kiến thức, kinh nghiệm thiết kế cơ sở dữ liệu có yếu tố thời gian
(Tác giả: Nguyễn Hồng Ly)