Skip to content

Chương 1: Tổng Quan¤


1. Dữ liệu (Data)¤

Dữ liệu là mô tả hình thức về những sự kiện, khái niệm trong thế giới thực. Dữ liệu có thể là con số, văn bản, hình ảnh, âm thanh, v.v. — bất kỳ thứ gì có thể được lưu trữ và xử lý bởi máy tính.

Phân biệt Data → Information → Knowledge → Wisdom:

  • Data (Dữ liệu): Các sự kiện rời rạc, khách quan. VD: "SV001", "Nguyễn Minh", "1/2/1987"
  • Information (Thông tin): Dữ liệu đã được phân tích, kết nối có ý nghĩa. VD: "Sinh viên Nguyễn Minh sinh ngày ½/1987"
  • Knowledge (Tri thức): Thông tin được đặt trong bối cảnh, giúp ra quyết định.
  • Wisdom (Trí tuệ): Tri thức được áp dụng với giá trị và kinh nghiệm thực tiễn.

Ví dụ dữ liệu thực tế: - Thông tin cá nhân của sinh viên - Bảng điểm của sinh viên - Hóa đơn bán hàng - Báo cáo doanh thu bán hàng


2. Hệ thống tập tin (File System)¤

Hệ thống tập tin là tập hợp các tập tin riêng lẻ, mỗi tập tin phục vụ riêng cho một chương trình ứng dụng cụ thể.

Text Only
Chương trình ứng dụng 1 ──┐
Chương trình ứng dụng 2 ──┤──▶ Hệ thống quản lý tập tin ──▶ Tập tin 1, 2, 3
Chương trình ứng dụng 3 ──┘

Ưu điểm¤

  • Triển khai ứng dụng nhanh chóng
  • Đáp ứng nhanh vì chỉ phục vụ mục đích hạn hẹp, cụ thể

Nhược điểm¤

Hạn chế của File System

  • Trùng lắp dữ liệu: Cùng một thông tin được lưu ở nhiều tập tin → lãng phí bộ nhớ, dữ liệu không nhất quán (inconsistency).
  • Khó truy xuất thông tin: Mỗi tập tin có cấu trúc riêng, không có cơ chế truy vấn tổng hợp.
  • Chi phí cao: Bảo trì nhiều tập tin, nhiều chương trình riêng biệt.
  • Chia sẻ dữ liệu hạn chế: Một ứng dụng khó truy cập dữ liệu của ứng dụng khác.

3. Cơ sở dữ liệu (Database)¤

Định nghĩa: Cơ sở dữ liệu (CSDL) là một hệ thống các thông tin có cấu trúc, được lưu trữ trên các thiết bị lưu trữ nhằm thỏa mãn yêu cầu khai thác thông tin đồng thời của nhiều người sử dụng hay nhiều chương trình ứng dụng với những mục đích khác nhau.

Ưu điểm¤

Lợi ích của CSDL

  • Giảm trùng lắp: Dữ liệu được lưu tập trung, giảm thiểu dư thừa, đảm bảo tính nhất quán và toàn vẹn.
  • Truy xuất đa dạng: Hỗ trợ nhiều cách truy vấn khác nhau trên cùng một tập dữ liệu.
  • Chia sẻ dữ liệu: Nhiều người dùng, nhiều ứng dụng có thể cùng khai thác CSDL.

Các vấn đề cần giải quyết¤

Thách thức khi xây dựng CSDL

  • Cập nhật thường xuyên: Dữ liệu phải luôn phản ánh đúng thực tế.
  • Bảo mật & phân quyền: Ai được xem, ai được sửa, ai được xóa?
  • Tranh chấp dữ liệu (Concurrency): Nhiều người cùng truy cập/sửa một dữ liệu → cần xử lý đồng thời an toàn.
  • Sao lưu & phục hồi (Backup & Recovery): Đảm bảo dữ liệu không bị mất khi có sự cố.

4. Các đối tượng sử dụng CSDL¤

