Giáo trình Cơ sở dữ liệu với mục tiêu giúp các bạn có thể hiểu về các mô hình dữ liệu và các công cụ mô tả dữ liệu; hiểu về các khái niệm, tính năng và các phương thức xử lý dữ liệu của hệ quản trị cơ sở dữ liệu SQL. Mời các bạn cùng tham khảo!
NGUYÊN NHÂN RA ĐỜI CỦA MÔ HÌNH QUAN HỆ
Trong suốt nhiều năm, công nghệ tính toán và thông tin đã tiến hóa từ những hệ thống lớn, đắt đỏ và độc quyền sang các hệ thống mở, mạnh mẽ và giá cả phải chăng Sự chuyển mình này đã mang lại lợi ích đáng kể cho người dùng cuối, nhờ vào sự phát triển của các ứng dụng số như xử lý văn bản, bảng tính điện tử, xuất bản văn phòng, hệ quản lý cơ sở dữ liệu và phần mềm trợ giúp công nghệ.
Trước khi máy tính hóa cơ sở dữ liệu ra đời, dữ liệu được lưu trữ dưới dạng nhiều tập tin riêng biệt trong hệ tập tin cũ, được xử lý bằng các ngôn ngữ lập trình như COBOL, FORTRAN, PASCAL và BASIC Mỗi ứng dụng như hệ thống tính lương, kho, hay kế toán đều có tập tin riêng chứa dữ liệu, dẫn đến ba vấn đề chính: khó khăn trong việc quản lý dữ liệu, khả năng truy xuất thông tin hạn chế, và sự không nhất quán trong dữ liệu giữa các ứng dụng.
Cấu trúc luận lý và cấu trúc vật lý của các tập tin và chương trình ứng dụng có sự liên kết chặt chẽ, điều này gây khó khăn trong việc phát triển các ứng dụng Hệ quả là quá trình này tốn nhiều thời gian và chi phí, dẫn đến việc bảo trì hệ thống trở nên tốn kém hơn.
Sự dư thừa dữ liệu lớn do trùng lặp các tập tin trong nhiều ứng dụng gây ra những vấn đề nghiêm trọng, bao gồm dữ liệu không nhất quán, lãng phí không gian đĩa, gia tăng thời gian bảo trì và lưu trữ các tập tin.
Quản trị không chú trọng đến bảo mật và tổ chức dữ liệu một cách thống nhất có thể dẫn đến tình trạng trùng lặp dữ liệu Ví dụ điển hình là trong hệ thống quản lý nguồn nhân lực, nơi có ba hệ thống chính hoạt động độc lập.
Hệ lương, hệ này duy trì ngày công và lương cho tất cả nhân viên
Hệ nhân sự, hệ này duy trì lý lịch cá nhân, dữ liệu về tổ chức, công việc đào tạo và vị trí thăng tiến
Hệ hưu, hệ này quản trị các qui tắc liên quan đến nghỉ hưu, loại nghỉ hưu Chi tiết về hưu của từng nhân viên
Hệ lương, Hệ nhân sự và Hệ hưu đều quản lý thông tin nhân viên nhưng thuộc về các phòng ban khác nhau, dẫn đến việc dữ liệu bị phân tán và trùng lặp Phòng tài chính quản lý Hệ lương, trong khi Hệ nhân sự và Hệ hưu thuộc về phòng tổ chức Sự tách biệt này gây khó khăn trong việc quản lý dữ liệu chung về nhân viên, tạo ra sự không hiệu quả trong quy trình làm việc.
- Người sử dụng có ít khả năng khai thác trực tiếp dữ liệu.
HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU (Data Base Management System)
Để giải quyết hiệu quả các vấn đề liên quan đến tổ chức cơ sở dữ liệu (CSDL), cần sử dụng phần mềm chuyên dụng gọi là hệ quản trị CSDL Các hệ quản trị này hỗ trợ các nhà phân tích thiết kế và người khai thác CSDL Hiện nay, thị trường phần mềm cung cấp nhiều hệ quản trị CSDL với nhiều tiện ích, bao gồm MS Access, Visual Foxpro, SQL Server và Oracle.
Mỗi hệ quản trị cơ sở dữ liệu (CSDL) được xây dựng dựa trên một mô hình dữ liệu cụ thể, và bất kể mô hình nào được áp dụng, hệ thống này cần phải đáp ứng đầy đủ các yếu tố cần thiết để hoạt động hiệu quả.
- Ngôn ngữ giao tiếp giữa người sử dụng và CSDL, bao gồm :
Ngôn ngữ mô tả dữ liệu đóng vai trò quan trọng trong việc khai báo cấu trúc của cơ sở dữ liệu, xác định các mối quan hệ giữa các dữ liệu và thiết lập các quy tắc quản lý áp dụng cho dữ liệu đó.
+ Ngôn ngữ thao tác dữ liệu: Cho phép người sử dụng có thể cập nhật dữ liệu
+ Ngôn ngữ truy vấn dữ liệu: Cho phép người khai thác sử dụng để truy vấn các thông tin cần thiết trong CSDL
Ngôn ngữ quản lý dữ liệu cho phép quản trị viên hệ thống điều chỉnh cấu trúc các bảng dữ liệu, thiết lập bảo mật thông tin và cấp quyền truy cập cơ sở dữ liệu cho người dùng.
+ Dùng để mô tả các ánh xạ liên kết, ghi nhận các thành phần cấu trúc của CSDL, các chương trình ứng dụng, mật mã, quyền hạn sử dụng,…
- Cơ chế giải quyết vấn đề tranh chấp dữ liệu:
Mỗi hệ quản trị cơ sở dữ liệu (CSDL) có thể thiết lập cơ chế riêng để xử lý các vấn đề liên quan Một trong những biện pháp phổ biến là cấp quyền ưu tiên cho người dùng, nhằm đảm bảo an toàn và hiệu quả trong việc quản lý dữ liệu.
Để quản lý hiệu quả việc truy xuất dữ liệu, cần thiết lập 10 tiêu chí cho từng người sử dụng Thứ hai, cần đánh dấu yêu cầu truy xuất dữ liệu và phân chia thời gian, đảm bảo rằng người nào có yêu cầu trước sẽ được quyền truy xuất dữ liệu trước.
- Hệ quản trị CSDL cũng phải có cơ chế sao lưu (backup) và phục hồi (restore) dữ liệu khi có sự cố xảy ra
Sau một khoảng thời gian nhất định, hệ quản trị cơ sở dữ liệu sẽ tự động tạo ra một bản sao của cơ sở dữ liệu Tuy nhiên, phương pháp này có thể tốn kém, đặc biệt là đối với các cơ sở dữ liệu lớn.
- Hệ quản trị CSDL phải cung cấp một giao diện thân thiện, dễ sử dụng
- HQTCSDL biến đổi CSDL vật lý thành CSDL logic
Dựa vào cách tổ chức dữ liệu, HQTCSDL đƣợc chia thành năm loại:
Loại phân cấp nhƣ hệ IMS của IBM
Loại mạng nhƣ IDMS của Cullinet Software
Loại tập tin đảo nhƣ ADABAS của Software AG
Loại quan hệ nhƣ nhƣ ORACLE của Oracle, DB2 của IBM, ACCESS của Microsoft Access
+ Loại đối tƣợng là một tiếp cận khá mới trong thiết kế HQTCSDL và việc sử dụng loại này sớm trở nên phổ biến
Hiện tại, loại HQTCSDL chính đƣợc sử dụng trong công nghệ là loại HQTCSDL quan hệ (RDBMS) Loại này đã chiếm lĩnh trong công nghệ trên
10-15 năm cuối cùng khi đánh bật loại HQTCSDL phân cấp và gần đây là HQTCSDL mạng.
MÔ HÌNH QUAN HỆ
Mô hình quan hệ là gì?
Mô hình Cơ sở dữ liệu Quan hệ (gọi tắt là Mô hình Quan hệ) do E.F Codd đề xuất năm 1971 Mô hình này bao gồm:
- Một hệ thống các ký hiệu để mô tả dữ liệu dưới dạng dòng và cột như quan hệ, bộ, thuộc tính, khóa chính, khoá ngoại,
- Một tập hợp các phép toán thao tác trên dữ liệu nhƣ phép toán tập hợp, phép toán quan hệ
- Ràng buộc toàn vẹn quan hệ
Các hệ HQTCSDLQH ngày nay đƣợc xây dựng dựa vào lý thuyết của mô hình quan hệ
Môn học này nhằm trang bị cho sinh viên kiến thức về kiến trúc tổng quát của mô hình quan hệ, từ đó giúp họ áp dụng hiệu quả trong việc lập mô hình dữ liệu quan hệ, phục vụ cho việc lưu trữ và khai thác thông tin.
Quản lý điểm thi của sinh viên gặp khó khăn khi lưu trữ dữ liệu dưới dạng bảng với các cột MASV, HOTEN, MONHOC, TENKHOA, DIEMTHI, vì các giá trị trong các cột HOTEN, MONHOC và TENKHOA thường bị trùng lắp Sự trùng lặp này gây ra nhiều vấn đề trong việc xử lý và phân tích dữ liệu.
- Ta không thể lưu trữ một sinh viên mới khi sinh viên này chưa có điểm thi
Khi cần sửa đổi họ tên của sinh viên, việc cập nhật tất cả các thông tin liên quan là rất quan trọng để tránh tình trạng dữ liệu không nhất quán.
- Khi có nhu cầu xóa điểm thi của một sinh viên kéo theo khả năng xóa luôn họ tên sinh viên đó
Để tuân thủ mô hình quan hệ trong lưu trữ dữ liệu, cần thay thế MONHOC bằng MAMH và TENKHOA bằng MAKHOA, đồng thời phân chia bảng dữ liệu lớn thành nhiều bảng con.
Thuộc Tính(attribte)
Thuộc tính là những đặc điểm riêng biệt của một đối tượng trong mô hình thực thể kết hợp, với mỗi thuộc tính mang một tên gọi cụ thể và phải thuộc về một kiểu dữ liệu nhất định Kiểu dữ liệu (data type) xác định loại thông tin mà thuộc tính đó có thể chứa.
Các thuộc tính được phân loại dựa trên tên gọi và kiểu dữ liệu của chúng, bao gồm số, chuỗi, ngày tháng, logic và hình ảnh Kiểu dữ liệu có thể là vô hướng hoặc có cấu trúc Nếu thuộc tính thuộc kiểu dữ liệu vô hướng, nó được gọi là thuộc tính đơn hay thuộc tính nguyên tố; ngược lại, nếu thuộc tính thuộc kiểu dữ liệu có cấu trúc, nó không được coi là thuộc tính nguyên tố.
Sinh viên Nguyễn Văn Thành có các thuộc tính như họ và tên, mã số sinh viên thuộc kiểu chuỗi, ngày sinh thuộc kiểu ngày tháng, hộ khẩu thường trú cũng thuộc kiểu chuỗi, và hình ảnh thuộc kiểu hình ảnh.
Mỗi thuộc tính trong cơ sở dữ liệu thường chỉ nhận giá trị từ một tập con nhất định, được gọi là miền giá trị Ví dụ, thuộc tính giới tính có miền giá trị là {nam, nữ}, thuộc tính màu da bao gồm {da trắng, da vàng, da đen, da đỏ}, và thuộc tính điểm thi có miền giá trị là các số trong khoảng {0; 1; 2; …; 10}.
Khi đặt tên cho các thuộc tính, cần lưu ý rằng chúng thường được ký hiệu bằng các chữ cái in hoa đầu tiên trong bảng chữ cái Latin như A, B, C, D, v.v Các chữ cái in hoa như X, Y, Z, W thường đại diện cho nhóm thuộc tính Đôi khi, các ký hiệu chữ cái với chỉ số như A1, A2, , An được sử dụng để chỉ các thuộc tính trong trường hợp tổng quát hoặc để đề cập đến số lượng thuộc tính Tên thuộc tính nên được chọn một cách gợi nhớ, không quá dài để tránh làm khó khăn trong việc viết câu lệnh truy vấn, nhưng cũng không nên quá ngắn để đảm bảo ngữ nghĩa được thể hiện rõ ràng Đặc biệt, cần tránh đặt trùng tên cho hai thuộc tính có ngữ nghĩa khác nhau thuộc về hai đối tượng khác nhau.
Trong các hệ quản trị cơ sở dữ liệu, giá trị rỗng (NULL) thường được thêm vào miền giá trị của các thuộc tính Giá trị này có thể biểu thị cho một giá trị không xác định hoặc một giá trị chưa được xác định tại thời điểm nhập liệu, nhưng có khả năng sẽ được xác định sau này.
Lƣợc đồ quan hệ (relation schema)
Lược đồ quan hệ là tập hợp tất cả các thuộc tính cần quản lý của một đối tượng cùng với các mối liên hệ giữa chúng Một lược đồ quan hệ Q với tập thuộc tính {A1, A2, , An} được ký hiệu là Q(A1, A2, , An) và Q+ = {A1, A2, , An} Ví dụ, lược đồ quan hệ Sinh viên bao gồm các thuộc tính đã được liệt kê trong ví dụ 1.1.
Sinhvien( MASV, HOTENSV, NU, NGAYSINH, NOISINH,TINH, MALOP )
Khi thiết lập một lược đồ quan hệ, người thiết kế thường gán cho nó một ý nghĩa cụ thể, được gọi là tân từ của lược đồ Ví dụ, tân từ của lược đồ quan hệ Sinhvien là: "Mỗi sinh viên có một MASV duy nhất, và mỗi MASV xác định các thuộc tính khác của sinh viên như Họ tên, Giới tính, Ngày sinh, Nơi sinh, Tỉnh, và Mã lớp."
Khi phát biểu tân từ cho một lược đồ quan hệ, người thiết kế cần mô tả rõ ràng ý nghĩa để tránh hiểu nhầm Từ tân từ này, người khác có thể xác định tập khoá và siêu khoá của lược đồ quan hệ, điều này sẽ được trình bày chi tiết trong các mục tiếp theo.
Nhiều lƣợc đồ quan hệ cùng nằm trong một hệ thống thông tin đƣợc gọi là một lƣợc đồ cơ sở dữ liệu
Khái niệm lƣợc đồ quan hệ ứng với khái niệm loại thực thể ở mô hình thực thể kết hợp
Ví dụ lƣợc đồ cơ sở dữ liệu để quản lý điểm sinh viên có thể gồm các lƣợc đồ quan hệ sau:
Sv (MASV, HOSV,TENSV, NU, NGAYSINH, MALOP, TINH, HOCBONG) Lop (MALOP,TENLOP,SISO,MAKHOA)
Phần giải thích các thuộc tính:
MASV Mã sinh viên HOTEN Tên sinh viên
TENLOP Tên lớp SISO Sĩ số lớp MAKHOA Mã khoa HOCBONG Học bổng
TENKHOA Tên khoa SOCBGD Số cán bộ giảng dạy
Quan Hệ (relation)
Sự thể hiện của lược đồ quan hệ tại một thời điểm cụ thể được gọi là quan hệ Trên một lược đồ quan hệ, có thể xác định nhiều quan hệ khác nhau Thông thường, các ký hiệu như R, S, Q được sử dụng để chỉ các lược đồ quan hệ, trong khi các quan hệ thường được biểu thị bằng các ký hiệu như r, s, q.
Về trực quan thì quan hệ (hay bảng quan hệ) nhƣ là một bảng hai chiều gồm các dòng và các cột
Một quan hệ có n thuộc tính đƣợc gọi là quan hệ n ngôi Để chỉ quan hệ r xác định trên lƣợc đồ quan hệ Q ta có thể viết r(Q)
Bộ (Tuple)
Bộ là tập mỗi giá trị liên quan của tất cả các thuộc tính của một lƣợc đồ quan hệ
- Mỗi bộ là những thông tin về một đối tƣợng thuộc một quan hệ, bộ cũng còn đƣợc gọi là mẫu tin
Chẳng hạn quan hệ sau có 2 bộ
MASV HOTEN NU NGAYSINH MALOP TINH HB
99001 TRAN DAN THU TRU E 15-03-1977 CĐTH2B TIEN GIANG 120000
99002 NGUYEN DA THAO TRUE 25-04-1986 TCTH29C TPHCM 120000
Thường người ta dùng các chữ cái thường (như t, p, q,…) để biểu diễn các bộ Chẳng hạn để nói bộ t thuộc quan hệ r ta viết: tẻr
3 6 Siêu Khoá – Khoá (super key- key)
S là siêu khoá (super key) của Q nếu với r là quan hệ bất kỳ trên Q, t 1 , t2 là hai bộ bất kỳ thuộc r thì t 1 S t2.S
Một lƣợc đồ quan hệ có thể có một hoặc nhiều siêu khoá
Chẳng hạn lƣợc đồ quan hệ Sinhvien ở trên có các siêu khoá là: {MASV,
HOTENSV}, {MASV, HOTENSV, NU},{MASV, HOTENSV, NU, TINH },…
Siêu khoá không chứa siêu khoá nào khác được gọi là khoá chỉ định Trong lược đồ quan hệ có nhiều khoá chỉ định, khoá được chọn để cài đặt gọi là khoá chính, thường được viết tắt là khoá Ví dụ, trong lược đồ quan hệ Sinhvien, khoá chính là {MASV}.
Thường các thuộc tính khoá được gạch dưới theo kiểu liền nét
Thuộc tính khoá ngoại là thuộc tính không phải khoá của một lược đồ quan hệ, nhưng lại là khoá của một lược đồ quan hệ khác Ví dụ, MALOP là khoá ngoại trong lược đồ quan hệ Sinhvien Các thuộc tính khoá ngoại thường được gạch dưới theo kiểu không liền nét.
Sinhvien (MASV, HOTENSV, NU, NGAYSINH, TINH, MALOP)
Khóa (MALOP, TENLOP, MAKHOA) có vai trò quan trọng trong việc nhận diện một bộ trong một quan hệ Khi cần tìm một bộ t cụ thể, chỉ cần biết giá trị của thành phần khóa của t là đủ để xác định và truy xuất chính xác bộ đó trong quan hệ.
Trong thực tế đối với các loại thực thể tồn tại khách quan (ví dụ: Sinh viên,
Giảng viên, nhân viên, hàng hóa và các đối tượng khác trong thiết kế cơ sở dữ liệu thường được gán một thuộc tính giả gọi là mã số để làm khóa, như mã số sinh viên, giảng viên, nhân viên, và hàng hóa Tuy nhiên, các lược đồ quan hệ thường biểu diễn sự trừu tượng hóa và có khóa là tổ hợp của hai hoặc nhiều thuộc tính.
Nhiều hệ quản trị cơ sở dữ liệu hiện nay tự động kiểm tra tính duy nhất của khóa chính Điều này có nghĩa là khi thêm một bản ghi mới, nếu giá trị khóa chính trùng với giá trị đã tồn tại, hệ thống sẽ không cho phép thêm bản ghi đó.
15 trị khoá chính của một bộ q1 nào đó đã có trong quan hệ thì hệ thống sẽ báo lỗi và yêu cầu nhập lại một giá trị khác
- Các thuộc tính tham gia vào một khóa đƣợc gọi là thuộc tính khóa (prime key), ngƣợc lại đƣợc gọi là thuộc tính không khóa (non prime key)
Ví dụ 1.1: Ta hãy xem lƣợc đồ quan hệ sau:
Xe(SODANGBO, QUICACH, HINHDANG, MAUSAC, SOSUON, SOMAY,
Khóa chỉ định: (SODANGBO, QUOCGIA), (SOSUON), (SOMAY), (MAXE) Khóa chính: MAXE
Thuộc tính khóa: SODANGBO, QUOCGIA, SOSUON, SOMAY, MAXE
Thuộc tính không khóa: QUICACH, HINHDANG, MAUSAC
Khóa của sinh viên được xác định là MASV, trong khi khóa của môn học là MAMH Khóa của khoa được ký hiệu là MAKHOA, và khóa của kết quả là sự kết hợp giữa MASV và MAMH Đối với lớp học, khóa được gọi là MALOP, trong đó thuộc tính MAKHOA đóng vai trò là khóa ngoại.
Người ta cũng quy ước rằng:
-Trong một bộ của quan hệ các thuộc tính khoá không chứa giá trị rỗng
Người dùng không được phép thay đổi giá trị thuộc tính khoá của một bộ q Nếu cần sửa đổi giá trị này, người dùng phải huỷ bỏ bộ q hiện tại và sau đó thêm một bộ q mới với giá trị khoá đã được điều chỉnh.
MÔ HÌNH THỰC THỂ KẾT HỢP
Thực Thể (entity)
Thực thể là những sự vật có thực, có thể phân biệt và nhận diện, như sinh viên Nguyễn Văn Thành, lớp Cao Đẳng Tin Học 2A, môn học Cơ Sở Dữ Liệu, hoặc xe máy với biển số 52-0549.
Thuộc tính (attribute)
Các đặc điểm riêng của thực thể gọi là các thuộc tính
Chẳng hạn các thuộc tính của sinh viên Nguyễn Văn Thành là:mã số sinh viên, giới tính, ngày sinh, hộ khẩu thường trú, lớp đang theo học, …
(Trong giáo trình này, tên thuộc tính đƣợc viết bằng chữ in hoa)
Loại thực thể (entity type)
Một loại thực thể là tập hợp các thực thể có chung thuộc tính và cần được đặt tên có ý nghĩa Mỗi loại thực thể được biểu diễn dưới dạng hình chữ nhật.
- Ví dụ các sinh viên có mã sinh viên là “02CĐTH019”, “02CĐTH519”,
“02TCTH465”,…nhóm lại thành một loại thực thể, đƣợc đặt tên là Sinhvien chẳng hạn
Tương tự trong ứng dụng quản lý điểm của sinh viên (sẽ được trình bày ngay sau đây) ta có các loại thực thể nhƣ Monhoc, Lop, Khoa,…
- (Trong giáo trình này, tên của loại thực thể đƣợc in hoa ký tự đầu tiên, các ký tự còn lại viết thường).
Khoá (key)
Khoá của loại thực thể E là một hay một tập các thuộc tính của E có thể dùng để phân biệt hai thực thể bất kỳ của E
Ví dụ khoá của loại thực thể Sinhvien là MASV, của Lớp là MALOP, của Khoa là MAKHOA, của Monhoc là MAMH,…
Khi biểu diễn hệ thống bằng mô hình thực thể kết hợp, cần lưu ý rằng tên của các loại thực thể phải khác nhau Tập thuộc tính khoá trong danh sách thuộc tính của một loại thực thể thường được gạch dưới liền nét Để đơn giản hóa mô hình trong trường hợp có nhiều loại thực thể, có thể chỉ nêu tên các loại thực thể, trong khi các thuộc tính của từng loại thực thể sẽ được liệt kê riêng.
Hình 1-1 Mô tả tên loại thực thể
Ví dụ 1.2: Bài toán quản lý điểm của sinh viên đƣợc phát biểu sơ bộ nhƣ sau:
Mỗi sinh viên cần quản lý các thông tin cá nhân như họ và tên, ngày tháng năm sinh, giới tính, nơi sinh và hộ khẩu thường trú Để phân biệt, mỗi sinh viên sẽ được cấp một mã số sinh viên duy nhất và thuộc về một lớp học cụ thể.
Tên thuộc tính 1 Tên thuộc tính 2 Tên thuộc tính 3
Hoặc ngắn gọn nhƣ sau
Mỗi lớp học trong trường đều được gán một mã số lớp (MALOP) duy nhất để phân biệt với các lớp học khác, cùng với tên gọi (TENLOP) riêng Mỗi lớp chỉ thuộc về một khoa cụ thể, đảm bảo sự tổ chức và quản lý hiệu quả trong hệ thống giáo dục.
Mỗi khoa có một tên gọi (TENKHOA) và một mã số duy nhất (MAKHOA) để phân biệt với các khoa khác
Mỗi môn học được xác định bởi một tên gọi cụ thể (TENMH) và được giảng dạy trong các đơn vị học trình (DONVIHT) Mỗi môn học cũng có một mã số duy nhất (MAMH) để phân biệt với các môn học khác.
Mỗi giảng viên cần quản lý thông tin cá nhân bao gồm họ và tên (HOTENGV), cấp học vị (HOCVI), chuyên ngành (CHUYENNGANH) và mã giảng viên (MAGV) duy nhất để phân biệt với các giảng viên khác Dù mỗi giảng viên có thể giảng dạy nhiều môn học ở nhiều khoa, họ chỉ thuộc về sự quản lý hành chính của một khoa cụ thể.
Mỗi sinh viên với một môn học đƣợc phép thi tối đa 3 lần, mỗi lần thi (LANTHI), điểm thi (DIEMTHI)
Mỗi môn học ở mỗi lớp học chỉ phân công cho một giảng viên dạy (tất nhiên là một giảng viên thì có thể dạy nhiều môn ở một lớp)
Với bài toán trên thì các loại thực thể cần quản lý nhƣ: Sinhviên, Mônhọc, Khoa, Lớp, Giảngviên
Ví dụ với loại thực thể Sinhviên thì cần quản lý các thuộc tính nhƣ:
MASV,HOTENSV, NGAYSINH,… và ta có thể biểu diễn nhƣ sau:
HÌNH 1-2 Loại thực thể sinh viên
Mối Kết Hợp (relationship)
Mối kết hợp diễn tả sự liên hệ giữa các loại thực thể trong một ứng dụng tin học
Ví dụ 1.3: Mối kết hợp giữa hai loại thực thể Sinhviên và Lop, mối kết hợp giữa Sinhviên với Mônhọc,
Mối kết hợp được thể hiện qua hình elip, với hai nhánh bên cạnh gắn liền với các thực thể hoặc mối kết hợp liên quan Tên gọi của mối kết hợp thường sử dụng các từ như "thuộc", "gồm", "chứa", để diễn đạt sự liên kết giữa các thành phần.
- Chẳng hạn giữa hai loại thực thể Lớp và Khoa có mối kết hợp “thuộc” nhƣ sau: thuộc Lớp Sinh viên
HÌNH 1-3 Mối quan hệ của loại thực thể sinh viên và Lớp
* Bản số của mối kết hợp:
Bản số của một nhánh R trong mối kết hợp thể hiện số lượng thực thể liên quan từ nhánh đối diện, với mỗi bản số được định nghĩa dưới dạng cặp số (min, max) Cặp số này chỉ ra số lượng tối thiểu và tối đa của thực thể tham gia vào mối kết hợp, đảm bảo sự rõ ràng trong việc xác định mối quan hệ giữa các thực thể.
Hình 1- 4 Bản số của loại thực thể sinh viên và Lớp
Mỗi sinh viên chỉ thuộc một lớp duy nhất, do đó, mối quan hệ giữa sinh viên và lớp được biểu diễn bằng bản số bên nhánh Sinh viên là (1,1) Trong khi đó, mỗi lớp có thể có từ 1 đến n sinh viên, dẫn đến bản số bên nhánh Lớp là (1,n).
Trong một số trường hợp đặc biệt, các mối kết hợp có thể đi kèm với những thuộc tính nhất định, vì vậy chúng thường được đặt tên với ý nghĩa rõ ràng hơn.
Mối quan hệ giữa hai thực thể Monhoc và Sinhvien được thể hiện qua kết quả thi, trong đó mỗi sinh viên sẽ có một điểm thi duy nhất cho mỗi lần thi của từng môn học.
Khóa của mối kết hợp là sự kết hợp của các khóa thuộc các loại thực thể liên quan Ví dụ, thuộc tính MAGV là khóa của thực thể Giangvien, MALOP là khóa của thực thể Lop, và MAMH là khóa của thực thể Monhoc Do đó, mối kết hợp phân công giữa các thực thể Giangvien, Lop, và Monhoc có khóa là {MAGV, MAMH, MALOP}.
- phancong là mối kết hợp 3 ngôi (Trong giáo trình này, tên của mối kết hợp được viết toàn bằng chữ thường)
- Việc thành lập mô hình thực thể kết hợp cho một ứng dụng tin học có thể tiến hành theo các bước sau:
B1 Xác định danh sách các loại thực thể
B2 Xác định các mối kết hợp giữa các loại thực thể để phác thảo mô hình B3 Lập bản số của các mối kết hợp
NGÔN NGỮ ĐẠI SỐ QUAN HỆ
Phép hợp 2 quan hệ(Union)
Cho hai lƣợc đồ quan hệ Q1 và Q2 có cùng tập thuộc tính {A1, A2, , An} Hai quan hệ r1 và r2 lần lượt tương ứng với Q1 và Q2 Phép hợp của hai lƣợc đồ quan hệ này sẽ tạo thành một lƣợc đồ quan hệ mới Q3, được xác định dựa trên các thuộc tính và quan hệ của Q1 và Q2.
Ví dụ 1.5: Cho hai quan hệ r 1 và r 2 nhƣ sau:
Khi đó nội dung của quan hệ r 3 = r 1 + r 2 là:
Do thứ tự trước/sau của các bộ trong các quan hệ là không quan trọng nên ta có:
Một cách tổng quát có thể lấy hợp của n quan hệ tương thích: cho n quan hệ tương thích r 1 , r 2 ,…, r n
Hợp của n quan hệ r 1 , r 2 ,…,r n là một quan hệ r 1 + r 2 + …+ r n gồm các phần tử thuộc r 1 hoặc thuộc r 2 … hoặc thuộc r n
Ví dụ 1.6: Cho hai quan hệ r 1 và r 2 nhƣ sau: r 1
Phép Giao 2 quan hệ (Intersection)
Cho hai lược đồ quan hệ Q1 và Q2 có cùng tập thuộc tính {A1, A2, , An} Hai quan hệ r1 và r2 lần lượt thuộc Q1 và Q2 Phép giao của hai lược đồ quan hệ Q1 và Q2 sẽ tạo thành một lược đồ quan hệ Q3.
Chẳng hạn với ví dụ 1.5 và ví dụ 1.6 ở trên thì r 1 * r 2 là:
Phép Trừ 2 quan hệ (Minus)
Cho hai lƣợc đồ quan hệ Q 1 và Q2 có cùng tập thuộc tính { A 1 , A 2 , , A n } r1 và r2 lần lƣợt là hai quan hệ trên Q1 và Q2 Phép trừ lƣợc đồ quan hệ Q 1 cho
Q2 sẽ tạo thành một lƣợc đồ quan hệ Q3 nhƣ sau:
Chẳng hạn với ví dụ 1.5 thì r1 - r2 là:
Tích Decac của 2 quan hệ Cartesian Product)
Cho hai lƣợc đồ quan hệ
Giả sử r 1 , r2 là hai quan hệ trên Q1, Q2 tương ứng Tích Descartes (decac) của r 1 và r2 ký hiệu là r1 x r2 là quan hệ trên lƣợc đồ quan hệ có tập thuộc tính
Vậy quan hệ r 1 x r2 là quan hệ trên lƣợc đồ:
Ví dụ 1.7: Cho hai quan hệ r 1 và r2 nhƣ sau: r 1
7 5 3 Thì kết quả r 1 x r 2 nhƣ sau:
Phép chia 2 quan hệ
Cho 2 lƣợc đồ quan hệ
Trong lý thuyết cơ sở dữ liệu, cho hai quan hệ r trên Q1 và s trên Q2, với n > m và s không rỗng, có m thuộc tính chung giữa r và s Phép chia hai quan hệ này, ký hiệu là r ÷ s, tạo ra một quan hệ mới q có n - m thuộc tính, được định nghĩa như sau: q = r ÷ s = { t | (u ∈ s) và (t, u) ∈ r }.
Ví dụ 1.8: Cho hai quan hệ r và s nhƣ sau: r
Phép chiếu (projection)
Cho lƣợc đồ quan hệ Q(A 1 , A 2 , , A n ), r là quan hệ trên Q và X Q +
Phép chiếu của quan hệ r lên tập thuộc tính X, ký hiệu là r[X] (hoặc r.X), tạo ra một lược đồ quan hệ mới r' với tập thuộc tính là X Quan hệ r' được hình thành bằng cách trích xuất các thuộc tính có trong X từ quan hệ r.
Phép chiếu chính là phép rút trích dữ liệu theo cột Chẳng hạn với r 1 ở ví dụ 2.2 thì khi đó ta có quan hệ con của r 1 chiếu lên X={A,C} là: r1[X]
Ví dụ 1.9: Cho quan hệ rnhƣ sau: r
Phép chọn (Selection)
Cho lược đồ quan hệ Q(A1, A2, , An), r là một quan hệ trên lược đồ quan hệ Q Tập con X của Q+ và E là một mệnh đề logic được phát biểu dựa trên tập này.
X Phần tử t r thoả mãn điều kiện E ký hiệu là t(E) Phép chọn từ quan hệ r theo điều kiện E (ký hiệu là r : E ) sẽ tạo thành một quan hệ mới ký hiệu là r(E), trong đó r(E) = {t: t r và t(E)}
Phép chọn chính là phép rút trích dữ liệu theo dòng Chẳng hạn với r2 ở ví dụ 2.3 và điều kiện E là: “F >= 6” thì kết quả r2(E) hay r2: “F >= 6” có nội dung là
Ví dụ 1.10: Cho quan hệ r nhƣ sau: r
Phép - Kết
Cho hai lƣợc đồ quan hệ Q1 và Q2 nhƣ sau
Q 2 (B 1 , B 2 , , B m ) r và s lần lƣợt là hai quan hệ trên Q1 và Q2
Ai và Bj lần lƣợt là thuộc tính của Q1 , Q2 sao cho MGT(AI)= MGT(BJ) là một trong các phép so sánh (=, , , , ) trên MGT(AI)
Phép kết giữa hai quan hệ r và s theo điều kiện Ai Bj, được ký hiệu là r |>=” Ta đƣợc kết quả là quan hệ sau:
Phép kết tự nhiên (natural join)
Nếu phép kết sử dụng dấu "=" thì được gọi là phép kết bằng Khi AI tương đương với Bj, phép kết này được xem là phép kết tự nhiên, loại phép kết phổ biến nhất trong thực tế.
Ví dụ 1.12: Với Ai Bj = MAMH r 1
CSDL CO SO DU LIEU
CTDL CAU TRUC DU LIEU
99001 CSDL 5.0 CO SO DU LIEU
99002 CTDL 2.0 CAU TRUC DU LIEU
Dựa trên các phân tích sơ bộ, hãy xây dựng mô hình thực thể kết hợp cho từng bài toán quản lý, bao gồm loại thực thể, mối kết hợp, bản số, thuộc tính của loại thực thể và khóa của loại thực thể Mô hình này sẽ giúp tổ chức thông tin một cách có hệ thống và hiệu quả, phục vụ cho việc quản lý và truy xuất dữ liệu dễ dàng hơn.
Bài 1: Bài toán quản lý điểm của sinh viên
Mỗi sinh viên cần quản lý thông tin cá nhân như họ và tên, ngày tháng năm sinh, giới tính, nơi sinh và hộ khẩu thường trú Để phân biệt, mỗi sinh viên sẽ được cấp một mã số sinh viên duy nhất và chỉ thuộc về một lớp học cụ thể.
Mỗi lớp học trong trường đều được cấp một mã số lớp (MALOP) duy nhất, giúp phân biệt với các lớp học khác Mỗi lớp còn có tên gọi (TENLOP) và thuộc về một khoa cụ thể Mỗi khoa cũng được xác định bằng một tên gọi (TENKHOA) và một mã số duy nhất (MAKHOA) để phân biệt với các khoa khác trong trường.
Mỗi môn học (TENMH) có mã số duy nhất (MAMH) và được giảng dạy trong các đơn vị học trình (DONVIHT) Giảng viên quản lý thông tin như họ tên (HOTENGV), học vị (HOCVI), chuyên ngành (CHUYENNGANH) và được gán mã số riêng (MAGV) Mặc dù mỗi giảng viên có thể dạy nhiều môn ở nhiều khoa, họ chỉ thuộc quản lý hành chính của một khoa Sinh viên có quyền thi tối đa 3 lần cho mỗi môn học (LANTHI) và điểm thi (DIEMTHI) sẽ được ghi nhận Mỗi lớp học chỉ phân công một giảng viên cho một môn học, mặc dù một giảng viên có thể dạy nhiều môn trong lớp đó.
Bài 2: Bài toán qnản lý số lƣợng ngày công của các nhân viên Để quản lý việc phân công các nhân viên tham gia vào xây dựng các công trình Công ty xây dựng ABC tổ chức quản lý nhƣ sau:
Công ty có khả năng tham gia xây dựng nhiều công trình cùng lúc, mỗi công trình được xác định bởi một mã số duy nhất (MACT) chứa thông tin như tên công trình (TENCT), địa điểm (ĐIAĐIEM), ngày cấp giấy phép xây dựng (NGAYCAPGP), ngày khởi công (NGAYKC) và ngày hoàn thành (NGAYHT) Đồng thời, mỗi nhân viên của công ty ABC cũng có mã số riêng (MANV) để xác định các thông tin cá nhân như họ tên (HOTEN), ngày sinh (NGSINH), phái (PHAI), địa chỉ (ĐIACHI) và phòng ban.
Công ty tổ chức nhân viên tham gia vào nhiều công trình khác nhau, với khả năng mỗi công trình có thể có sự tham gia của nhiều nhân viên Đồng thời, mỗi nhân viên cũng có thể làm việc trên nhiều công trình cùng một lúc Mỗi công trình sẽ ghi nhận số lượng ngày công (SLNGAYCONG) mà từng nhân viên đã tham gia.
Công ty được tổ chức thành nhiều phòng ban như phòng kế toán, phòng kinh doanh, phòng kỹ thuật, phòng tổ chức, phòng chuyên môn và phòng phục vụ Mỗi phòng ban đều có một mã số phòng ban (MAPB) duy nhất và tương ứng với một tên phòng ban (TENPB).
Bài 3: Bài toán qnản lý lao động Để quản l ý việc phân công các nhân viên tham gia vào xây dựng các công trình Công ty xây dựng ABC tổ chức quản l ý nhƣ sau:
Công ty có khả năng tham gia xây dựng nhiều công trình cùng lúc, mỗi công trình được xác định bởi một mã số duy nhất (MACT) Mỗi mã số này chứa các thông tin quan trọng như tên công trình (TENCT), địa điểm xây dựng (ĐIAIDEM), ngày cấp giấy phép xây dựng (NGAYCAPGP), ngày khởi công (NGAYKC) và ngày hoàn thành (NGAYHT).
Mỗi nhân viên tại công ty ABC được cấp một mã nhân viên (MANV) duy nhất, giúp xác định các thông tin cá nhân như họ tên (HOTEN), ngày sinh (NGAYSINH), phái (PHAI) và địa chỉ (DIACHI) Nhân viên sẽ được quản lý hành chính bởi một phòng ban, và mỗi phòng ban sẽ quản lý nhiều nhân viên Công ty có nhiều phòng ban khác nhau như phòng kế toán, phòng kinh doanh, phòng kỹ thuật, phòng tổ chức, phòng chuyên môn và phòng phục vụ, mỗi phòng ban đều có mã số phòng ban (MAPB) riêng biệt và tên phòng ban (TENPB) tương ứng.
Công ty phân công nhân viên tham gia vào nhiều công trình, cho phép mỗi công trình có sự tham gia của nhiều nhân viên Mỗi nhân viên có thể đồng thời làm việc trên nhiều công trình và có số ngày công (SLNGAYCONG) khác nhau cho từng dự án.
Bài 4: Bài toán quản lý thƣ viện
Một thƣ viện tổ chức việc cho mƣợn sách nhƣ sau:
Mỗi quyển sách được gán một mã sách (MASH) nhằm phân biệt với các quyển sách khác, đặc biệt trong trường hợp tác phẩm có nhiều bản sao hoặc phiên bản khác nhau.
Mỗi tập sách được xác định bằng một mã sách riêng biệt, giúp phân biệt các thông tin quan trọng như tên sách (TENSACH), tên tác giả (TACGIA), nhà xuất bản (NXB) và năm xuất bản (NXB).
NGÔN NGỮ TRUY VẤN SQL
TẠO BẢNG
Mệnh đề tạo bảng có dạng tổng quát nhƣ sau:
CREATE TABLE tên_bảng (tên _ cột Loại _dữ _liệu [not null] , )
Tên bảng và tên cột là chuỗi ký tự bắt đầu bằng chữ cái, tiếp theo là chữ cái hoặc chữ số, không chứa ký hiệu trống và không trùng với từ khóa Trong mỗi bảng, tên cột phải là duy nhất, và thứ tự của các cột trong bảng không quan trọng.
- Loại _dữ _liệu: Trong mệnh đề create table dùng một số loại dữ liệu nhƣ sau: + Integer: Số nguyên từ - 2147483648 đến 2147483647
+ Smallinteger: Số nguyên từ -32768 đến 32767
+ Number (n, p): Số thập phân với độ dài tối đa là n trong đó có p chữ số phần thập phân
+ Char(n): Xâu k ý tự có độ dài tối đa là n, n, =,