Mô hình cơ sở dữ liệu phân cấp

**Mô hình cơ sở dữ liệu phân cấp** (tiếng Anh: hierarchical database model) là một loại mô hình dữ liệu, trong đó dữ liệu được tổ chức thành cấu trúc dạng cây. Dữ liệu được lưu trữ dưới dạng các **bản ghi** (record) kết nối với nhau thông qua các **liên kết** (link). Mỗi bản ghi là một tập hợp các **trường** (field), mỗi trường chỉ chứa một giá trị. **Kiểu** (type) của một bản ghi xác định bản ghi đó sẽ chứa những trường nào.

Mô hình cơ sở dữ liệu phân cấp yêu cầu mỗi nút con chỉ có một nút cha, trong khi mỗi nút cha lại có thể có một hoặc nhiều nút con. Để lấy dữ liệu từ một cơ sở dữ liệu phân cấp, cần duyệt qua toàn bộ cây, bắt đầu từ nút gốc. Mô hình này được công nhận là mô hình cơ sở dữ liệu đầu tiên do IBM tạo ra vào những năm 1960.

## Lịch sử
Cấu trúc phân cấp được IBM phát triển vào những năm 1960 và sử dụng trong máy tính mainframe DBMS đầu tiên. Những mối quan hệ của các bản ghi tạo thành một mô hình dạng cây. Cấu trúc này tuy đơn giản nhưng không linh hoạt, vì các mối quan hệ trong cấu trúc bị ràng buộc ở dạng mối quan hệ một–nhiều. IBM Information Management System (IMS, Hệ thống Quản lý Thông tin IBM) và RDM Mobile là những ví dụ về hệ thống cơ sở dữ liệu phân cấp có nhiều cấp trên cùng một dữ liệu. RDM Mobile là cơ sở dữ liệu nhúng được thiết kế mới dành cho hệ thống máy tính di động.

Mô hình dữ liệu phân cấp mất đi sức hút khi mô hình quan hệ của nhà khoa học máy tính Edgar Codd trở thành tiêu chuẩn trong thực tế, được sử dụng trong phần lớn các hệ thống quản lý cơ sở dữ liệu chính thống. Việc triển khai cơ sở dữ liệu quan hệ cho một mô hình phân cấp đã được thảo luận lần đầu tiên trong một xuất bản phẩm năm 1992 (xem thêm mô hình tập hợp lồng nhau). Các lược đồ thể hiện tổ chức dữ liệu phân cấp đã xuất hiện trở lại với sự ra đời của XML vào cuối những năm 1990 (xem thêm cơ sở dữ liệu XML). Ngày nay, cấu trúc phân cấp chủ yếu được sử dụng để lưu trữ thông tin địa lý và hệ thống tập tin.

Hiện tại, cơ sở dữ liệu phân cấp vẫn được sử dụng rộng rãi, đặc biệt trong các ứng dụng đòi hỏi hiệu năng và tính sẵn sàng rất cao như ngân hàng và viễn thông. Một trong những cơ sở dữ liệu phân cấp thương mại được sử dụng rộng rãi nhất là IMS. Một ví dụ khác về ứng dụng cơ sở dữ liệu phân cấp trong thực tế là phần mềm Windows Registry trong hệ điều hành Microsoft Windows.

## Ví dụ về dữ liệu phân cấp được biểu diễn dưới dạng bảng quan hệ
Một tổ chức có thể lưu trữ thông tin nhân viên trong một bảng có chứa các thuộc tính (hay cột) là mã nhân viên, tên, họ và mã phòng ban. Tổ chức sẽ cấp cho mỗi nhân viên phần cứng máy tính khi cần, nhưng thiết bị máy tính chỉ có thể do nhân viên được chỉ định sử dụng. Tổ chức có thể lưu trữ thông tin phần cứng máy tính trong một bảng riêng biệt bao gồm số sêri, loại và mã nhân viên sử dụng phần cứng đó. Các bảng có thể trông như thế này:

Trong mô hình này, bảng dữ liệu `employee` đại diện cho nút "cha" của hệ thống phân cấp, còn bảng `computer` đại diện cho nút "con". Không giống cấu trúc cây thường thấy trong các thuật toán phần mềm máy tính, ở mô hình này, nút con trỏ đến nút cha thay vì ngược lại. Như bảng trên, mỗi nhân viên có thể sở hữu một số thiết bị máy tính, nhưng mỗi thiết bị máy tính có thể chỉ có một nhân viên sở hữu.

Xét cấu trúc sau: 

Trong bảng này, "con" có cùng kiểu dữ liệu với "cha". Hệ thống phân cấp cho biết Mã nhân viên 10 là cấp trên của 20, còn 30 và 40 có cấp trên là 20, thể hiện trong cột "Cấp trên". Trong thuật ngữ của cơ sở dữ liệu quan hệ, cột Cấp trên là một khóa ngoại tham chiếu đến cột Mã nhân viên. Nếu kiểu dữ liệu "con" khác "cha", phần con sẽ nằm ở một bảng khác, nhưng vẫn sẽ là một khóa ngoại tham chiếu đến cột Mã nhân viên của bảng nhân viên.

Mô hình đơn giản này thường được gọi là mô hình danh sách kề, do Tiến sĩ Edgar F. Codd giới thiệu sau những phê bình cho rằng mô hình quan hệ không thể mô hình hóa dữ liệu phân cấp. Tuy vậy, mô hình này chỉ là một trường hợp đặc biệt của cách biểu diễn danh sách kề điển hình cho một đồ thị.

## Xem thêm

* Cấu trúc cây
* Truy vấn phân cấp
* Phân cụm phân cấp

## Tham khảo

## Liên kết ngoài

* Troels' links: Dữ liệu phân cấp trong các RDBMS (Hệ thống Quản lý Cơ sở dữ liệu Quan hệ)
* Quản lý dữ liệu phân cấp trong MySQL
* Dữ liệu phân cấp trong MySQL, lấy dữ liệu bảng cha và bảng con chỉ trong một truy vấn
* Tạo biểu đồ phân cấp từ cơ sở dữ liệu phân cấp