graph TD
    A[CSDL] --> B[Người dùng cuối - End User]
    A --> C[Chuyên viên tin học - Developer]
    A --> D[Quản trị viên - DBA]

    B --> B1["Không chuyên CNTT, cần công cụ hỗ trợ<br/>(y tế, trường học, kinh doanh...)"]
    C --> C1[Xây dựng ứng dụng quản lý]
    D --> D1[Tổ chức CSDL, phân quyền,<br/>sao lưu, giải quyết tranh chấp]
Hold "Alt" / "Option" to enable pan & zoom

Chi tiết từng đối tượng¤

Người dùng cuối (End User)
  • Không có chuyên môn sâu về tin học hay CSDL.
  • Sử dụng CSDL thông qua các công cụ/giao diện được lập sẵn.
  • VD: bác sĩ tra cứu hồ sơ bệnh nhân, giáo viên nhập điểm sinh viên, nhân viên kế toán lập hóa đơn.
Chuyên viên tin học (Developer)
  • Hiểu cả lĩnh vực nghiệp vụ lẫn kỹ thuật.
  • Xây dựng ứng dụng, viết truy vấn, thiết kế giao diện để phục vụ người dùng cuối.
Quản trị viên CSDL (Database Administrator - DBA)
  • Tổ chức CSDL: Thiết kế cấu trúc, phân hoạch dữ liệu.
  • Bảo mật & phân quyền: Cấp/thu hồi quyền truy cập cho từng người dùng.
  • Sao lưu & phục hồi: Lên lịch backup, xử lý khi có sự cố.
  • Giải quyết tranh chấp: Xử lý xung đột khi nhiều người cùng thao tác trên dữ liệu.

5. Hệ quản trị CSDL (DBMS)¤

DBMS – Database Management System là tập hợp các chương trình cho phép người sử dụng tạo ra và duy trì CSDL. DBMS đóng vai trò trung gian giữa người dùng/ứng dụng và dữ liệu thực sự được lưu trên đĩa.

Ba chức năng cốt lõi¤

Chức năng Mô tả Ví dụ
Định nghĩa (Define) Khai báo cấu trúc, kiểu dữ liệu, ràng buộc Tạo bảng, định nghĩa khóa chính
Xây dựng (Build) Lưu trữ dữ liệu vào CSDL Chèn bản ghi vào bảng
Xử lý (Manipulate) Truy vấn, cập nhật, xuất báo cáo SELECT, INSERT, UPDATE, DELETE

Yêu cầu của một DBMS¤

Một DBMS phải có

  • Ngôn ngữ giao tiếp giữa người dùng và CSDL (DDL, DML, SQL, DCL)
  • Từ điển dữ liệu (Data Dictionary): metadata mô tả cấu trúc CSDL
  • Cơ chế bảo mật: xác thực và phân quyền
  • Cơ chế xử lý tranh chấp (Concurrency Control)
  • Cơ chế sao lưu & phục hồi (Backup & Restore)
  • Tính độc lập giữa dữ liệu và chương trình: thay đổi cấu trúc lưu trữ không ảnh hưởng ứng dụng

Các ngôn ngữ giao tiếp trong DBMS¤

graph LR
    SQL_Family["Ngôn ngữ DBMS"] --> DDL
    SQL_Family --> DML
    SQL_Family --> SQL_Q
    SQL_Family --> DCL

    DDL["DDL – Data Definition Language\nKhai báo cấu trúc, mối liên hệ, ràng buộc"]
    DML["DML – Data Manipulation Language\nThêm, Xóa, Sửa dữ liệu"]
    SQL_Q["SQL – Structured Query Language\nTruy vấn thông tin"]
    DCL["DCL – Data Control Language\nQuản lý bảo mật, phân quyền"]
Hold "Alt" / "Option" to enable pan & zoom

Ví dụ minh họa:

