Một số khái niệm
Cơ sở dữ liệu
Lưu trữ thông tin là nhu cầu thiết yếu trong cuộc sống con người, bắt đầu từ việc sử dụng các vật dụng tự nhiên như đá và gỗ để ghi chép Tuy nhiên, với sự phát triển của công nghệ thông tin, việc lưu trữ đã tiến xa hơn, cho phép mọi người dễ dàng sử dụng máy tính để quản lý và lưu trữ thông tin một cách hiệu quả và hiện đại.
Lưu trữ dữ liệu dưới dạng hệ thống tập tin
Hình 1 Hệ thống tập tin dữ liệu Microsoft Office
Khi sử dụng máy tính, thông tin thường được lưu trữ dưới dạng file và được tổ chức trong các folder với tên khác nhau để dễ dàng truy cập Phương pháp này mang lại nhiều ưu điểm, nhưng cũng có những nhược điểm nhất định.
- Với việc lưu trữ này thì rõ ràng khi ta cần là lưu ngay nên tốc độ triển khai sẽ nhanh
- Rõ ràng và trực quan với người không có chuyên môn công nghệ thông tin
- Dữ liệu không nhất quán, đôi khi có trường hợp nhiều người sử dụng một file và sẽ xảy ra hiện tượng lưu đè.
- Trùng lặp dữ liệu nhiều.
- Tính chia sẻ dữ liệu không cao (kém)
Hiện nay, nhiều cá nhân sử dụng máy tính để lưu trữ thông tin cá nhân, khiến phương pháp này trở nên phổ biến Tuy nhiên, với các hệ thống dữ liệu lớn, việc truy xuất và tìm kiếm dữ liệu gặp nhiều khó khăn, dẫn đến hạn chế trong khả năng bảo quản Để khắc phục những vấn đề này, khái niệm cơ sở dữ liệu và hệ quản trị cơ sở dữ liệu đã ra đời, mang lại giải pháp hiệu quả hơn cho việc quản lý thông tin.
1.1.2 Khái niệm Cơ sở dữ liệu
Cơ sở dữ liệu (CSDL) là hệ thống thông tin có cấu trúc, lưu trữ dữ liệu liên quan trên thiết bị lưu trữ CSDL phục vụ nhu cầu khai thác thông tin đồng thời từ nhiều người dùng và ứng dụng với mục đích đa dạng.
Để quản lý việc học tập tại trường học, cần thu thập và tổ chức các dữ liệu liên quan đến sinh viên, môn học và điểm thi Các thông tin này có thể được lưu trữ trong sổ sách hoặc thông qua phần mềm máy tính Khi được sắp xếp hợp lý, chúng tạo thành một cơ sở dữ liệu có ý nghĩa và liên quan đến nhau, phục vụ cho việc quản lý hiệu quả.
Cơ sở dữ liệu là một đại diện cho một khía cạnh cụ thể của thế giới thực, chẳng hạn như hoạt động của công ty, trường học hoặc ngân hàng Để duy trì tính chính xác, mọi thay đổi trong thế giới thực cần được phản ánh trung thực trong cơ sở dữ liệu Thông tin được lưu trữ trong cơ sở dữ liệu tạo nên một không gian cơ sở dữ liệu, được gọi là "thế giới nhỏ" (miniworld).
Cơ sở dữ liệu là một tập hợp dữ liệu được liên kết logic và mang ý nghĩa cố hữu, không phải là một tập hợp ngẫu nhiên.
Một cơ sở dữ liệu được thiết kế cho mục đích cụ thể, phục vụ một nhóm người dùng có chủ đích và các ứng dụng phù hợp với mối quan tâm của họ Nó bao gồm một nguồn cung cấp dữ liệu, khả năng tương tác với các sự kiện thực tế, và một cộng đồng người dùng tích cực quan tâm đến nội dung của cơ sở dữ liệu.
Cơ sở dữ liệu có thể có kích thước và độ phức tạp đa dạng, từ vài trăm bản ghi cho đến hàng triệu bản ghi như trong quản lý cước điện thoại hay nhân sự Việc tổ chức và quản lý cơ sở dữ liệu là rất quan trọng để người dùng có thể dễ dàng tìm kiếm, cập nhật và truy xuất dữ liệu khi cần Cơ sở dữ liệu có thể được xây dựng và duy trì bằng phương pháp thủ công hoặc thông qua hệ thống tin học hoá.
1.1.4 Ưu điểm của cơ sở dữ liệu
-Giảm sự trùng lắp thông tin xuống mức thấp nhất và do đó bảo đảm được tính nhất quán và toàn vẹn dữ liệu
-Đảm bảo dữ liệu có thể truy xuất theo nhiều cách khác nhau
-Khả năng chia sẻ thông tin cho nhiều người sử dụng.
1.1.5 Những vấn đề Cơ sở dữ liệu cần giải quyết
Tính chủ quyền dữ liệu bao gồm an toàn dữ liệu, khả năng thể hiện mối liên hệ ngữ nghĩa và tính chính xác của dữ liệu Điều này yêu cầu người khai thác cơ sở dữ liệu phải thường xuyên cập nhật thông tin mới nhất để đảm bảo tính chính xác và an toàn cho dữ liệu.
Để đảm bảo tính bảo mật và quyền khai thác thông tin của người sử dụng, cần thiết phải thiết lập cơ chế bảo mật và phân quyền khai thác cơ sở dữ liệu (CSDL), đặc biệt khi có nhiều người cùng truy cập đồng thời Các hệ điều hành nhiều người sử dụng và hệ điều hành mạng cục bộ thường cung cấp các cơ chế này để bảo vệ dữ liệu hiệu quả.
Trong quản lý cơ sở dữ liệu, tranh chấp dữ liệu xảy ra khi nhiều người cùng lúc truy cập tài nguyên với mục đích khác nhau Để giải quyết tình trạng này, cần thiết phải có cơ chế ưu tiên truy cập dữ liệu Cơ chế này có thể được thực hiện bằng cách cấp quyền ưu tiên cho từng người khai thác, đảm bảo sự công bằng và hiệu quả trong quá trình sử dụng tài nguyên.
Để đảm bảo an toàn cho dữ liệu trong trường hợp xảy ra sự cố như mất điện đột ngột hoặc hỏng hóc đĩa lưu trữ, việc quản lý dữ liệu tập trung có thể dẫn đến nguy cơ mất mát hoặc sai lệch thông tin Một số hệ điều hành mạng cung cấp dịch vụ sao lưu ảnh đĩa cứng và tự động kiểm tra, khắc phục lỗi Tuy nhiên, bên cạnh các dịch vụ này, một hệ thống cơ sở dữ liệu (CSDL) cần phải có cơ chế khôi phục dữ liệu hiệu quả để duy trì sự ổn định trong mọi tình huống bất ngờ.
1.1.6 Đối tượng sử dụng Cơ sở dữ liệu
* Người quản trị CSDL: thực hiện các công việc quản lý và bảo trì CSDL như sau:
- Sự chính xác và toàn vẹn dữ liệu, và bảo mật dữ liệu.
- Thực hiện các công việc sao lưu và phục hồi dữ liệu.
- Giữ liên lạc thường xuyên với người lập trình, người dùng, người phát triển ứng dụng để kịp thời cập nhật CSDL.
- Bảo đảm sự hoạt động của CSDL và HQTCSDL.
Người phát triển và lập trình ứng dụng là những chuyên gia am hiểu về công nghệ thông tin, có nhiệm vụ thiết kế và phát triển các chương trình ứng dụng phục vụ nhu cầu của người dùng cuối.
* Người dùng cuối: là những người có thể không rành về máy tính nhưng nắm rõ về các nghiệp vụ mà ứng dụng triển khai.
Hệ quản trị cơ sở dữ liệu
Một hệ quản trị cơ sở dữ liệu (HQTCSDL) là:
Một bộ phần mềm quản lý cơ sở dữ liệu cung cấp dịch vụ xử lý dữ liệu cho cả nhà phát triển ứng dụng và người dùng cuối.
- HQTCSDL cung cấp một giao diện giữa người sử dụng và dữ liệu
- HQTCSDL biến đổi cơ sở dữ liệu vật lý thành cơ sở dữ liệu logic.
Hiện nay trên thị trường phần mềm đã có những hệ quản trị cơ sở dữ liệu hỗ trợ được nhiều tiện ích như: MS Access, SQL Server, Oracle, …
Mỗi hệ quản trị cơ sở dữ liệu được thiết lập dựa trên một mô hình dữ liệu cụ thể, và bất kể mô hình nào được sử dụng, hệ thống này cần phải đáp ứng đầy đủ các yếu tố thiết yếu.
Yếu tố 1: 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 (DDL - Data Definition Language) cho phép người dùng khai báo cấu trúc của cơ sở dữ liệu, thiết lập các mối quan hệ giữa dữ liệu và quy định các quy tắc quản lý áp dụng cho dữ liệu đó.
- Ngôn ngữ thao tác dữ liệu (DML – Data Manupulation Language): Cho phép người sử dụng có thể cập nhật dữ liệu (thêm/sửa/xoá)
- Ngôn ngữ truy vấn dữ liệu ( Structure Querry Language): Cho phép người khai thác sử dụng để truy vấn các thông tin cần thiết trong cơ sở dữ liệu.
Ngôn ngữ quản lý dữ liệu (DCL - Data Control Language) cho phép quản trị viên hệ thống thay đổi 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.
Yếu tố 2: Từ điển dữ liệu:
Các ánh xạ liên kết được sử dụng để mô tả và ghi nhận các thành phần cấu trúc của cơ sở dữ liệu, chương trình ứng dụng, mật mã, cũng như quyền hạn sử dụng.
Yếu tố 3: 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 đều có thể thiết lập cơ chế riêng để giải quyết các vấn đề liên quan đến quyền truy cập Một số biện pháp thường được áp dụng bao gồm: cấp quyền ưu tiên cho từng người dùng và đánh dấu yêu cầu truy xuất dữ liệu, trong đó người có yêu cầu trước sẽ được quyền truy cập trước.
Hệ quản trị cơ sở dữ liệu cần có cơ chế sao lưu và phục hồi dữ liệu để đảm bảo an toàn khi xảy ra sự cố Sau một khoảng thời gian nhất định, hệ thống sẽ tự động tạo 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.
Yếu tố 5: Hệ quản trị CSDL phải cung cấp một giao diện thân thiện, dễ sử dụng.
Yếu tố 6: Tính độc lập giữa dữ liệu và chương trình:
Khi dữ liệu thay đổi, như việc sửa đổi cấu trúc lưu trữ các bảng hoặc thêm chỉ mục, các ứng dụng đang chạy trên cơ sở dữ liệu vẫn hoạt động bình thường mà không cần viết lại, đồng thời không ảnh hưởng đến người dùng khác.
* Các mức biểu diễn một cơ sở dữ liệu:
Mức trong (mức vật lý) của cơ sở dữ liệu là cấp độ lưu trữ, xác định các vấn đề cần giải quyết liên quan đến dữ liệu, cách thức lưu trữ, vị trí lưu trữ, và các chỉ mục cần thiết Mức này chủ yếu phục vụ cho quản trị viên và người dùng có chuyên môn, giúp họ hiểu rõ về cách truy xuất dữ liệu một cách tuần tự hoặc ngẫu nhiên.
- Mức quan niệm: (Conception hay Logical) cần phải lưu trữ bao nhiêu loại dữ liệu, là dữ liệu gì, mối quan hệ
- Mức ngoài: của người sử dụng và các chương trình ứng dụng.
Các mô hình dữ liệu
Mô hình dữ liệu mạng
Mô hình dữ liệu mạng, hay còn gọi là mô hình mạng hoặc mô hình lưới, là một mô hình được thể hiện dưới dạng đồ thị có hướng Mô hình này bao gồm các khái niệm quan trọng như mẫu tin (bản ghi), loại mẫu tin (Record Type) và loại liên hệ (Set Type).
* Mẫu tin: mô tả 1 đối tượng trong thế giới thực.
Ví dụ: (‘NV001’,’Nguyen Lam’,’Nam’,’10/10/1970’,’Dong Nai’)
* Loại mẫu tin: Là 1 tập các mẫu tin có cùng tính chất
Ví dụ: Tập hợp các mẫu tin về nhân viên trong công ty tạo thành NHANVIEN
* Loại liên hệ: Mô tả sự liên kết giữa 1 loại mẫu tin chủ và 1 loại mẫu tin thành viên
- Ví dụ: Nhân viên (tham gia) công việc
- Ký hiệu: Hình elip bên trong được ghi tên
* Bản số: chỉ ra số lượng các mẫu tin tham gia trong mối liên hệ
- (1:1) (one-to-one): mỗi mẫu tin của loại mẫu tin chủ kết hợp với đúng 1 mẫu tin của loại mẫu tin thành viên.
- (1:n) (one-to-many): mỗi mẫu tin của loại mẫu tin chủ kết hợp với 1 hay nhiều mẫu tin thành viên.
- (n:1) (many-to-one): nhiều mẫu tin của loại mẫu tin chủ kết hợp với đúng 1 mẫu tin của loại mẫu tin thành viên.
- Recursive: một loại mẫu tin chủ cũng có thể đồng thời là loại mẫu tin thành viên với chính nó Loại liên hệ này là Đệ quy
Hình 2: Mô hình dữ liệu mạng Đặc điểm mô hình dữ liệu mạng:
- Không thích hợp biểu diễn CSDL có quy mô lớn
- Khả năng diễn đạt ngữ nghĩa kém
Mô hình phân cấp
Mô hình dữ liệu phân cấp (Hierarchical Data Model), hay còn gọi là mô hình phân cấp, được cấu trúc dưới dạng cây (Tree) Trong mô hình này, mỗi nút đại diện cho một thực thể, và các nút con được liên kết với nút cha thông qua những mối quan hệ cụ thể.
Recorde Type là mẫu đặc trưng cho từng loại đối tượng riêng biệt trong quản lý nhân sự, như Phòng, Nhân viên, Công việc, và lý lịch Mỗi loại mẫu tin được biểu diễn bởi một hình chữ nhật trong mô hình mạng, và một thể hiện của loại mẫu tin đó gọi là bản ghi Ví dụ, loại mẫu tin Phòng bao gồm các phòng, ban trong đơn vị, trong khi loại mẫu tin Nhân viên đại diện cho các nhân viên làm việc tại các phòng ban của cơ quan.
Kiểu liên hệ là phân cấp, theo cách:
Mẫu tin thành viên chỉ có thể thuộc về một mối liên hệ duy nhất với một chủ thể, nghĩa là mỗi mẫu tin thành viên gắn liền với một mẫu tin chủ Do đó, mối quan hệ giữa mẫu tin chủ và các mẫu tin thành viên là một-nhiều, trong khi mối quan hệ từ mẫu tin thành viên đến mẫu tin chủ là nhiều-một.
- Giữa 2 loại mẫu tin chỉ tồn tại 1 mối liên hệ duy nhất.
Dưới đây là một ví dụ về mô hình phân cấp quản lý nhân sự của một công ty
Hình.3: Mô hình phân cấp quản lý nhân sự
Mô hình quan hệ
Mô hình dữ liệu quan hệ, được E.F Codd giới thiệu vào đầu những năm 70, dựa trên lý thuyết tập hợp và đại số quan hệ Với tính chất chặt chẽ của toán học, mô hình này mô tả dữ liệu một cách rõ ràng và linh hoạt, trở thành mô hình phổ biến nhất hiện nay Hầu hết các hệ quản trị cơ sở dữ liệu tổ chức dữ liệu theo mô hình này, trong đó dữ liệu được sắp xếp dưới dạng bảng và các thao tác trên dữ liệu dựa trên lý thuyết tập hợp Tập dữ liệu được tổ chức theo cấu trúc của mô hình dữ liệu quan hệ được gọi là cơ sở dữ liệu quan hệ.
Dữ liệu bảng được thể hiện như sau:
Hình 4: Thể hiện dữ liệu trong bảng
Ví dụ: Mô hình cơ sở dữ liệu quan hệ
SINHVIEN (MASV, HOTENSV, NU, NGAYSINH, NOISINH, TINH,
Mô hình thực thể mối kết hợp (Entity Relationship Diagram ERD)
Mối liên hệ giữa các tập thực thể được thể hiện qua một danh sách có thứ tự, trong đó một tập thực thể có thể xuất hiện nhiều lần Danh sách này phản ánh khái niệm lược đồ của mối liên hệ giữa các tập thực thể.
Mô hình thực thể quan hệ, do CHEN giới thiệu vào năm 1976 và được ANSI công nhận là mô hình chuẩn vào năm 1988, là một công cụ quan trọng trong thiết kế dữ liệu ở mức khái niệm, giúp mô hình hóa dữ liệu một cách hiệu quả.
Trong ERD, các khái niệm cơ bản bao gồm loại thực thể, thực thể, thuộc tính, mối kết hợp, vai trò và bản số a Loại thực thể (Entity Type) là những đối tượng hoặc sự vật cụ thể trong thế giới thực cần quản lý và phải được đặt tên bằng danh từ hoặc cụm danh từ, thường được biểu diễn bằng hình chữ nhật hoặc hình chữ nhật bo góc Thực thể (Entity) là một thể hiện cụ thể của loại thực thể.
Ví dụ: Trong loại thực thể HOCSINH có thực thể:
Trong mô hình này, khái niệm "Loại thực thể" được sử dụng phổ biến hơn so với "Thực thể", dẫn đến việc một số tài liệu có thể thay thế "Loại thực thể" bằng "Thực entity" để đơn giản hóa Ngoài ra, "Loại kết hợp" hay còn gọi là mối quan hệ, thể hiện sự liên kết giữa hai hoặc nhiều loại thực thể và được biểu diễn bằng hình thoi, với tên mối quan hệ thường là động từ hoặc cụm động từ.
Hình 5: Minh hoạ mối kết hợp giữa thực thể Khachhang và nuocgiaikhat
Khách hàng và nước giải khát là Loại thực thể (Thực thể) Đặt: Là mối quan hệ giữa 2 thực thể này
Có các loại mối quan hệ như sau: MQH đa phân, MDQ phản thân
Mối kết hợp đa phân và phản thân được minh họa trong hình 6, với bản số của nhánh thể hiện số lượng tối thiểu và tối đa mà thực thể tham gia vào mối kết hợp, ký hiệu là (min,max) – (1,n).
Hình 7: Minh hoạ mối kết hợp có bản số e Thuộc tính : là những tính chất đặc trưng của một loại thực thể/mối kết hợp.
Hình 8: Minh hoạ thuộc tính của thực thể
- Thuộc tính nhận diện: là thuộc tính để phân biệt thực thể này với thực thể kia trong tập thực thể.
- Thuộc tính mô tả: là thuộc tính cung cấp thông tin chi tiết hơn về thực thể trong tập thực thể.
- Đơn trị (Simple): mỗi thực thể chỉ có một giá trị ứng với thuộc tính Ví dụ: MAHV, HOTEN
- Đa trị (Multi Value): thuộc tính có thể có nhiều giá trị đối với một thực thể. Với những thuộc tính này cần sử dụng bản số
Hình 9: Minh hoạ thuộc tính đa trị
Học vị là thuộc tính đa trị, một người có thể có nhiều học vị như tiến sĩ, giáo sư, thạc sĩ,
- Đa hợp (Composite): thuộc tính được tạo từ nhiều thành phần.
Ví dụ: DIACHI (Sonha, tenduong, phuong, quan)
Chú ý: các thuộc tính đa trị và đa hợp có thể lồng nhau tùy ý Ví dụ:
- Thuộc tính kết hợp: Là nhóm thuộc tính có liên hệ
Khóa của loại thực thể là thuộc tính quan trọng dùng để nhận diện thực thể, giúp xác định một cách duy nhất từng thực thể trong hệ thống.
Ví dụ: Mỗi HOCSINH có một mã duy nhất để phân biệt học sinh này với học sinh kia.
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:
Bước 1.Xác định danh sách các loại thực thể
Bước 2.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.
Bước 3.Lập bản số của các mối kết hợp.
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ý thông tin cá nhân bao gồm 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ú Mỗi sinh viên được cấp một mã số sinh viên duy nhất để phân biệt với các sinh viên khác trong trường và chỉ thuộc về một lớp cụ thể.
Mỗi lớp học trong trường được xác định bằng 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ũng có một tên gọi (TENLOP) riêng và thuộc về một khoa nhất định.
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ằng 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ã số giảng viên (MAGV) duy nhất để phân biệt với các giảng viên khác.
Mỗi giảng viên có thể dạy nhiều môn ở nhiều khoa, nhưng chỉ thuộc về sự quản lý hành chính của một khoa.
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).
Lập mô hình thực thể kết hợp cho bài toán trên.
Cách chuyển đổi từ mô hình thực thể kết hợp sang mô hình quan hệ .18 2.6 Mô hình hướng đối tượng
Mỗi thực thể chuyển thành một quan hệ cùng tên và danh sách thuộc tính Thuộc tính khoá trở thành khoá chính của quan hệ
Hình 11: Minh hoạ chuyển đổi tập thực thể.
Thuộc tính khoá bên này làm khoá ngoại bên kia hoặc ngược lại Bên dưới là ví dụ chuyển mối kết hợp 1 – 1
Hình 12: Minh hoạ mối quan hệ 1 – 1
Hình 13: Minh hoạ mối quan hệ 1 – n
Để chuyển đổi thành quan hệ mới với khóa chính, cần kết hợp hai thuộc tính khóa từ hai quan hệ khác nhau Nếu có thuộc tính mối kết hợp, nó sẽ trở thành thuộc tính của quan hệ mới.
Hình 14: Minh hoạ mối quan hệ n – n
-Mối kết hợp 3 ngôi (Ba thực thể tham gia vào mối kết hợp)
Khi chuyển đổi thành một quan hệ mới, khóa chính sẽ bao gồm ba thuộc tính khóa từ ba thực thể tham gia vào mối kết hợp Nếu có thuộc tính mối kết hợp, nó sẽ trở thành thuộc tính của quan hệ mới.
Hình 15: Minh hoạ mối quan hệ 3 ngôi
-Thuộc tính đa trị (Thuộc tính có nhiều giá trị cho một thể hiện)
Chuyển đổi thành quan hệ mới với khóa chính bao gồm thuộc tính đa trị và thuộc tính khóa của thực thể Sau khi thực hiện chuyển đổi, thuộc tính đa trị sẽ không còn tồn tại trong thực thể cũ Ví dụ minh họa cho quá trình này sẽ giúp làm rõ hơn về việc loại bỏ thuộc tính đa trị.
Hình 16: Minh hoạ thuộc tính đa trị
2.6 Mô hình hướng đối tượng
Mô hình dữ liệu hướng đối tượng (Object Oriented Data Model) xuất hiện vào cuối những năm 80 và đầu những năm 90, là mô hình tiên tiến nhất hiện nay Nó dựa trên phương pháp lập trình hướng đối tượng, sử dụng các khái niệm như lớp (class), kế thừa (inheritance) và kế thừa bội (multi-inheritance) Các đặc trưng nổi bật của mô hình này bao gồm tính đóng gói (encapsulation), tính đa hình (polymorphism) và khả năng tái sử dụng (reusability).
Lớp (class) là một kiểu dữ liệu có cấu trúc, bao gồm các thành phần dữ liệu và phương thức xử lý chúng Đây là một dạng dữ liệu trừu tượng, nơi các phương thức phục vụ cho việc thao tác trên dữ liệu Sự hòa quyện giữa dữ liệu và phương thức tạo thành một thể thống nhất, trong đó dữ liệu cần các cách thức xử lý phù hợp, và các phương thức được tích hợp để phục vụ cho các đối tượng có cấu trúc tương ứng Sự thống nhất này được gọi là sự đóng gói.
Phương pháp tiếp cận hướng đối tượng trong mô hình dữ liệu đang thu hút sự quan tâm nghiên cứu và phát triển mạnh mẽ Mặc dù còn mới mẻ, nhưng các hệ quản trị cơ sở dữ liệu hướng đối tượng hiện nay vẫn chưa phổ biến và một số vẫn chưa hoàn toàn thuần nhất, với việc lập trình theo hướng đối tượng trong khi cơ sở dữ liệu chủ yếu dựa trên mô hình quan hệ.
1.1 Định nghĩa các thuật ngữ : cơ sở dữ liệu, hệ quản trị cơ sở dữ liệu, hệ cơ sở dữ liệu, từ điển cơ sở dữ liệu, mô hình cơ sở dữ liệu.
1.2 Nêu các tính chất của một cơ sở dữ liệu
1.3 Nêu các chức năng của một hệ quản trị cơ sở dữ liệu
1.4 Nêu các mô hình dữ liệu.
1.5 Liệt kê những người có liên quan đến hệ cơ sở dữ liệu
1.6 Xây dựng mô hình ER cho cơ sở dữ liệu:
1.7 Nêu quy tắc chuyển từ mô hình ER sang mô hình quan hệ.
Bài số 1: QUẢN LÝ HỌC VIÊN Ở MỘT TRUNG TÂM TIN HỌC
Trung tâm tin học KTCT cung cấp các lớp tin học ngắn hạn và dài hạn, đáp ứng nhu cầu học tập đa dạng của học viên Các lớp ngắn hạn thường bao gồm một hoặc nhiều môn học, như lớp Tin học văn phòng với các môn Word, Power Point và Excel, trong khi lớp lập trình Pascal chỉ tập trung vào môn Pascal Đối với các lớp dài hạn, như kỹ thuật viên đồ họa đa truyền thông, lập trình, và phần cứng mạng, học viên có cơ hội học nhiều học phần, mỗi học phần lại bao gồm nhiều môn học khác nhau.
Mỗi học viên được cấp một mã học viên (MAHV) duy nhất, chỉ thuộc về một lớp duy nhất; nếu học viên học nhiều lớp cùng lúc, họ sẽ có mã khác nhau cho mỗi lớp Thông tin cá nhân của học viên bao gồm họ tên (HOTEN), ngày sinh (NGAYSINH), nơi sinh (NOISINH), giới tính (PHAI) và nghề nghiệp (NGHENGHIEP), trong đó nghề nghiệp có thể là SINH VIÊN, GIÁO VIÊN, KỸ SƯ, v.v.
Trung tâm KTCT tổ chức nhiều lớp học, mỗi lớp được phân biệt bởi mã lớp duy nhất (MALOP) và các thông tin như tên lớp (TENLOP), thời khoá biểu, ngày khai giảng (NGAYKG) và học phí (HOCPHI) Trung tâm có thể mở nhiều lớp cho cùng một chương trình học tại một thời điểm Đối với các lớp dài hạn, ngày khai giảng đánh dấu sự khởi đầu của mỗi học phần, trong khi học phí được tính cho từng học phần Đối với lớp ngắn hạn, học phí là tổng chi phí cho toàn bộ khoá học.
Trung tâm cung cấp đa dạng các môn học, mỗi môn học được phân biệt bằng mã môn học (MAMH) duy nhất Mỗi môn học còn có tên môn học (TENMH), số tiết lý thuyết (SOTIETLT) và số tiết thực hành (SOTIETTH) cụ thể.
Mỗi học viên sẽ có một điểm thi (DIEMTHI) duy nhất cho từng môn học Khi học viên thanh toán học phí, trung tâm sẽ cung cấp một phiếu biên lai thu tiền, mỗi phiếu biên lai này có một số duy nhất để thuận tiện cho việc quản lý.
Bài số 2: QUẢN LÝ VIỆC MƯỢN/TRẢ SÁCH Ở MỘT 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 đều được gán một mã sách (MASH) riêng biệt để phân biệt với các quyển sách khác, ngay cả khi tác phẩm có nhiều bản sao hoặc nhiều tập Mã sách này không chỉ giúp nhận diện sách mà còn xác định 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 (NHAXB) và năm xuất bản (NAMXB).
Mỗi độc giả sẽ nhận được một thẻ thư viện, trong đó ghi rõ mã độc giả (MAĐG) cùng với thông tin cá nhân như họ tên (HOTEN), ngày sinh (NGAYSINH), địa chỉ (ĐIACHI) và nghề nghiệp (NGHENGHIEP).
Khi mượn sách, độc giả cần đăng ký các cuốn sách vào một phiếu mượn, mỗi phiếu có số phiếu mượn (SOPM) riêng Phiếu mượn sẽ chứa thông tin như ngày mượn sách (NGAYMUON) và mã độc giả Các cuốn sách trong cùng một phiếu mượn không nhất thiết phải được trả lại cùng một lúc, và mỗi cuốn sách có thể xuất hiện trong nhiều phiếu mượn khác nhau tại các thời điểm khác nhau.
Bài số 3: QUẢN LÝ TỔ CHỨC THI TỐT NGHIỆP
Việc tổ chức kỳ thi tốt nghiệp của một khoa như sau:
CÁC KHÁI NIỆM CƠ BẢN TRONG MÔ HÌNH CƠ SỞ DỮ LIỆU
Thuộc tính
Thuộc tính là những đặc điểm đặc trưng 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 và thuộc về một kiểu dữ liệu cụ thể.
Kiểu dữ liệu (data type)
Các thuộc tính được phân loại theo tên gọi và phải thuộc một kiểu dữ liệu nhất định như số, chuỗi, ngày tháng, logic hoặc 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 có kiểu dữ liệu vô hướng, nó được gọi là thuộc tính đơn hoặc thuộc tính nguyên tố; ngược lại, nếu thuộc tính có kiểu dữ liệu có cấu trúc, nó không được xem 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ú thuộc kiểu chuỗi; và hình ảnh thuộc kiểu hình ảnh.
Miền giá trị (domain of values)
Mỗi thuộc tính thường chỉ nhận giá trị từ một tập con của kiểu dữ liệu, được gọi là miền giá trị của thuộc tính Ví dụ, thuộc tính NỮ có miền giá trị là {nam, nữ}, thuộc tính màu da có miền giá trị là {da trắng, da vàng, da đen, da đỏ}, và thuộc tính điểm thi bao gồm các số trong tập {0; 1; 2; }.
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 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 một nhóm nhiều thuộc tính Ngoài ra, cũng có thể sử dụng các ký hiệu chữ cái kèm theo chỉ số như A1, A2 để phân biệt các thuộc tính cụ thể.
Khi đặt tên thuộc tính, cần lưu ý rằng tên phải gợi nhớ và rõ ràng, không nên quá dài để tránh gây khó khăn trong việc viết câu lệnh truy vấn Đồng thời, tên thuộc tính cũng không nên quá ngắn để đảm bảo thể hiện được ngữ nghĩa Đặc biệt, không được đặt trùng tên cho hai thuộc tính có ngữ nghĩa khác nhau thuộc 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 được xác định sau đó.
Hình 1.1 Thuộc tính của một quan hệ
+ Tất cả các dữ liệu trong cùng 1 một cột đều có dùng kiểu dữ liệu
Lược đồ quan hệ
Lược đồ quan hệ là tập hợp 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 biểu diễn dưới dạng Q(A1, A2, , An).
Ví dụ: Sinhvien (MASV, HOTENSV, NGAYSINH, NOISINH,TINH, MALOP). 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.
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.
Quan hệ
Sự thể hiện của lược đồ quan hệ tại một thời điểm nhất định đượ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 ký hiệu bằng 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ộ giá trị
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.
Quan hệ là một bảng (table) với các cột là các thuộc tính và mỗi dòng được gọi là bộ.
HOCVIEN(Mahv, Hoten, Ngsinh, Noisinh) có q=(1003, Nguyen Van Lam, 1/1/1987, Dong Nai) thể hiện thông tin của học viên với mã số 1003, tên là Nguyễn Văn Lâm, sinh ngày 1 tháng 1 năm 1987 và quê quán tại Đồng Nai.
Tân từ
Quan hệ trong lược đồ quan hệ thể hiện mối liên hệ giữa các thuộc tính, giúp xác định tập khoá và siêu khoá Từ những mối quan hệ này, người dùng có thể phân tích và tổ chức dữ liệu một cách hiệu quả hơn.
Mỗi sinh viên trong lược đồ quan hệ được xác định bằng một mã số sinh viên (MASV) duy nhất Mã số này không chỉ đại diện cho sinh viên mà còn xác định các thuộc tính khác như họ tên (HOTENSV), ngày sinh (NGAYSINH), nơi sinh (NOISINH), tỉnh (TINH) và mã lớp (MALOP).
Khóa, siêu khóa, khóa chỉ định, khóa chính, khóa ngoại
Siêu khóa là tập hợp con các thuộc tính của bảng Q, với giá trị của chúng có khả năng phân biệt giữa hai bộ khác nhau trong cùng một thể hiện của TQ.
Một quan hệ có thể có ít nhất một siêu khóa hay nhiều siêu khóa.
Ví dụ: Các siêu khóa của lược đồ quan hệ HOCVIEN là:{Mahv}; {Mahv,Hoten}; {Mahv, Noisinh, Hoten}
Hình 1.2 Lược đồ quan hệ HOCVIEN và siêu khoá
- Định nghĩa: K là khóa của quan hệ R, thỏa mãn 2 điều kiện:
- K là siêu khóa “nhỏ nhất” (chứa ít thuộc tính nhất và khác rỗng) nghĩa là
K1 K, K1 sao cho K1 là siêu khóa.
-Thuộc tính tham gia vào một khóa gọi là thuộc tính khóa, ngược lại là thuộc tính không khóa.
Ví dụ 1: Các siêu khóa của quan hệ HOCVIEN là: {Mahv}; {Mahv,Hoten}; {Hoten};{Hoten,Gioitinh};{Noisinh,Hoten}; {Mahv,Hoten,Gioitinh,Noisinh}…
thì khóa của quan hệ HOCVIEN có thể là {Mahv}; {Hoten}
Khóa của quan hệ GIANGDAY được xác định bởi các thuộc tính Malop và Mamh, tạo thành tập khóa K={Malop, Mamh} Trong khi đó, các thuộc tính không khóa bao gồm Magv, HocKy và Nam.
Trong lược đồ, cột dữ liệu phải đảm bảo không rỗng và duy nhất, với khóa chính xác định một cách độc nhất bộ giá trị trong lược đồ.
- Ký hiệu: các thuộc tính nằm trong khóa chính khi liệt kê trong quan hệ phải được gạch dưới.
- VD: HOCVIEN (Mahv,Hoten,Gioitinh,Noisinh,Malop)
GIANGDAY(Mamh,Malop,Magv,Hocky,Nam)
- Các khóa còn lại (không được chọn làm khóa chính) gọi là khóa tương đương.
- Ví dụ: trong hai khóa {Mahv},{Hoten} thì khóa chính là {Mahv}, khóa tương đương là {Hoten}
Là một hoặc nhiều trường trong một lược đồ mà các trường này là khóa chính của một lược đồ khác
Ví dụ, cho 2 quan hệ
LOP (Malop,Tenlop,Siso,Khoahoc)
HOCVIEN (Mahv, Hoten, Gioitinh,Noisinh,Malop)
Thuộc tính Malop trong quan hệ LOP đóng vai trò là khóa chính, trong khi thuộc tính Malop trong quan hệ HOCVIEN là khóa ngoại, liên kết và tham chiếu đến Malop trong quan hệ LOP.
Cho R={a1,a2,… ,an} là tập các thuộc tính ,r ={h1,h2,…,hn}là 1 quan hệ trên
R, và A,B là tập con của R Khi đó ta nói :A xác định hàm cho B hay B phụ thuộc hàm vào A trong r.
Ràng buộc toàn vẹn trong cơ sở dữ liệu là những quy tắc bất biến xác định mối quan hệ giữa các dữ liệu và đảm bảo rằng hệ thống luôn tuân thủ các điều kiện từ ứng dụng thực tế Để duy trì tính toàn vẹn, cơ sở dữ liệu cần được kiểm tra và đảm bảo thỏa mãn các ràng buộc này sau mỗi thao tác thay đổi Bối cảnh của ràng buộc toàn vẹn được mô tả bởi các lược đồ quan hệ, trong khi các thao tác như thêm, xoá, sửa có ảnh hưởng đến ràng buộc toàn vẹn sẽ được ghi nhận trong bảng tầm ảnh hưởng, giúp dễ dàng xác định phương thức xử lý khi thao tác trên dữ liệu.
Khi định nghĩa khóa trong lược đồ quan hệ, chúng ta thiết lập một quy tắc gọi là ràng buộc khóa Ràng buộc này liên quan đến lược đồ quan hệ mà khóa được xác định, và các thao tác thêm, sửa có thể tác động đến ràng buộc đó.
Các phép tính trên cơ sở dữ liệu quan hệ
Nội dung của cơ sở dữ liệu có thể được cập nhật bằng các thao tác
Phép chèn thêm một bộ vảo quan hệ r{A1,…,An}.
Trong đó Ai(i=1, , n) là tên các thuộc tính và didom(Ai).
Phép loại bỏ (DEL) là một thao tác xóa, nhằm loại bỏ một bộ ra khỏi một quan hệ đã cho Tương tự như phép chèn, phép loại bỏ có thể được biểu diễn bằng công thức toán học: r = r - t.
DEL(r; A1 A2…,An=dn) hoặc ngắn gọn hơn có thể viết:
Khi cần điều chỉnh một số giá trị nào đó tại một số thuộc tính, lúc đó ta sử dụng phép thay đổi.
Tập {C1,…, Cp} là tập các thuộc tính trong {A1,…, An} mà giá trị của bộ cần thay đổi Câu lệnh CH(r; A1 A2…, An=dn; C1 C2…, Cp=ep) cho phép thực hiện việc này Nếu K={B1,…, Bm} là khóa của quan hệ, thì chỉ cần ghi lại kết quả.
CH(r; B1, B2,…, Bm=bm; C1 C2 …, Cp=ep).
1.1 Nêu khái niệm : Thuộc tính, quan hệ, lược đồ quan hệ, bộ giá trị, khóa, ràng buộc toàn vẹn, phụ thuộc hàm.
1.2 Các thao tác trên quan hệ:
Trả lời các câu hỏi sau:
Bài số 1: Cho mô hình quan hệ:
- Xác định tên quan hệ, thuộc tính, khóa chính, khóa ngoại của các quan hệ
Bài số 2: Dựa vào mẫu hoá đơn bán hàng hãy thiết kế mô hình dữ liệu quan hệ
Trong hóa đơn, ngày lập hóa đơn được xác định rõ ràng; mã khách hàng giúp nhận diện tên và địa chỉ của khách; mã hàng cung cấp thông tin về tên hàng hóa, đơn vị tính, đơn giá và số lượng sản phẩm.
Bài số 3: Thiết kế mô hình dữ liệu quan hệ dựa vào mẫu phiếu mượn sách trong thư viện.
Số phiếu mượn sẽ xác định ngày mượn, trong khi mã sinh viên giúp nhận diện tên sinh viên và mã lớp Thêm vào đó, mã sách cung cấp thông tin về tên sách, nhà xuất bản và các ghi chú liên quan.
PHÉP HỘI, PHÉP GIAO, PHÉP TRỪ TRÊN ĐẠI SỐ QUAN HỆ
Giới thiệu về đại số quan hệ
1.1 Định nghĩa Đại số quan hệ (ĐSQH) có nền tảng toán học (cụ thể là lý thuyết tập hợp) để mô hình hóa CSDL quan hệ Đối tượng xử lý là các quan hệ trong cơ sở dữ liệu quan hệ.
- Cho phép mô tả các phép toán rút trích dữ liệu từ các quan hệ trong cơ sở dữ liệu quan hệ.
- Cho phép tối ưu quá trình rút trích bằng các phép toán có sẵn của lý thuyết tập hợp.
1.3 Biểu thức đại số quan hệ
- Biểu thức ĐSQH là một biểu thức gồm các phép toán ĐSQH
- Biểu thức ĐSQH được xem như một quan hệ (không có tên)
- Có thể đặt tên cho quan hệ được tạo từ một biểu thức quan hệ.
- Có thể đổi tên các thuộc tính của quan hệ được tạo từ một biểu thức ĐSQH.
1.4 Phép toán trên Đại số quan hệ
Đại số quan hệ bao gồm các phép toán tác động lên các quan hệ, với kết quả là một quan hệ mới Các phép toán này được thực hiện trên hai quan hệ và dựa trên lý thuyết tập hợp trong toán học, bao gồm phép hội (R∪S), phép giao (R∩S), phép trừ (R-S) và phép tích (R×S).
Đối với các phép toán như hội, giao và trừ trong lý thuyết tập hợp, các quan hệ R và S cần phải tương thích hoặc khả hợp khi chúng được định nghĩa trên cùng một lược đồ quan hệ hoặc trên cùng một tập các miền giá trị, tức là được xác định trên cùng một tập các thuộc tính.
Số lượng thuộc tính của R và S phải bằng nhau: R(A1,A2,…An) và S(B1,B2,…
Miền giá trị của thuộc tính phải tương thích dom(Ai)=dom(Bi)
Quan hệ kết quả của phép hội, giao, trừ có cùng tên thuộc tính với quan hệ đầu tiên.
VD: Hai quan hệ tương thích khả hợp
Phép hội (hợp) 2 quan hệ (Union)
Hai quan hệ R và S được coi là khả hợp Hội (hợp) của hai quan hệ này, ký hiệu là R ∪ S, là một quan hệ trên lược đồ quan hệ Q, bao gồm các phần tử thuộc R, S hoặc cả hai, với điều kiện các bộ trùng lặp sẽ bị loại bỏ.
- Phép hội (hợp) của hai quan hệ là phép gộp các bộ của hai bảng của một quan hệ thành một bảng và bỏ đi các bộ trùng.
Ví dụ: Cho 2 quan hệ R và S khả hợp và kết quả phép hội của R và S
Phép giao 2 quan hệ (Intersection)
Cho hai quan hệ tương thích R và S Giao của hai quan hệ R và S ký hiệu là
RS là một quan hệ trên lược đồ quan hệ Q gồm các phần tử vừa thuộc R vừa thuộc S, tức là:
Phép giao của hai quan hệ là lấy ra các bộ cùng có mặt ở cả hai bảng của một quan hệ.
Phép Trừ 2 quan hệ (Minus)
Hai quan hệ R và S có thể được xem xét trong lược đồ quan hệ Q Hiệu của hai quan hệ này, ký hiệu là R - S, là một quan hệ bao gồm các phần tử chỉ thuộc R mà không thuộc S.
Phép trừ của hai quan hệ A và B là lấy các bộ có trong bảng A mà không có trong bảng B
Lưu ý: Phép trừ không có tính chất giao hoán (R - S S - R)
CÂU HỎI - BÀI TẬP 3.1 Cho hai quan hệ R, S
3.2 Cho hai quan hệ r,s trên lược đồ quan hệ R = (ABC) :
3.3 Cho hai quan hệ sau:
Nội dung chính cần ghi nhớ:
-Khái niệm về phép hội, phép giao, phép trừ trên đại số tập hợp.
-Thực hiện được các phép toán trên.
PHÉP TÍCH ĐỀ CÁC VÀ PHÉP CHIA TRÊN ĐẠI SỐ QUAN HỆ
Tích Decac của 2 quan hệ (Cartesian Product)
Cho quan hệ r(R), R={A1,A2, ,An} và quan hệ s(U), U={B1,B2, ,Bm} Tích Descartes (decac) của r và s ký hiệu là r x s. r x s ={t=(a1,a2, ,an, b1,b2, ,bm) /a1,a2, ,an r và b1,b2, ,bm s}
- Kết quả trả về là một quan hệ Q.
- Mỗi bộ của Q là tổ hợp giữa 1 bộ trong r và 1 bộ trong s.
- Nếu r có u bộ và s có v bộ thì Q sẽ có u v bộ.
- Nếu r có n thuộc tính và s có m thuộc tính thì Q sẽ có n + m thuộc tính (R +
Q + ) (R + : Tập thuộc tính của R, Q + : Tập thuộc tính của Q).
Ví dụ 1.1: Cho quan hệ r và s, kết quả r x s
Ví dụ 1.2: Cho quan hệ NHANVIEN và PHONGBAN
Phép tích Decartes giữa bảng Nhân viên và bảng Phòng ban tạo ra tổ hợp tất cả các bộ dữ liệu, dẫn đến sai sót trong thông tin Ví dụ, một nhân viên có thể làm việc ở hai phòng ban khác nhau hoặc một phòng ban có thể có hai trưởng phòng Để khắc phục vấn đề này, phép tích Decartes thường được kết hợp với điều kiện chọn, chỉ thực hiện khi các điều kiện (thường là ràng buộc khoá ngoại) được thoả mãn.
Trong ví dụ này, điều kiện lựa chọn là giá trị thuộc tính phong trong bảng Nhanvien phải trùng với giá trị thuộc tính mapb trong bảng Phongban Điều này có nghĩa là chỉ thực hiện phép tích decas khi phong trùng với mapb, được biểu diễn bằng công thức: phong = mapb.
Lúc này kết quả sẽ là:
Phép chia 2 quan hệ
Cho 2 lược đồ quan hệ Q1(A1,A2, ,An), Q2(B1,B2, ,Bm), r là quan hệ xác định trên Q1; s là quan hệ xác định trên Q2 (n>m và s khác rỗng), có m thuộc tính chung (giống nhau về mặt ngữ nghĩa, hoặc các thuộc tính có thể so sánh được) giữa r và s Phép chia 2 quan hệ r và s ký hiệu r ÷ s , là một quan hệ q có n
- m thuộc tính được định nghĩa như sau: q= r ÷ s={t/ u s, (t,u) r}
Phép chia được dùng để lấy ra một số bộ trong quan hệ r sao cho thỏa với tất cả các bộ trong quan hệ s.
4.1 Cho hai quan hệ NHANVIEN và PHONG như sau:
Hãy thực hiện phép tích Đề các trên 2 quan hệ trên.
Cho biết ràng buộc (điều kiện lọc) để phép tích Đề các trên đúng với thực tế
PHÉP CHIẾU VÀ PHÉP CHỌN TRONG ĐẠI SỐ QUAN HỆ
Phép chiếu ( Project)
Dùng để trích giá trị của một số thuộc tính trong danh sách các thuộc tính của quan hệ
Phép chiếu được ký hiệu là:
( R) hoặc Quan hệ [cột1, cột2, cột3, …]
Trong đó là ký hiệu dùng để biểu diễn phép chiếu và là một danh sách con các thuộc tính của quan hệ R
R là một biểu thức đại số quan hệ, đại diện cho tên của một quan hệ trong trường hợp đơn giản nhất Phép chiếu cho ra một quan hệ chỉ bao gồm các thuộc tính trong , với thứ tự tương ứng Do đó, cấp của quan hệ kết quả tương ứng với số lượng thuộc tính có trong .
Ví dụ: Cho biết họ tên nhân viên và giới tính ?
Hình 4.1: Kết quả phép chiếu Hoten, phai của quan hệ NHANVIEN
Số lượng bộ trong quan hệ kết quả từ một phép chiếu không bao giờ vượt quá số lượng bộ trong R Nếu danh sách chiếu là một siêu khóa của R, tức là nó bao gồm ít nhất một khóa của R, thì quan hệ kết quả sẽ có số bộ tương đương với R Hơn nữa, nếu danh sách 2 chứa tất cả các thuộc tính của danh sách 1, điều này cũng được xác nhận.
< danh sách1>(< danh sách2> ( R)) = < danh sách 1> ( R)
Nếu chỉ bao gồm các thuộc tính không phải thuộc tính khoá của R thì Phép chiếu sẽ loại bỏ mọi bộ trùng lặp
+ Mở rộng phép chiếu bằng cách cho phép sử dụng các phép toán số học trong danh sách thuộc tính.
Ký hiệu: F1, F2, …, Fn (E) trong đó : E là biểu thức ĐSQH
F1, F2, …, Fn là các biểu thức số học liên quan đến
Cho biết họ tên của các nhân viên và lương của họ sau khi tăng 10%
Chúng ta có thể thực hiện nhiều phép toán quan hệ liên tiếp bằng cách lồng ghép chúng thành một biểu thức đại số quan hệ duy nhất, hoặc áp dụng từng phép toán một để tạo ra các quan hệ kết quả trung gian.
Phép chọn (Selection)
Phép chọn được sử dụng để c họn ra các dòng (bộ) trong quan hệ thỏa điều kiện chọn Phép chọn được ký hiệu là:
Phép chọn, ký hiệu bằng , được sử dụng để trích xuất dữ liệu từ một quan hệ R dựa trên một điều kiện logic cụ thể Điều kiện này được áp dụng cho các thuộc tính của R và được diễn đạt dưới dạng biểu thức đại số quan hệ Kết quả của phép chọn sẽ tạo ra một quan hệ mới có các thuộc tính tương tự như quan hệ ban đầu Biểu thức đại số quan hệ đơn giản nhất chính là tên của một quan hệ trong cơ sở dữ liệu.
Biểu thức logic chỉ ra trong được tạo nên từ một số hạng mục có dạng :
Trong một truy vấn, bạn có thể sử dụng cú pháp hoặc để so sánh các thuộc tính trong cơ sở dữ liệu Trong đó, đại diện cho thuộc tính trong quan hệ, sử dụng các toán tử như {, ≠}, và là giá trị cố định thuộc miền giá trị của thuộc tính Để xây dựng điều kiện chọn phức tạp hơn, bạn có thể kết hợp các hạng mục bằng các phép toán lôgic như AND (^), OR (v) và NOT.
Kết quả của một phép chọn được xác định bằng cách áp dụng điều kiện chọn cho mỗi bộ t trong R một cách độc lập Mỗi thuộc tính Ai trong điều kiện chọn sẽ được thay thế bằng giá trị t[Ai] tương ứng trong bộ Nếu điều kiện chọn trả về giá trị đúng, bộ t đó sẽ được chọn và tất cả các bộ được chọn sẽ được đưa vào kết quả của phép chọn.
OR, NOT được thực hiện theo quy tắc bình thường của chúng.
Phép chọn là một phép toán một ngôi, áp dụng cho một quan hệ cụ thể Nó được thực hiện độc lập cho từng bộ, do đó các điều kiện chọn không thể liên quan đến nhiều bộ khác nhau Quan hệ kết quả từ phép chọn có cấp tương tự như cấp của R, và số lượng bộ trong quan hệ kết quả luôn nhỏ hơn hoặc bằng số bộ trong R.
Ví dụ 1: Cho biết các nhân viên nam
Hình 4.2: Kết quả phép chọn những nhân viên có giới tính nam
Ví dụ 2: Cho biết các nhân viên nam sinh sau năm 1975.
Cách 2: (NhanVien: Phai=‘Nam’ Year(NTNS)>1975)
Hình 4.3: Kết quả phép chọn những nhân viên có giới tính nam, sinh sau 1975
+ Phép chọn là một phép toán có tính chất giao hoán, nghĩa là
Hơn nữa ta có thể kết hợp một loạt các phép chọn thành một phép chọn đơn giản bằng cách sử dụng phép toán AND Ví dụ:
Ví dụ: Tìm tên những lớp có sĩ số từ 30 học viên trở lên thuộc k14 hoặc k15 nhưng sĩ số từ 40 trở lên
Cách 2: HOCVIEN: ((SISO>0) ^ (KHOAHOC) V (SISO>@) ^ (KHOAHOC=1)) [TENLOP]
Lưu ý: khi thực hiện phép chọn hãy xác định điều kiện của phép chọn là gì? Có mấy điều kiện, Sử dụng toán tử nào
Phép gán
Khi xây dựng các quan hệ trung gian trong việc thực hiện các phép toán, cần phải đặt tên cho quan hệ đó như một biểu thức đại số quan hệ đơn.
Để lấy thông tin về họ tên và lương của các nhân viên có mã số 4, chúng ta cần sử dụng phép chọn và phép chiếu trong đại số quan hệ Biểu thức đại số quan hệ cho trường hợp này có thể được viết như sau:
Một cách khác, chúng ta có thể tạo ra kết quả trung gian và viết biểu thức trên thành dãy các phép toán như sau:
Phân tích một chuỗi phức tạp các phép toán thường dễ hơn so với việc viết một biểu thức đại số quan hệ đơn giản Để đổi tên các thuộc tính trong một quan hệ, chúng ta cần liệt kê các tên mới trong cặp dấu ngoặc.
Cho kết quả là quan hệ R, trong đó thuộc tính Hoten được đặt lại tên thành Hovaten
Trong phép chọn, tên các thuộc tính trong quan hệ kết quả giống như tên trong quan hệ ban đầu và giữ nguyên thứ tự Đối với phép chiếu, nếu không có việc đặt lại tên, quan hệ kết quả sẽ có tên thuộc tính giống như trong danh sách chiếu và thứ tự của chúng cũng sẽ tương ứng với thứ tự xuất hiện trong danh sách đó.
Phép toán đặt lại tên cho phép chúng ta thay đổi tên của một quan hệ, các tên thuộc tính, hoặc cả hai.
Phép gom nhóm và các hàm nhóm
Các hàm hay áp dụng để thu thập các giá trị số là hàm Tổng (SUM), Trungbình
(AVERAGE), Tính giá trị lớn nhất (MAX), Giá trị bé nhất (MIN) Hàm Đếm (COUNT) được sử dụng để đếm các bộ giá trị.
Nhóm các bộ trong một quan hệ dựa trên giá trị của một số thuộc tính và sau đó áp dụng các hàm nhóm độc lập cho từng nhóm Định nghĩa một phép toán nhóm như sau:
Các thuộc tính nhóm trong R được biểu thị bằng ký hiệu phép toán hàm nhóm, bao gồm danh sách các thuộc tính của quan hệ Danh sách hàm bao gồm các cặp như (), trong đó có thể là các hàm như SUM, AVERAGE, MAX, MIN, COUNT.
Thuộc tính trong R là một yếu tố quan trọng của quan hệ, bao gồm các thuộc tính nhóm và một thuộc tính riêng cho mỗi phần tử trong danh sách hàm.
1 Để lấy ra theo MaSoĐV các nhân viên và lương trung bình của các nhân viên theo từng đơn vị, ta có thể viết:
MaSoDV COUNT ( ), AVERAGE(Luong)( NhanVien)
2 Điểm thi cao nhất, thấp nhất, trung bình của môn CSDL?
max( Diem ), min( Diem ), agv( Diem )Mamh 'CSDL' (KETQUATHI)
3 Điểm thi cao nhất, thấp nhất, trung bình của từng môn?
Mamh max( Diem ), min( Diem ), avg( Diem ) (KETQUATHI)
Bài số 1: Cho lược đồ cơ sở dữ liệu
SinhVien (MASV, HOTENSV, NU, NGAYSINH, NOISINH,TINH,MALOP) Lop (MALOP,TENLOP, MAKHOA)
Khoa(MAKHOA,TENKHOA) Monhoc(MAMH,TENMH,DONVIHT)
GiangVien (MAGV,HOTENGV,HOCVI,CHUYENNGANH,MAKHOA)
KetQua (MASV, MAMH, LANTHI, DIEMTHI)
Thực hiện các yêu cầu sau bằng ngôn ngữ đại số quan hệ:
1 Lập danh sách những sinh viên có hộ khẩu thường trú ở tỉnh “LONG AN”, danh sách cần các thông tin: MASV, HOTENSV, NGAYSINH, TENLOP
2 Lập danh sách các sinh viên của lớp có MALOP là CDTH2A, danh sách cần các thông tin: MASV, HOTENSV, NGAYSINH, TINH.
3 Lập danh sách các giảng viên có cấp học vị là THAC SY của khoa có MAKHOA là “CNTT”, danh sách cần: MAGV,HOTENGV, CHUYENNGANH.
Bài số 2: Cho lược đồ cơ sở dữ liệu
KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO,
NHANVIEN (MANV,HOTEN, NGVL, SODT)
SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA)
HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA)
Thực hiện các yêu cầu sau bằng ngôn ngữ đại số quan hệ:
1 In ra danh sách các sản phẩm (MASP,TENSP) do “Trung Quoc” sản xuất.
2 In ra danh sách các sản phẩm (MASP, TENSP) có đơn vị tính là “cay”,
3 In ra danh sách các sản phẩm (MASP,TENSP) có mã sản phẩm bắt đầu là “B” và kết thúc là “01”.
4 In ra danh sách các sản phẩm (MASP,TENSP) do “Trung Quốc” sản xuất có giá từ 30.000 đến 40.000.
5 In ra danh sách các sản phẩm (MASP,TENSP) do “Trung Quoc” hoặc “Thai Lan” sản xuất có giá từ 30.000 đến 40.000.
6 In ra các số hóa đơn, trị giá hóa đơn bán ra trong ngày 1/1/2007 và ngày 2/1/2007.
7 In ra các số hóa đơn, trị giá hóa đơn trong tháng 1/2007, sắp xếp theo ngày (tăng dần) và trị giá của hóa đơn (giảm dần).
8 In ra danh sách các khách hàng (MAKH, HOTEN) đã mua hàng trong ngày 1/1/2007.
9 In ra số hóa đơn, trị giá các hóa đơn do nhân viên có tên “Nguyen Van B” lập trong ngày 28/10/2006.
10 In ra danh sách các sản phẩm (MASP,TENSP) được khách hàng có tên
“Nguyen Van A” mua trong tháng 10/2006.
11 Tìm các số hóa đơn đã mua sản phẩm có mã số “BB01” hoặc “BB02”.
12 Tìm các số hóa đơn đã mua sản phẩm có mã số “BB01” hoặc “BB02”, mỗi sản phẩm mua với số lượng từ 10 đến 20.
Bài số 3: Cho lược đồ cơ sở dữ liệu với các lược đồ quan hệ như sau:
KHACHHANG(MAKH, TEN, DCHI, DTHOAI)
NHANVIEN(MANV,TEN, DCHI, DTHOAI, LUONG, LOAINV)
CHUYENBAY(MACB, SBDI, SBDEN, GIODI, GIODEN)
LICHBAY(NGAYDI, MACB, SOHIEU, MALOAI)
Thực hiện các yêu cầu sau bằng ngôn ngữ đại số quan hệ:
1 Cho biết mã số, tên phi công, địa chỉ, điện thoại của các phi công đã từng lái máy bay loại B747.
2 Cho biết mã số và ngày đi của các chuyến bay xuất phát từ sân bay DCA trong khoảng thời gian từ 14 giờ đến 18 giờ.
3 Cho biết tên những nhân viên được phân công trên chuyến bay có mã số 100 xuất phát tại sân bay SLC Các dòng dữ liệu xuất ra không được phép trùng lắp.
4 Cho biết mã loại và số hiệu máy bay đã từng xuất phát tại sân bay MIA Các dòng dữ liệu xuất ra không được phép trùng lắp.
5 Cho biết mã chuyến bay, ngày đi, cùng với tên, địa chỉ, điện thoại của tất cả các hành khách đi trên chuyến bay đó Sắp xếp theo thứ tự tăng dần của mã chuyến bay và theo ngày đi giảm dần.
6 Cho biết mã chuyến bay, ngày đi, cùng với tên, địa chỉ, điện thoại của tất cả những nhân viên được phân công trong chuyến bay đó Sắp xếp theo thứ tự tăng dần của mã chuyến bay và theo ngày đi giảm dần.
7 Cho biết mã chuyến bay, ngày đi, mã số và tên của những phi công được phân công vào chuyến bay hạ cánh xuống sân bay ORD.
8 Cho biết các chuyến bay (mã số chuyến bay, ngày đi và tên của phi công) trong đó phi công có mã 1001 được phân công lái.
9 Cho biết thông tin (mã chuyến bay, sân bay đi, giờ đi, giờ đến, ngày đi) của những chuyến bay hạ cánh xuống DEN Các chuyến bay được liệt kê theo ngày đi giảm dần và sân bay xuất phát (SBDI) tăng dần
Mỗi phi công đều có khả năng điều khiển các loại máy bay nhất định, vì vậy cần chỉ rõ hãng sản xuất và mã loại máy bay mà từng phi công có thể bay Danh sách này sẽ bao gồm tên phi công, hãng sản xuất và mã loại máy bay tương ứng.
11 Cho biết mã phi công, tên phi công đã lái máy bay trong chuyến bay mã số
12 Cho biết mã chuyến bay, mã nhân viên, tên nhân viên được phân công vào chuyến bay xuất phát ngày 10/31/2000 tại sân bay MIA vào lúc 20:30
13 Cho biết thông tin về chuyến bay (mã chuyến bay, số hiệu, mã loại, hãng sản xuất) mà phi công “Quang” đã lái.
14 Cho biết tên của những phi công chưa được phân công lái chuyến bay nào.
15 Cho biết tên khách hàng đã đi chuyến bay trên máy bay của hãng “Boeing”
16 Cho biết mã các chuyến bay chỉ bay với máy bay số hiệu 10 và mã loại B747.
Đối với mỗi sân bay (SBDEN), hãy xác định số lượng chuyến bay hạ cánh tại sân bay đó Kết quả sẽ được trình bày theo thứ tự tăng dần của sân bay đến.
18.Với mỗi sân bay (SBDI), cho biết số lượng chuyến bay xuất phát từ sân bay đó, sắp xếp theo thứ tự tăng dần của sân bay xuất phát.
19.Với mỗi sân bay (SBDI), cho biết số lượng chuyến bay xuất phát theo từng ngày Xuất ra mã sân bay đi, ngày và số lượng.
20.Với mỗi sân bay (SBDEN), cho biết số lượng chuyến bay hạ cánh theo từng ngày Xuất ra mã sân bay đến, ngày và số lượng.
21.Với mỗi lịch bay, cho biết mã chuyến bay, ngày đi cùng với số lượng nhân viên không phải là phi công của chuyến bay đó.
22.Số lượng chuyến bay xuất phát từ sân bay MIA vào ngày 11/01/2000.
Đối với mỗi chuyến bay, hãy cung cấp mã chuyến bay, ngày khởi hành và số lượng nhân viên được phân công cho chuyến bay đó, sắp xếp theo thứ tự giảm dần của số lượng nhân viên.
Đối với mỗi chuyến bay, hãy cung cấp mã chuyến bay, ngày khởi hành và số lượng hành khách đã đặt chỗ Thông tin này cần được sắp xếp theo thứ tự giảm dần của số lượng hành khách.
Mỗi chuyến bay cần cung cấp mã chuyến bay, ngày khởi hành và tổng lương của phi hành đoàn Thông tin này sẽ được sắp xếp theo thứ tự tăng dần của tổng lương để dễ dàng theo dõi và quản lý.
26 Cho biết lương trung bình của các nhân viên không phải là phi công.
27 Cho biết mức lương trung bình của các phi công.
Đối với từng loại máy bay, hãy cung cấp số lượng chuyến bay đã hạ cánh xuống sân bay ORD Kết quả bao gồm mã loại máy bay và số lượng chuyến bay tương ứng.
29 Cho biết sân bay (SBDI) và số lượng chuyến bay có nhiều hơn 2 chuyến bay xuất phát trong khoảng 10 giờ đến 22 giờ.
30 Cho biết tên phi công được phân công vào ít nhất 2 chuyến bay trong cùng một ngày.
31 Cho biết mã chuyến bay và ngày đi của những chuyến bay có ít hơn 3 hành khách đặt chỗ.
32 Cho biết số hiệu máy bay và loại máy bay mà phi công có mã 1001 được phân công lái trên 2 lần.
33.Với mỗi hãng sản xuất, cho biết số lượng loại máy bay mà hãng đó đã sản xuất Xuất ra hãng sản xuất và số lượng.
34 Cho biết hãng sản xuất, mã loại và số hiệu của máy bay đã được sử dụng nhiều nhất.
35 Cho biết tên nhân viên được phân công đi nhiều chuyến bay nhất.
36 Cho biết thông tin của phi công (tên, địa chỉ, điện thoại) lái nhiều chuyến bay nhất.
37 Cho biết sân bay (SBDEN) và số lượng chuyến bay của sân bay có ít chuyến bay đáp xuống nhất.
38 Cho biết sân bay (SBDI) và số lượng chuyến bay của sân bay có nhiều chuyến bay xuất phát nhất.
39 Cho biết tên, địa chỉ, và điện thoại của khách hàng đã đi trên nhiều chuyến bay nhất.
40 Cho biết mã số, tên và lương của các phi công có khả năng lái nhiều loại máy bay nhất.
41 Cho biết thông tin (mã nhân viên, tên, lương) của nhân viên có mức lương cao nhất.
42 Cho biết tên, địa chỉ của các nhân viên có lương cao nhất trong phi hành đoàn (các nhân viên được phân công trong một chuyến bay) mà người đó tham gia.
43 Cho biết mã chuyến bay, giờ đi và giờ đến của chuyến bay bay sớm nhất trong ngày.
44 Cho biết mã chuyến bay có thời gian bay dài nhất Xuất ra mã chuyến bay và thời gian bay (tính bằng phút).
45 Cho biết mã chuyến bay có thời gian bay ít nhất Xuất ra mã chuyến bay và thời gian bay.
46 Cho biết mã chuyến bay và ngày đi của những chuyến bay bay trên loại máy bay B747 nhiều nhất.
Đối với mỗi chuyến bay có hơn 3 hành khách, hãy cung cấp mã chuyến bay cùng với số lượng nhân viên phục vụ trên chuyến bay đó Kết quả cần xuất ra bao gồm mã chuyến bay và số lượng nhân viên tương ứng.