SQL
-- DDL: Tạo bảng
CREATE TABLE SINHVIEN (
    MaSV VARCHAR(10) PRIMARY KEY,
    HoTen NVARCHAR(100),
    GioiTinh NVARCHAR(3),
    NgSinh DATE,
    NoiSinh NVARCHAR(100)
);

-- DML: Thêm dữ liệu
INSERT INTO SINHVIEN VALUES ('SV001', N'Nguyễn Minh', N'Nam', '1987-02-01', N'Tp. Hồ Chí Minh');

-- SQL: Truy vấn
SELECT HoTen, NgSinh FROM SINHVIEN WHERE GioiTinh = N'Nam';

-- DCL: Phân quyền
GRANT SELECT ON SINHVIEN TO user_readonly;

Các DBMS phổ biến¤

Relational DBMS (dựa trên mô hình quan hệ)

  • Microsoft SQL Server, MySQL, Oracle, Microsoft Access, DB2, Visual FoxPro

NoSQL (phi quan hệ)

  • Key-Value: Redis, Membase
  • Document: MongoDB, CouchDB
  • Column-family: Cassandra
  • Graph: Neo4j

NewSQL (kết hợp SQL + khả năng mở rộng của NoSQL)

  • Apache Trafodion, CockroachDB, VoltDB, NuoDB

6. Các mức biểu diễn một CSDL¤

Một CSDL được nhìn nhận ở 3 mức khác nhau, tương ứng với 3 nhóm đối tượng khác nhau:

graph TD
    World["🌍 Thế giới thực"]
    World --> Concept["Mức quan niệm / Logic\n(Conceptual / Logical Level)"]
    Concept --> External["Mức ngoài\n(External Level / View)"]
    Concept --> Physical["Mức trong\n(Internal / Physical Level)"]

    External --> User1["Người dùng 1\n(Cấu trúc ngoài 1)"]
    External --> User2["Người dùng 2\n(Cấu trúc ngoài 2)"]
    External --> AppN["Chương trình ứng dụng n"]
    Physical --> Storage["CSDL lưu trên đĩa"]
Hold "Alt" / "Option" to enable pan & zoom

Chi tiết 3 mức¤

Mức trong – Physical Level (Mức vật lý)
  • Đây là mức thấp nhất, mô tả cách dữ liệu thực sự được lưu trữ trên thiết bị vật lý.
  • Giải quyết các câu hỏi:
    • Dữ liệu gì cần lưu?
    • Lưu ở đâu, dưới dạng nào?
    • Cần chỉ mục (index) gì để tăng tốc truy vấn?
    • Truy xuất tuần tự hay ngẫu nhiên?
  • Đây là lĩnh vực của Quản trị viên CSDL (DBA).
Mức quan niệm – Conceptual / Logical Level
  • Mô tả toàn bộ CSDL ở mức trừu tượng, không quan tâm đến cách lưu trữ vật lý.
  • Giải quyết câu hỏi:
    • Cần lưu bao nhiêu loại dữ liệu?
    • Các loại dữ liệu đó là gì?
    • Mối quan hệ giữa chúng như thế nào?
  • Đây là nơi các mô hình dữ liệu (ER, quan hệ...) được áp dụng.
Mức ngoài – External Level (View)
  • Là mức cao nhất, mỗi người dùng/ứng dụng chỉ nhìn thấy phần dữ liệu liên quan đến mình.
  • VD: Kế toán chỉ thấy bảng lương và hóa đơn; sinh viên chỉ thấy bảng điểm của mình.
  • Giúp bảo mật (ẩn dữ liệu nhạy cảm) và đơn giản hóa giao diện người dùng.

7. Các mô hình dữ liệu¤

Mô hình dữ liệu là sự trừu tượng hóa của môi trường thực, biểu diễn dữ liệu ở mức quan niệm. Có 5 mô hình chính:


7.1 Mô hình dữ liệu mạng (Network Data Model)¤

Được xây dựng bởi Honeywell (1964–1965). Dữ liệu được biểu diễn bằng đồ thị có hướng.

Các thành phần:

Thành phần Mô tả Ví dụ
Mẫu tin (Record) Mô tả 1 đối tượng cụ thể ('NV001','Nguyen Lam','Nam','10/10/1970','Dong Nai')
Loại mẫu tin Tập các mẫu tin cùng tính chất NHANVIEN, CONGVIEC
Loại liên hệ (Set type) Kết nối giữa loại mẫu tin chủ và thành viên ThamGia
Bản số (Cardinality) Số lượng mẫu tin tham gia liên hệ 1:1, 1:n, n:1

Ví dụ đồ thị mạng:

graph TD
    PHONG["PHONG"] -->|"gồm (1:n)"| NHANVIEN["NHANVIEN"]
    NHANVIEN -->|"có (1:1)"| LYLICH["LYLICH"]
    NHANVIEN -->|"quản lý trực tiếp (n:1)"| NHANVIEN
    NHANVIEN -->|"cùng làm (1:n)"| CONGVIEC["CONGVIEC"]
Hold "Alt" / "Option" to enable pan & zoom

Nhận xét

  • Tương đối đơn giản, dễ sử dụng cho CSDL nhỏ.
  • Không thích hợp cho CSDL quy mô lớn.
  • Khả năng diễn đạt ngữ nghĩa kém.

7.2 Mô hình dữ liệu phân cấp (Hierarchical Data Model)¤

Được xây dựng bởi IBM và North American Rockwell (~1965). Dữ liệu tổ chức theo dạng cây phân cấp.

Đặc điểm: - Mỗi nút của cây biểu diễn một loại thực thể. - Mối quan hệ từ nút cha → nút con luôn là 1:n. - Mối quan hệ từ nút con → nút cha luôn là 1:1. - Giữa hai loại mẫu tin chỉ tồn tại một mối quan hệ duy nhất.

Ví dụ – Hệ thống quản lý hành chính dân số:

graph TD
    QG["TOÀN QUỐC"]
    QG --> HN["HÀ NỘI"]
    QG --> HCM["TP.HCM"]
    QG --> DN["ĐÀ NẴNG"]
    HCM --> Q1["QUẬN 1"]
    HCM --> Q2["QUẬN 2"]
    Q1 --> P1["P. ĐA KAO"]
    Q1 --> P2["P. TÂN ĐỊNH"]
    P1 --> DB1["ĐỊA BÀN 1"]
    DB1 --> H1["HỘ 1"]
    DB1 --> H2["HỘ 2"]
    H1 --> NK1["NHÂN KHẨU 1"]
    H1 --> NK2["NHÂN KHẨU 2"]
Hold "Alt" / "Option" to enable pan & zoom

Nhận xét

  • Đơn giản, tìm kiếm nhanh với dữ liệu có tính phân cấp tự nhiên.
  • Khó biểu diễn mối quan hệ n:n.
  • Không thích hợp cho CSDL quy mô lớn.

7.3 Mô hình thực thể mối kết hợp (ER Model)¤

Được Peter Pin Shan Chen giới thiệu năm 1976. Đây là mô hình được dùng rộng rãi nhất trong thiết kế CSDL ở mức quan niệm.

Nhìn thế giới thực như tập hợp các thực thểmối quan hệ giữa chúng.


7.3.1 Loại thực thể (Entity Type)¤

Là những loại đối tượng/sự vật của thế giới thực tồn tại cụ thể, cần được quản lý.

VD: SINHVIEN, LOP, MONHOC, NHANVIEN, PHONGBAN

Ký hiệu: Hình chữ nhật.


7.3.2 Thực thể (Entity)¤

Là một thể hiện cụ thể của một loại thực thể.

VD: Loại thực thể SINHVIEN có các thực thể: - ('SV001', 'Nguyễn Minh', 'Nam', '1/2/1987', 'Tp. HCM') - ('SV002', 'Trần Năm', 'Nam', '13/2/1987', 'Đồng Nai')


7.3.3 Thuộc tính (Attribute)¤

Là những tính chất đặc trưng của loại thực thể. Có 3 loại:

Thuộc tính đơn trị (Simple Attribute)
  • Chỉ có một giá trị, không thể chia nhỏ hơn.
  • VD: MaSV, TenMonHoc, SoTC
Thuộc tính đa hợp (Composite Attribute)
  • Được tạo thành từ nhiều thành phần con.
  • VD: DiaChi = (SoNha, Duong, Phuong, Quan, Tp_Tinh)
  • VD: HoTen = (Ho, TenLot, Ten)
Thuộc tính đa trị (Multi-valued Attribute)
  • Một thực thể có thể có nhiều giá trị cho thuộc tính này.
  • VD: {BangCap} — một người có thể có nhiều bằng cấp.
  • Có thể kết hợp đa hợp + đa trị: {BangCap(NoiCap, NamCap, KetQua, ChuyenNganh)}
  • Ký hiệu: Dùng dấu {} bao quanh.

7.3.4 Khóa (Key)¤

Là thuộc tính (hoặc tập thuộc tính) mà giá trị của nó xác định duy nhất một thực thể trong loại thực thể.

Lưu ý về khóa

  • Mỗi loại thực thể có ít nhất 1 khóa.
  • Một khóa có thể gồm 1 hoặc nhiều thuộc tính (khóa ghép).
  • Một loại thực thể có thể có nhiều khóa, cần chọn 1 làm khóa chính (Primary Key).
  • VD: SINHVIEN có thể có 2 khóa: MaSVCMND → chọn MaSV làm khóa chính.

Ký hiệu: Thuộc tính khóa được gạch chân.


7.3.5 Loại mối kết hợp (Relationship Type)¤

Là sự liên kết giữa hai hay nhiều loại thực thể.

Ký hiệu: Hình thoi (hoặc oval).

Ví dụ: SINHVIEN —[Thuộc]— LOP

Giữa hai loại thực thể có thể tồn tại nhiều hơn một loại mối kết hợp. VD: SINHVIENLOP có thể có: ThuộcLà lớp trưởng.


7.3.6 Số ngôi (Degree)¤

Là số lượng loại thực thể tham gia vào một loại mối kết hợp.

graph LR
    SV["SINHVIEN"] --- Thuoc{"Thuộc"} --- LOP["LOP"]
Hold "Alt" / "Option" to enable pan & zoom

Mối kết hợp Thuộc: 2 ngôi (binary)

graph LR
    GV["GIANGVIEN"] --- Day{"Dạy"} --- MH["MONHOC"]
    Day --- LP["LOP"]
Hold "Alt" / "Option" to enable pan & zoom

Mối kết hợp Dạy: 3 ngôi (ternary)


7.3.7 Bản số (Cardinality)¤

Thể hiện số lượng tối thiểu và tối đa các thực thể tham gia vào mối kết hợp.

Ký hiệu: (min, max)

Bản số Ý nghĩa
(1,1) Tham gia đúng 1 lần
(0,1) Có thể không tham gia hoặc tham gia tối đa 1 lần
(1,n) Tham gia ít nhất 1, nhiều không giới hạn
(0,n) Có thể không tham gia, hoặc nhiều không giới hạn

Ví dụ:

erDiagram
    SINHVIEN }o--|| LOP : "Thuộc (1,1)-(1,n)"
    SINHVIEN |o--o| LOP : "Là lớp trưởng (0,1)-(1,1)"
    HOADON }|--|{ SANPHAM : "ChiTiet (1,n)-(0,n)"
Hold "Alt" / "Option" to enable pan & zoom

7.4 Mô hình ER mở rộng (Extended ER)¤

Chuyên biệt hóa / Tổng quát hóa (Specialization / Generalization)¤

Tương tự kế thừa trong OOP: loại thực thể con kế thừa thuộc tính của loại thực thể cha, và có thêm thuộc tính riêng.

graph TD
    NV["NHANVIEN\n(MaNV, HoTen, GioiTinh)"] -->|Is a| QL["QUANLY\n(ChucVu)"]
    NV -->|Is a| CN["CONGNHAN\n(Bac)"]

    SP["SANPHAM\n(MaSP, TenSP, Gia)"] -->|Is a| DT["DIENTHOAI\n(TheSim)"]
    SP -->|Is a| LT["LAPTOP\n(ManHinh, RAM, CPU, OCung, VGA)"]
Hold "Alt" / "Option" to enable pan & zoom

Mối kết hợp đệ quy (Recursive Relationship)¤

Loại thực thể có mối kết hợp với chính nó.

VD: Mỗi nhân viên có một người quản lý trực tiếp, và người quản lý đó cũng là một nhân viên.

graph LR
    NV["NHANVIEN"] -->|"Quản lý (0,1)/(0,n)"| NV
Hold "Alt" / "Option" to enable pan & zoom

Loại thực thể yếu (Weak Entity)¤

Loại thực thể yếu

  • Là loại thực thể không có khóa riêng.
  • Phải phụ thuộc vào một loại thực thể chủ (strong entity) để xác định.
  • Ký hiệu: Hình chữ nhật đôi.

VD: THANNHAN của NHANVIEN — thân nhân không có mã định danh riêng, phải gắn với nhân viên cụ thể.

erDiagram
    NHANVIEN ||--|{ THANNHAN : "Có (1,n)-(1,1)"
    THANNHAN {
        string TenTN
        string QuanHe
        string GioiTinh
        date NgSinh
    }
Hold "Alt" / "Option" to enable pan & zoom

7.5 Mô hình dữ liệu quan hệ (Relational Data Model)¤

Là mô hình được sử dụng phổ biến nhất hiện nay. Dữ liệu được tổ chức thành các bảng (table/relation).

Ví dụ:

Text Only
NHANVIEN    (MaNV, HoTen, NgaySinh, DiaChi)
KHACHHANG   (MaKH, HoTen, NgaySinh, DiaChi, DoanhSo)
SANPHAM     (MaSP, TenSP, NuocSX, DonGia)
HOADON      (SoHD, NgayHD, MaKH, TriGia, MaNV)
CTHD        (SoHD, MaSP, SL)

Các bảng liên kết với nhau qua khóa ngoại (Foreign Key): - HOADON.MaKHKHACHHANG.MaKH - HOADON.MaNVNHANVIEN.MaNV - CTHD.SoHDHOADON.SoHD - CTHD.MaSPSANPHAM.MaSP


7.6 Mô hình dữ liệu hướng đối tượng (Object-Oriented Data Model)¤

Ra đời vào cuối những năm 1980 – đầu 1990, dựa trên cách tiếp cận hướng đối tượng.

Các khái niệm cốt lõi: Lớp (Class), Thuộc tính (Attribute), Phương thức (Method/Operator).

Bốn đặc trưng:

Đặc trưng Mô tả
Kế thừa (Inheritance) Lớp con kế thừa thuộc tính và phương thức của lớp cha
Đóng gói (Encapsulation) Ẩn chi tiết cài đặt, chỉ lộ giao diện
Đa hình (Polymorphism) Cùng một phương thức có thể hành xử khác nhau tùy lớp
Tái sử dụng (Reusability) Dễ dàng tái sử dụng các lớp đã định nghĩa

Tổng kết¤

mindmap
  root((Cơ sở dữ liệu - Chương 1))
    Khái niệm cơ bản
      Dữ liệu
      Hệ thống tập tin
      Định nghĩa CSDL
      Đối tượng sử dụng
      DBMS
      3 mức biểu diễn
    Mô hình dữ liệu
      Mạng
      Phân cấp
      ER Model
        Thực thể
        Thuộc tính
        Mối kết hợp
        Bản số
        ER mở rộng
      Quan hệ
      Hướng đối tượng
Hold "Alt" / "Option" to enable pan & zoom