You are on page 1of 372

Kỹ thuâṭ phần mềm

ứng dụng
TS. Nguyễn Thị K i m Thoa
Bộ môn: Điện tử & k ỹ thuật máy tính
Viện: Điện tử Viễn Thông
Trường: ĐH Bách khoa Hà nội

2/21/2021
Giới thiệu
 2 tín chỉ = 45 Tiết
 Học trên lớp
 Điểm QT= Bà i tập lớn + ý thứ c học trên lớp + một số bà i
k i ể m tra không báo trước
 Điểm cuối kỳ = Bà i tập lớn
 Mục đích môn học:
– Các khá i niệm cơ bản trong k ỹ thuật phần m ề m
(software engineering)
– Các bước cơ bản xây dựng phần m ề m , từ lập kế hoạch,
phân tích, thiết kế cho đến bảo trì phần m ề m
– Có k ỹ năng thực hà nh là m phần m ề m theo nhó m

2
Nội dung
1. Giới thiệu tổng quan
2. Các pha trong phát triển phần m ề m
3. Cơ sở dữ liệu
4. Ngôn ngữ SQL

3
Tài liệu tham khảo
1. Software Engineering _a practitioner's approach (5th edition, Roger
Pressman)
2. Nguyễn Văn Ba. Phân tích thiết kế H T T T - N X B ĐHQG Hà Nội
3. Thạc Bình Cường. Phân tích thiết kế H T T T – N X B Khoa học và kỹ
thuật
4. Đinh Thế Hiển. Phân tích thiết kế H T T T – N X B Thố ng kê
5. Ngô Trung Việt, Phân tích và thiết kế hệ thố ng quản lý- k i n h
doanh
– nghiệp vụ, nxb Giao thông Vận tải
6. Lê Tiến Vương, Nhập môn CSDL quan hệ
7. Nguyễn Bá Tường, Cơ sở dữ liệu lý thuyết và thực hà nh, Nxb
ĐHQG

4
Chương 1. Giới thiệu tổng quan

1. Khái niệm và các giai đoạn tiến hóa phần


mềm

2. Các ứng dụng của phần mềm

3. Khái niệm kỹ thuật phần mềm

4. Các lớp của kỹ thuật phần mềm

5. Tiến trình phần mềm

5
1.1 Khái niệm phần mm

Máy tính:
Thực hiện các nhiệm vụ rất khác nhau bằng cách sử
dụng các phần mềm khác nhau
=> Phần mềm tạo ra sự khác biệt giữa các máy tính và
cũng quyết định năng lực của máy tính.

◼ Phần mềm là một cấu phần quan trọng của một hệ thống
thông tin, nó là cách gọi khác của chương trình. Nó bao
gồm tập lệnh để từng bước hướng dẫn máy tính làm việc
nhằm chuyển đổi dữ liệu thành thông tin.

6
Sản phẩm phần mềm
• Sản phẩm chung
o Hệ thống độc lập được tiếp thị và bán cho bất kỳ khách hàng
nào muốn mua chúng.
o Ví dụ - Phần mềm PC như phần mềm soạn thảo văn bản,
chương trình đồ họa, công cụ quản lý dự án; Phần mềm CAD;
phần mềm cho các thị trường cụ thể như hệ thống đặt lịch hẹn
cho nha sĩ.
• Sản phẩm tùy chỉnh
o Phần mềm được ủy quyền bởi một khách hàng cụ thể để đáp
ứng nhu cầu riêng của họ.
o Ví dụ - hệ thống điều khiển nhúng, phần mềm kiểm soát không
7
lưu, hệ thống giám sát giao thông.
Tại sao phần mềm quan trọng?
• Nền kinh tế của TẤT CẢ các quốc gia phát triển đều phụ thuộc
vào phần mềm.
• Ngày càng có nhiều hệ thống được điều khiển bằng phần
mềm (giao thông, y tế, viễn thông, quân sự, công nghiệp, giải trí,
…)
• Kỹ thuật phần mềm liên quan đến các lý thuyết, phương pháp và
công cụ để phát triển phần mềm chuyên nghiệp.
• Chi tiêu cho phần mềm chiếm một phần đáng kể GNP ở tất cả các
nước phát triển.

8
Chi phí phần mm

• Chi phí phần mềm thường chi phối chi phí của hệ thống máy tính.
Chi phí phần mềm trên PC thường lớn hơn chi phí phần cứng.
• Phần mềm tốn nhiều chi phí để bảo trì hơn là để phát triển. Đối với
các hệ thống có tuổi thọ cao, chi phí bảo trì có thể gấp vài lần
chi
phí phát triển.
• Kỹ thuật phần mềm quan tâm đến việc phát triển phần mềm hiệu
quả về chi phí.

9
Các giai đoạn tiến hóa phần mềm
 1950 đến 1960: những năm đầu
 Phần cứng thay đổi liên tục
 Phương thức chính là xử lý
theo lô
 Lập trình “theo bản năng”
 Môi trường lập trình có
tính chất cá nhân
 1960 đến giữa những năm
1970
 Xuất hiện hệ thống đa
nhiệm, đa người sd
 Hệ thống thời gian thực
 Xuất hiện thế hệ đầu tiên
của hệ quản trị CSDL
10
 Việc bảo trì phần mềm tiêu
Các giai đoạn tiến hóa phần mềm (tiếp)

 1970 đến đầu những năm 1990


 Hệ thống phân tán
 Mạng toàn cục và cục bộ, liên lạc số giải thông cao
 Công nghệ chế tạo các bộ vi xử lý tiến bộ nhanh
 Thị trường phần cứng đi vào ổn định
 Thời kỳ sau 1990
 Kỹ nghệ hướng đối tượng
 Quy mô và độ phức tạp của những hệ thống phần mềm mới
cũng tăng đáng kể
 Ra ứng dụng thực tế Phần mềm trí tuệ nhân tạo

11
1.2 Các ứng dụng của phần mm

 Phần mềm hệ thống
 Phần mềm thời gian thực
 Phần mềm nghiệp vụ
 Phần mềm khoa học và kỹ thuật
 Phần mềm nhúng
 Phần mềm cho máy tính cá nhân
 Phần mềm trí tuệ nhân tạo
 Phần mềm phục vụ KTPM

12
Phần mềm hệ thống
– Phục vụ chương trình khác
– Xử lý các cấu trúc thông tin phức tạp nhưng xác định
– Giao tiếp với các thiết bị phần cứng
– Sử dụng nhiều bởi các người dùng
– Giao tiếp với nhiều thiết bị ngoại vi

13
Phần mềm thời gian thực
 Phần mềm thời gian thực là các chương trình giám
sát/phân tích/điều khiển các sự kiện trong thế giới
thực ngay khi nó xảy ra.

 Điển hình của phần mềm thời gian thực là các phần
mềm
điều khiển các thiết bị tự động

14
Phần mềm thời gian thực
 Phần mềm thời gian thực bao gồm các thành tố
– Thành phần thu thập dữ liệu: để thu và định dạng thông tin từ môi
trường ngoài
– Thành phần phân tích: để biến đổi thông tin theo yêu cầu của ứng
dụng
– Thành phần kiểm soát hoặc đưa ra đáp ứng môi trường ngoài
– Thành phần điều phối: để điều hòa các thành phần khác sao cho

thể duy trì việc đáp ứng thời gian thực

15
Phần mềm nghiệp vụ
Phần mềm nghiệp vụ có đặc trưng:
– Phục vụ các hoạt động kinh doanh hay các nghiệp vụ của
tổ chức, doanh nghiệp
– Là lĩnh vực ứng dụng phần mềm lớn nhất

– Là các hệ thống thông tin quản lý gắn chặt với CSDL, các
ứng dụng tương tác như xử lý giao tác cho các điểm bán
hàng.

16
Phần mềm khoa học và kỹ thutậ
 Đặc trưng bởi số lượng thuật toán rất lớn

◼ Thường đòi hỏi phần cứng có năng lực tính toán cao

 Ứng dụng trong các lĩnh vực khoa học khác nhau

 Thiết kế có sự hỗ trợ của máy tính, các hệ thố ng mô


phỏng, và các ứng dụng tương tác khác bắt đầu tính
đến thời gian thực và các đặc điểm của phần m ề m
hệ thố ng

17
Phần mềm nhúng
 Trong các thiết bị thông m i n h
 N ằ m trong bộ nhớ và được sử dụng để điều khiển
thiết bị
 Thực hiện các chức năng một cách hạn chế và
đóng k ín
 Đặc trưng của phần m ề m nhúng:
– N ằ m trong bộ nhớ chỉ đọc
– Có các đặc trưng của phần m ề m thời gian thực và
phần m ề m hệ thố ng

18
Phần mềm cho máy tính cá nhân
 Phá t triển m ạ n h trong khoảng hơn 1 thập k ỷ trở lại đây
 Y ế u tố giao diện người-má y rất được chú trọng
 Một số ứ ng dụng
– phần m ề m xử lý văn bản
– phần m ề m xử lý bảng tính
– phần m ề m xử lý đồ hoạ
– phần m ề m giải trí đa phương tiện
– ……..

19
Phần mềm trí tuệnhân ạto
 Sử dụng các thuật toán phi số để giải quyết các vấn đề
phức tạp m à tính toán hay phân tích trực tiếp
không quản lý nổi

 Các ứng dụng chính: hệ chuyên gia (hay hệ thố ng dựa


trên tri thứ c, các hệ thố ng nhận dạng (tiếng nói và hình
ảnh), chứ ng mi n h định lý, mô phỏng và các trò chơi

20
Phần mềm phục vụ KTPM
 Ví dụ: chương trình dịch, phần m ề m gỡ rối, các
công cụ hỗ trợ phân tích thiết kế (CASE)...

 Có thể xuất hiện dưới dạng phần m ề m má y tính


cá nhân, phần m ề m hệ thố ng hoặc là phần
m ề m nghiệp vụ.

21
Đặc điểm của phần mm

Đặc tính chung của phần mềm:
– Là hàng hóa vô hình
– Không hao mòn nhưng giá trị suy giảm theo thời
gian
– Phần m ề m vốn chứa lỗi tiềm tàng
– Lỗi phần m ề m dễ được phát hiện bởi người ngoài
– Chức năng của phần m ề m thường biến hóa, thay
đổi theo thời gian
– Hiệu ứng làn sóng trong thay đổi phần m ề m
– Phần m ề m vốn chứa ý tưởng và sáng tạo của tác
giả/nhóm làm ra nó
– Có thể sao chép rất đơn giản

22
Đặc điểm của phần mm

 Phần m ề m tốt

23
Các chỉ tiêu cơbản đểđánh giá phần mềm ốt

– Phản ánh đúng yêu cầu người dùng (tính hiệu quả)
– Chứ a ít lỗi tiềm tàng
– Giá t hà n h không vượt quá giá ước lượng ban đầu
– Dễ vận hành, sử dụng
– Tính an toàn và độ tin cậy cao

24
Đặc điểm của phần mềm

Cấu trúc phần m ề m là cấu trúc phân cấp

25
1.3 Khái niệm kỹ thuật phần mềm
 Kỹ thuật phần mềm (Software Engineering): Là một chuyên
ngành kỹ thuật mà quan tâm đến tất cả các khía cạnh của việc sản
xuất phần mềm, với mục tiêu sản xuất ra các sản phẩm phần mềm
đa dạng, chất lượng cao, một cách hiệu quả nhất.

26
Tầm quan trọng của kỹ thuật phần m

• Ngày càng có nhiều cá nhân và xã hội dựa vào các hệ thống phần mềm tiên tiến.
=> cần có khả năng sản xuất các hệ thống đáng tin cậy, kinh tế và nhanh
chóng.
• Về lâu dài, việc sử dụng các phương pháp và kỹ thuật công nghệ phần mềm cho hệ thống phần
mềm thường rẻ hơn là chỉviết chương trình như thể đó là một dự án lập trình cá nhân.
• Đốivới hầu hết các loại hệ thống, phần lớn chi phí là chi phí thay đổi phần mềm sau
khi nó được đưa vào sử dụng.

27
Câu hỏi thường gặp vềkỹ thuật phầnm
m

Câu hỏi Tr ả l ờ i
Phần m ề m là gì? Chương trình má y tính, cấu trúc dữ liệu và tà i liệu liên quan.
Sản p hẩm phần m ề m có thể được phá t triển cho một khá ch
hà ng cụ thể hoặc có thể được phá t triển cho một thị trường
chung.
Đặc trưng của Phần m ề m tốt phải cung cấp chức năng và hiệu suất cần
một phần m ề m tốt thiết cho người dùng; đá ng tin cậy và có thể bảo trì, nâng cấp
là gì? được.
Kỹ thuật phần Kỹ thuật phần m ề m là một ngà nh k ỹ thuật liên quan đến tất
m ề m là gì? cả các khía cạnh của sản xuất phần mềm.
Sự khá c biệt Khoa học má y tính tập trung vào lý thuyết và các nguyên tắc
giữa kỹ thuật cơ bản; k ỹ thuật phần m ề m quan t â m đến tính thực tiễn của
phần m ề m và việc phá t triển và cung cấp phần m ề m hữu ích.
khoa học máy
tính là gì?
Sự khá c biệt Kỹ thuật hệ thố ng liên quan đến tất cả các khía cạnh của
giữa kỹ thuật phá t triển hệ thố ng dựa trên má y tính bao gồm k ỹ thuật
phần m ề m và phần cứng, phần m ề m và quy trình. Kỹ thuật phần m ề m là 28
k ỹ thuật hệ một phần của quy trình tổng quá t nà y.
thố ng là gì?
Thành phần của phần
 mềm
Phần m ề m (sản phẩm phần mềm), bao gồm:
– C h ư ơ n g t r ì n h (Program): là phần được thi hành
trên máy tính
– Dữ li ệ u (Data): gồm các cấu trúc dữ liệu, cơ sở dữ
liệu lưu giữ các dữ liệu vào và ra của chương
trình
– T à i li ệu (Documentation): tài liệu hệ thố ng, tài
liệu người dùng

29
1.4 Các lớp của kỹ thuật phần m
m

Tools

Methods

Process model

Quality Focus
Quality focus
 Đảm bảo chất lượng sản phẩm hay dịch v ụ luôn là
một nhiệm v ụ sống còn của các công ty hay tổ chức.
Do đó, mọi nền tảng công nghệ và k ỹ thuật đều phải
lấy việc đảm bảo chất lượng là mục tiêu hướng tới,
và k ỹ thuật phần m ề m cũng không thể n ằ m ngoài
mục tiêu nà y

31
Process model

 Lớp mô hình tiến trình có nhiệm v ụ định nghĩa một


k hun g các giai đoạn và các hoạt động cần thực
hiện, cũng như các kết quả k è m theo chúng. Tầng
này đóng vai trò nền tảng để kết nối các phương
pháp, công cụ trong các bước thực hiện cụ thể, để có
thể tạo ra các phần m ề m có chất lượng và đúng thời
hạn

32
Methods
– Chỉ ra cách làm về mặt kỹ thuật để xây dựng
phần mềm, được sử dụng trong các bước: lập
kế hoạch, ước lượng dự án, phân tích yêu
cầu hệ thống và phần mềm, thiết kế cấu trúc
dữ liệu, kiến trúc chương trình và thủ tục
thuật toán, mã hóa kiểm thử và bảo trì

33
Tools

– Cung cấp sự hỗ trợ tự động hay bán tự động để phát


triển phần mềm theo từng phương pháp khác nhau
– Các hệ thống phần mềm hỗ trợ trong công nghệ phần
mềm được gọi là CASE (computer-aided software
engineering)

34
1.5 Tiến trình phần mm

 Là một dãy các giai đoạn và các hoạt động trong đó,
cũng như các kết quả k è m theo. Kết quả cuối cùng
chính là phần m ề m cần phải xây dựng, đá p ứ ng được
các yêu cầu của người dùng, và hoàn thành theo đúng
kế hoạch về thời gian và ngân sách
 Có ba giai đoạn chính trong tiến trình phần mềm:
– Giai đoạn định nghĩa (definition phase)
– Giai đoạn phát triển (development phase)
– Giai đoạn hỗ trợ (support phase)

35
Tiến trình phần mm

 G i a i đ o ạ n đ ị n h nghĩa: tập trung vào làm rõ C á i gì,
bao gồm:
– Thông tin gì cần xử lý, bao gồm thông tin đầu vào và
đầu ra.
– Các chức năng gì cần thực hiện.
– Hành vi nào của hệ thố ng sẽ được mong đợi.
– Các tiêu chuẩn hợp lệ nào để đá nh giá được sự
đúng đắn và thành công của hệ thố ng.

36
Tiến trình phần mm

 G i a i đ o ạ n p h á t triển: tập trung vào L à m t h ế nào,
bao gồm:
– Kiến trúc hệ thố ng (system architecture) được tổ chức
thế nào.
– Các chức năng được cài đặt và liên kết với nhau
thế nào.
– Tổ chức các cấu trúc dữ liệu, cơ sở dữ liệu thế nào.
– Chuyển từ thiết kế sang cài đặt thế nào?
– Việc kiể m thử sẽ được thực hiện thế nào?

37
Tiến trình phần mm

 G i a i đ o ạ n h ỗ trợ: còn gọi là giai đoạn bảo trì, tập
trung vào việc ứ ng phó với các thay đổi của hệ thố ng
phần m ề m, bao gồm:
– Sửa lỗi (Correction)
– L à m thích ứng (Adaptation)
– Nâng cấp (Upgrade)
– Phòng ngừa, còn gọi là tái kỹ thuật phần m ề m
(software reengineering)

38
Tiến trình phần mm

Lập kế hoạch dự án

Giai đoạn Thu thập các yêu cầu


định nghĩa
Phân tích

Giai đoạn Thiết kế


Phát
Cài đặt và kiểm thử
triển

Giai đoạn
Hỗ trợ Bảo trì

39
Mô hình tiến trình phần mm

 Mô h ì n h t i ế n t r ì n h (process model) Là một chiến


lược phát triển phần m ề m , bao gồm các cách thứ c
kết hợp, sử dụng tiến trình phần mề m, cách vận
dụng các phương pháp và các công cụ trong mỗi giai
đoạn phát triển.
 Mô hình tiến trình cũng còn được gọi là m ẫ u t i ế n
t r ì n h (process paradigm), hay m ô h ì n h p h á t t r i ể n
phần mềm.

40
Các mô hình tiến trình

 Mô hình tuyến tính cổ điển (mô hình thác nước –


Waterfall model)
 Mô hình bản m ẫ u (Prototyping model)
 Mô hình RAD (Rapid Application Development
model)
 Mô hình tăng trưởng (Incremental model)
 Mô hình xoáy ốc (Spiral model)

41
Mô hình tuyến tính cổ đin

Thu thập các yêu cầu


Các yêu cầu hệ thống
Các yêu cầu phần mềm

Phân tích

Thiết kế chương trình

Cài đặt

Kiểm thử

Vận hành

42
Mô hình tuyến tính cổđin

 Mô hình này có một số đặc điểm như sau:


– Các bước được tiến hành tuần tự, kết thúc bước trước
thì mới thực hiện đến bước sau
– Thời gian thực hiện mỗi bước thường kéo dài do phải
làm thật hoàn chỉnh
– Thường chỉ tiếp xúc với người dùng vào giai đoạn đầu
và giai đoạn cuối. Người dùng thường không t h a m gia
vào các bước ở giữa, như từ thiết kế, cài đặt và đến
tích hợp

43
Mô hình tuyến tính cổđin

 Ưu đi ể m :
– Đơn giản và rõ ràng
– Đóng vai trò như một m ẫ u t h a m chiếu cho các mô hình
khác
– Vẫn còn được sử dụng rộng rãi cho đến nay
 Nhược điểm:
– Không dễ dàng cho việc t h u thập đầy đủ và tường
mi n h
tất cả các yêu cầu hệ thố ng ngay từ ban đầu
– Người dùng phải chờ đến cuối cùng mới có được hệ thố ng
để dùng, nên thời gian chờ đợi là k h á lâu, có kh i đến
hàng năm. Khi đó có thể có các yêu cầu mới đã phát sinh,
dễ dẫn k h ả năng hệ thố ng không còn đá p ứng được k ỳ
vọng của người dùng.
– Dễ dẫn đến tình trạng “blocking states”, tức là kh i có
một nhóm bị chậm tiến độ, thì các nhóm khác phải
chờ, và thời gian chờ đợi t h ậ m chí vượt quá thời gian
làm việc.
44
Mô hình bản mu

 Thông thường trong thực tế, các yêu cầu của hệ thố ng
khó có thể xác định rõ ràng và chi tiết ngay trong
giai đoạn đầu của dự án phần mềm:
– N g ư ờ i d ù n g cũng chỉ đưa ra các mục tiêu tổng quát
của phần m ề m , chứ chưa định rõ được một cách chi tiết
các chức năng cụ thể, hay các thông tin chi tiết đầu
vào, đầu ra như thế nào.
– N h à p h á t t r i ể n cũng chưa xác định rõ ràng ngay các
yêu cầu, cũng như chắc chắn về chất lượng phần
mề m , k h ả năng thỏa m ã n của khách hàng
→ mô hình bản mẫu

45
Mô hình bản mu

46
Mô hình bản mu

Gồm các giai đoạn:
– T h u t h ậ p c á c y ê u c ầ u (requirements gathering): khách
hàng và n hà phát triển sẽ gặp n hau để xác định ra các mục
tiêu tổng thể của phần m ề m . S au đó họ sẽ định ra phần
nào đã rõ, phần nào cần phải định nghĩa thêm.
– T h i ế t k ế n h a n h ( q u i c k design): thiết kế này tập trung
vào những phần m à khách hàng có thể nhìn thấy được
(giao diện, các dữ liệu vào, ra). S au đó, từ thiết kế này,
một bản m ẫ u sẽ được xây dựng.
– K i ể m t r a v à đ á n h g i á b ả n mẫu: Bản m ẫ u này sẽ được
dùng để cho phép người dùng đá nh giá, n h ằ m làm rõ hơn
các yêu cầu của họ. Đồng thời, thông qua bản mẫu, người
phát triển hệ thố ng cũng hình dung cụ thể hơn về những
yêu cầu của khách hàng, cũng như k h ả năng cài đặt và
hiệu quả hoạt động của hệ thố ng.

47
Mô hình bản mu

 Ưu đi ể m :
– Cho phép người dùng xác định yêu cầu của m ì n h rõ ràng và
cụ thể hơn, đồng thời n hà phát triển cũng n ắ m được chính
xác hơn các yêu cầu đó.
– Cả người dùng và nhà phát triển thường đều thích mô hình
này, do người dùng luôn cảm n hận được hệ thố ng thực sẽ như
thế nào, và nhà phát triển cũng luôn có cái để xây dựng và
dần hoàn thiện.
 N h ư ợ c đi ể m :
– Để có được bản m ẫ u nhanh, việc thiết kế cũng được làm
nhanh, nên thường được làm không cẩn thận. Điều này
dễ dẫn đến các thiết kế có tính chắp vá, không có cái
nhìn tổng thể và dài hạn.
– Việc làm bản m ẫ u nhanh cũng thường kéo theo việc lựa
chọn các công cụ cài đặt vội vàng, không cẩn thận,
(như ngôn ngữ lập trình, hệ quản trị cơ sở dữ liệu,v.v).
Điều này sẽ ảnh hưởng đến các giai đoạn phát triển
sau k hi quy mô và yêu cầu của hệ thố ng ngày càng
lớn lên
48
Mô hình RAD (Rapid Application Developer Model)
Là mô hình tiến trình phá t triển phần m ề m tăng trưởng, nhưng
nhấn m ạ n h vào chu trình phá t triển phần m ề m có thời gian
rất ngắn. Mô hình nà y gồm các giai đoạn:
– Mô h ì n h h ó a n g h i ệ p v ụ (Business modeling): mô hình hóa các
luồng thông tin nghiệp vụ giữa các chức năng nghiệp v ụ
– Mô h ì n h h ó a d ữ l i ệu (Data modeling): từ các thông tin nghiệp vụ,
các thực thể dữ liệu, các thuộc tính của chúng, và các liên kết giữa
các thực thể nà y sẽ được xác định và được mô hình hóa.
– Mô h ì n h h ó a xử lý (Process modeling): Mô tả các chức năng xử lý
trên các đối tượng dữ liệu đã được xác định ở giai đoạn trên.
– S ả n s i n h ứ n g d ụ n g (Application generation): RAD sử dụng các k ỹ
thuật công nghệ phần m ề m thế hệ thứ 4, cho phép dễ dà ng sản
sinh m ã chương trình từ các đặc tả và thiết kế trừu tượng. Các kỹ
thuật nà y cũng cho phép tá i sử dụng các thà nh phần chương trình
có sẵn (kết hợp mô hình Component-based development).
– K i ể m t h ử v à b à n giao (Testing and turnover): phần ứ ng dụng đã
xây dựng sẽ được ki ểm tra và bà n giao cho bên tích hợp hệ thố ng.
49
Mô hình RAD

50
Mô hình RAD

 Ưu điểm:
– Tận dụng các công nghệ mới trong phát triển hệ thố ng,
cho phép hoàn thành hệ thố ng trong thời gian ngắn hơn
đá ng kể.
– Khuyến khích việc tái sử dụng các thà nh phần của
chương trình
 Nhược điểm
– Không phù hợp với các phần m ề m m à không có sự phân
chia modul rõ ràng,
– Đòi hỏi tài nguyên và chi phí phát triển cao như số
lượng nhân lực nhiều, công cụ CASE ( Computer
Aided Software Engineering ) thế hệ 4 đắt tiền

51
Mô hình tăng trưởng
 Là sự kết hợp của mô hình tuyến tính và triết lý lặp
lại của mô hình bản m ẫ u
 Phần m ề m được chia thà nh các p h ầ n t ă n g t r ư ở n g
(increment), trong đó mỗi phần là một sản phẩm
hoà n chỉnh (đã chạy được và có thể bà n giao cho
người dùng). Đồng thời phần tăng trưởng sau sẽ bổ
sung t h ê m tính năng còn thiếu trong những phần
trước

52
Mô hình tăng trưởng

53
Mô hình tăng trưởng
 Ưu điểm
– Kết hợp được các ưu điểm của các mô hình tuyến
tính và là m bản m ẫ u
– Rất phù hợp k h i số lượng nhân viên hạn chế, và
người dùng có đòi hỏi phải sớm có hệ thố ng
thử nghiệm
 Nhược điểm
– Việc gấp gáp đưa ra các thà nh phần tăng trưởng
cũng có thể gây ra sự m a n h m ú n trong phân
tích và thiết kế
– Khó k hă n trong việc đảm bảo tính tương thích
(compatibility) giữa các thà nh phần tăng
trưởng. 54
Mô hình xoáy ốc
 Cũng là một mô hình tiến hóa kết hợp đặc tính lặp lại
của mô hình bản m ẫ u và tính hệ thố ng của mô hình
thá c nước cổ điển
 Mô hình nà y cũng cho phép tạo ra một dãy các phiên
bản tăng trưởng (incremental release). Tuy nhiên
khá c với mô hình tăng trưởng, các phiên bản đầu tiên
của mô hình xoáy ốc thường chỉ là các mô hình trên
giấy hoặc bản m ẫ u (prototype). Đến các phiên bản
sau thì mới là các bản chạy được và càng ngà y càng
hoà n chỉnh.

55
Mô hình xoáy ốc

56
Mô hình xoáy ốc
 Mô hình nà y phân chia thà nh các giai đoạn, được gọi
là các v ù n g n h i ệ m v ụ (task regions).
 Số lượng vùng nhiệm vụ có thể thay đổi, và thường có
từ 3 cho đến 6 vùng.
 Mỗi vùng lại bao gồm m ộ t t ậ p c ác n h i ệ m v ụ (set of
tasks), và số lượng cũng thay đổi tùy theo tính chất
của dự á n.

57
Mô hình xoáy ốc
 Ưu điểm:
– Linh hoạt, dễ thích ứng với các loại phần m ề m và các n h u
cầu sử dụng khá c nhau, nhất là các phần m ề m quy mô lớn
– Có khá đầy đủ các bước trong tiến trình phá t triển, nhất là
việc chú trọng phân tích tính rủi ro (risk) của phần m ề m
cả về m ặt k ỹ thuật và quản lý
 Hạn chế:
– Phức tạp, cần khá nhiều thời gian để hiểu và vận dụng
được một cách hiệu quả
– Khó k h ă n trong việc quản lý nhiều chu trình phá t triển

58
Kỹthuâṭphn
ầ mềmứngdụng

Chương 2
CÁC P H A T R O N G P H Á T T R I Ể N P H Ầ N MỀM

Pha1: K h ả o s á t h i ệ n t r ạ n g v à xá c l ậ p d ự án

2/21/2021
K h ả o s á t h i ệ n t r ạ n g v à xá c l ậ p d ự án

Các bước tiến hành

2
K h ả o s á t h i ệ n t r ạ n g v à xá c l ậ p d ự án
 Mục đích:
– t ì m được sự mô tả hệ thống bằng văn bản, đề xuất
ra phương án thực hiện, cuối cùng là k ý được một
hợp đồng và hình thành 1 dự án mang tính k h ả thi.
– Thường gồm 2 giai đoạn:
 Khảo sát sơ bộ n h ằ m xác định tính k h ả thi của dự án
 Khảo sát chi tiết n h ằ m xác định chính xác những gì sẽ thực
hiện và khẳng định những lợi ích k è m theo
 Các yêu cầu:
– Khảo sát, t ì m hiểu, đánh giá sự hoạt động của hệ thống cũ
– Đề xuất các yêu cầu, các mục tiêu và các ưu tiên giải quyết cho
hệ thống mới.
– Phác hoạ giải pháp mới và cân nhắc tính k h ả thi của dự án
– Lập kế hoạch cho dự án cùng với các dự trù tổng quát.

3
K h ả o s á t h i ệ n t r ạ n g v à xá c l ậ p d ự án
 Nội dung khảo sát và đánh giá hiện trạng:
– T ì m hiểu môi trường XH, k in h tế, k ỹ thuật của hệ thống,
nghiên cứu cơ cấu tổ chức của cơ quan đó
– Nghiên cứu chức trách, n hiệm vụ, các trung t â m ra
quyết định
và điều hành, sự phân cấp các quyền hạn
– T h u thập, nghiên cứu các hồ sơ, sổ sách, các tệp cùng với các
phương thức xử lý thông tin trong đó
– T h u thập và nghiên cứu các qui tắc quản lý, các qui định, các
công thức làm căn cứ cho quá trình xử lý thông tin
– T h u thập các chứng từ giao dịch và mô tả các chu trình lưu
chuyển và xử lý thông tin và tài liệu giao dịch
– Thống kê các phương tiện và tài nguyên đã và có thể sử
dụng
– T h u thập các đòi hỏi về thông tin, các ý kiến, dự đoán,
nguyện vọng trong tương lai
– Đánh giá phê phán hiện trạng, đề ra hướng giải quyết 4
K h ả o s á t h i ệ n t r ạ n g v à xá c l ậ p d ự án
 Việc khảo sát thường được tiến hành trên 4 đối tượng:
– Thao tác thừa hành: những người trực tiếp với những thao
tác của hệ thống ; họ có k ỹ năng, nghiệp v ụ cao, n hậ n biết
được
những khó khăn, phức tạp và nhiều vấn đề chuyên sâu trong
công việc.
– Điều phối quản lý: những người quản lý trực tiếp về một mảng
công việc nào đó, chẳng hạn quản đốc phân xưởng ; họ hiểu
được tình hình cơ quan ở thời điểm hiện tại nhưng không có
k h ả năng nhìn nhậ n được các vấn đề xảy ra trong tương lai
– L ãnh đạo: những người ra quyết định nên họ có yêu cầu về các
thông tin trợ giúp
– Chuyên gia cố vấn : những người nhậ n thức được sự phát
triển và vận động của hệ thống trong những môi trường

5
K h ả o s á t h i ệ n t r ạ n g v à xá c l ậ p d ự án
 Phát hiện những yếu k é m của hiện trạng
– Hệ thống thiếu cái gì, (chức năng, phương tiện, n hân lực)
– K é m hiệu quả, hiệu suất công việc thấp
– Phương pháp xử lý không chặt chẽ, di chuyển thông tin vòng vèo
– Cơ cấu tổ chức bất hợp lý
– Giấy tờ, tài liệu trình bày k é m gây ù n tắc làm cho hệ thống quá
tải, gây tổn phí về vật tư, thiết bị, con người
 Các yêu cầu nảy sinh
– Khắc phục những yếu k é m trên
– Những yêu cầu về thông tin chưa được đáp ứng
– Những nguyện vọng của nh ân viên
– Các dự kiến và các kế hoạch phát triển về quy mô của đơn vị

6
Xác đ ị n h p h ạ m vi , k h ả n ă n g v à m ụ c t i ê u c ủ a d ự án

 Xác định ph ạm vi (khoanh vùng dự án)


– Chỉ rõ hệ thống mới tiến hàn h trong p h ạ m vi nào?
 Trong toàn bộ cơ quan
 Trong từng bộ phận
 Khả năng và hạn chế thực hiện dự án
– Về m ặt tài chính: Kinh phí cho phép triển khai.
– Về con người: Khả năng quản lý, n ắ m bắt k ỹ thuật mới, k h ả
năng về đào tạo, tiếp n hận công nghệ mới
– Về trang thiết bị k ỹ thuật cho phép
– Về m ặ t thời gian: Các ràng buộc của hệ thống về thời gian hoàn
thành.
– Về môi trường: Các yếu tố ảnh hưởng về môi trường, xã hội.

7
Xác đ ị n h p h ạ m vi, k h ả n ă n g v à m ụ c t i ê u c ủ a d ự
án

 Mục tiêu của dự án


– Khắc phục yếu k é m hệ thống cũ
– Đáp ứng được yêu cầu trong tương lai
– Mang lại lợi ích k in h tế
– Thoả m ã n được hạn chế về chi phí và con người
– Thể hiện được chiến lược phát triển lâu dài

8
Phân tích tính k h ả thi

 Khả thi về mặt k ỹ thuật:


– Trả lời câu hỏi “Chúng ta có thể xây dựng được hệ
thống này không?”.
– Lý do cản trở việc xây dựng thà nh công hệ thống?
- Sự hiểu biết của người dùng và của người phân tích với
ứng dụng
- Hiểu không rõ về công nghệ
- Dự án có quy mô càng lớn thì càng có nhiều rủi ro
- Sự tương thích của dự án với công nghệ hiện có của tổ
chức

9
Phân tích tính khả thi

 Khả thi về k in h tế
– Trả lời câu hỏi “Chúng ta có nên xây dựng hệ thống này
không?”
– Xác định loại chi phí và lợi n hu ậ n

– Xác định giá trị chi phí và lợi n h u ậ n

10
Phân tích tính k h ả thi

 Khả thi về mặt tổ chức


– Trả lời câu hỏi: “Nếu chúng ta xây dựng hệ thống, nó có được
triển khai hay không, ai sẽ là người dùng,…”
– Cách đánh giá:
 Các mục tiêu của dự án có phù hợp với mục tiêu
của nghiệp v ụ hay không
 Tiến hành phân tích các bên liên quan

11
Q u ả n t r ị d ự án

 Xác định quy mô dự án

 Xây dựng và quản lý kế hoạch công việc

 Phân công công việc

 Điều phối các hoạt động của dự án

12
Ví d ụ t ạ o k ế h o ạ c h l à m v i ệ c

Thông tin về công việc Giá trị mẫu

Tên công việc Phân tích khả thi về kinh tế

Ngày bắt đầu 10/11/2007

Ngày kết thúc 25/11/2007

Người thực hiện Mary smith

Kết quả Bản phân tích lợi nhuận-chi phí

Trạng thái hiện tại Đang thực hiện

Độ ưu tiên Cao

Tài nguyên cần thiết Phần mềm bảng tính

Thời gian dự tính 60 giờ

Thời gian thực tế 45 giờ

Các thông tin trong bản kế hoạch công việc

13
Kỹthuâṭphn
ầ mềmứngdụng

Chương 2
CÁC P H A T R O N G P H Á T T R I Ể N P H Ầ N MỀM

P h a 2: Tì m hiể u y ê u cầ u

2/21/2021
2.2.2. Tìm hiểu yêu cu
ầ (Requirements and Specifications)

 Mục đích:
– T ì m hiểu x e m phải phát triển cái gì, chứ không phải là phát
triển n hư thế nào.
– Kết quả của bước nghiên cứu yêu cầu là tạo ra đặc tả yêu
cầu của phần m ề m - là tài liệu ràng buộc giữa khách hàng và
người phát triển.
 Tại sao phải t ì m hiểu yêu cầu?

2
2.2.2. Tìm hiểu yêu cu
ầ

 Các yêu cầu về phần m ề m (Software)

 Các yêu cầu về phần cứng


(Hardware)

 Các yêu cầu về dữ liệu (Data)

 Các yêu cầu về con người (People, Users)

3
2.2.2. Tìm hiểu yêu cầu (Requirements and Specifications)

 Khái niệm:
– là một bản kê chỉ ra hệ thống phải làm gì hay hệ thống phải
có những đặc tính gì.
– thường tập trung vào n h u cầu của nghiệp v ụ nên thường
được gọi là yêu cầu nghiệp v ụ
– ở bước thiết kế, các yêu cầu nghiệp v ụ mở rộng theo hướng
k ỹ thuật và chúng mô tả hệ thống sẽ được xây dựng như
thế nào
– Y ê u cầu trong giai đoạn thiết kế thường được đưa ra bởi
người phát triển và thường được gọi là yêu cầu hệ
thống

4
2.2.2. Tìm hiểu yêu cu
ầ (Requirements and Specifications)

Gồm 2 loại:
– yêu cầu về m ặ t chức năng
 chỉ ra các chức năng m à hệ thống cần có.
 Ví dụ:
– hệ thống phải có k h ả năng t ì m k iế m hàng hóa
trong kho
– lập báo cáo chi phí thực tế và chi phí phát
sinh
– Y ê u cầu phi chức năng
 hoạtđộng, hiệu năng, tính bảo mật, và khía
cạnh văn hóa, chính trị
 thường được sử dụng trong giai đoạn thiết kế

5
2.2.2. Tìm hiểu yêu cu
ầ (Requirements and Specifications)

Yêu cầu phi chức năng Mô tả Ví dụ


Hoạt động Môi trường vật lý và kỹ thuật để triển Hệ thống được triển khai trên mạng
khai hệ thống Internet.
Người dùng sử dụng các trình duyệt
web để sử dụng các dịch vụ
Phải có khả năng kết nối dữ liệu với các
hệ thống quản lý kế toán

Hiệu năng Tốc độ, dung lượng và độ tin cậy Hệ thống phải hoạt động tin cậy
24h/ngày x365 ngày/năm.
Kết quả trả về cho khách hàng không
quá 1 phút sau khi khách hàng yêu cầu.
Tại một thời điểm phải có khả năng
phục vụ tối đa 1000 khách hàng.

Bảo mật Ai có thể truy cập vào hệ thống Khách hàng có thể xem, tìm kiếm sản
phẩm và đặt hàng
Chỉ có cán bộ kho mới có thể nhập dữ
liệu về hàng hóa
Chỉ có người quản lý mới có thể duyệt
đơn hàng của khách hàng.

Văn hóa & chính trị Các yếu tố về văn hóa, chính trị, luật Phải hỗ trợ xử lý cả 2 loại tiền tệ là USD
pháp ảnh hưởng đến hệ thống và VNĐ
Ngôn ngữ sử dụng là tiếng Việt
Không được vi phạm bản quyền của
các hệ thống tương tự khác.

Ví dụ một số yêu cầu phi chức năng


Kỹthuậttìm hiểu yêu cầu

 Phỏng vấn
 Phiên làm việc JAD (Join Application Development)
 Bản câu hỏi sẵn
 Quan sát
 Phân tích tài liệu

7
Phỏng vn

 Là phương pháp được sử dụng nhiều nhất trong thực tế
 Các bước thực hiện:
– lựa chọn người được phỏng vấn
– thiết kế/chuẩn bị các câu hỏi
 Câu hỏi đóng
 Câu hỏi mở

 Câu hỏi t h ă m dò
– chuẩn bị cho cuộc phỏng vấn
– tiến h ành phỏng vấn
– thực hiện các công việc tiếp theo sau phỏng vấn

8
Ví dụcâu hỏi phỏng vấn
Loại câu hỏi Ví dụ

Câu hỏi đóng Trung bình có bao nhiêu cuộc gọi điện để đặt hàng/ngày?
Thông tin gì còn thiếu trên báo cáo doanh thu hàng tháng?

Câu hỏi mở Ông/bà nghĩ gì về hệ thống hiện tại?


Ông/bà mong muốn hệ thống mới sẽ được cải tiến ra sao?

Câu hỏi thăm dò Tại sao?


Ông/bà có thể đưa ra ví dụ được không?

Ví dụ về 3 loại câu hỏi


Phiên làm việc JAD (Join Application Development)

– được IBM đề xuất và bắt đầu sử dụng từ những n ă m


cuối của thập kỷ 1970s
– là phương pháp tổ chức một phiên làm việc gồm một
số người sử dụng, người quản lý, nhóm dự án cùng
làm việc để đưa ra yêu cầu của hệ thống
– là cách hiệu quả nhất để t h u thập yêu cầu người sử
dụng
– giảm đến 50% vấn đề không thể kiể m soát được
sự thay đổi
– tránh được các yêu cầu đưa ra quá chi tiết hoặc quá
mơ hồ
– Là cách tổ chức hiệu quả k h i sử dụng các công cụ
(phần mềm) để tổ chức các buổi làm việc JAD
trên mạng (e-JAD)
– Sử dụng e-JAD có thể giảm thời gian so với các
buổi làm việc JAD truyền thống từ 50%-80%
10
Bản câu hỏi sn

– là một bản câu hỏi đã được chuẩn bị và in sẵn rồi gửi đến
cho từng người trả lời
– thường được sử dụng khi:
 người hỏi và người trả lời không thể trực
tiếp
gặp nhau
 hoặc k h i số lượng người được hỏi quá nhiều
– được thực hiện bằng giấy tờ hoặc thông qua các phương
tiện C N T T như là Web, email, file đính, S M S
– phải đ ả m bảo nội dung câu hỏi sao cho người được
hỏi không thể hiểu sai vấn đề cần trả lời

11
Quan
sát
 là cách quan sát các quy trình nghiệp v ụ đang
được thực hiện trong thực tế
 là cách tốt nhất để t h u thập thông tin về
hệ thống hiện tại
 cần chú ý không làm ảnh hưởng đến những
người đang làm việc
 chỉ nên dùng k hi cần hiểu rõ hoặc bổ sung t h ê m
thông tin cho kết quả của các cách trên

12
Phân tích tài liệu

 được gọi là cách quan sát không chính thức

 cung cấp các thông tin cần xử lý cho người phân tích
thông qua các tài liệu

 Các tài liệu có thể nghiên cứu chính:


– các m ẫ u biểu

– m ẫ u báo cáo

– các văn bản liên quan đến công việc hiện tại của tổ
chức

13
Kỹthuâṭphn
ầ mềmứngdụng

Chương 2
CÁC P H A T R O N G P H Á T T R I Ể N P H Ầ N MỀM

P h a 3: P h â n t í c h ( P h â n tí ch c h ứ c n ă n g )

2/21/2021
2.2.3. Phân tích (System Analysis)

 Phân tích toàn bộ các yêu cầu đã xác định ở bước


nghiên cứu yêu cầu.
 "số hoá" từng yêu cầu đó t hành ngôn ngữ m à người
thiết kế, lập trình có thể hiểu được
 Công cụ “Số hóa”:
– các biểu đồ xác định luồng dữ liệu
– biểu đồ mô tả các đối tượng cũng như chức năng tổng
quát của hệ thống.

2
Công cụphân tích theo cấu trúc

 Sơ đồ chức năng.

 Sơ đồ luồng dữ liệu.

 Từ điển dữ liệu.

 Chỉ định quá trình.

3
Sơ đồ chức năng (Functional Diagram-FD)

 Thể hiện:
– một cách nhìn khái quát, dễ hiểu, từ đại thể đến chi tiết về
các chức năng, nhiệm v ụ cần thực hiện
– quá trình triển khai sơ đồ luồng dữ liệu
– quyết định tần suất xuất hiện của các tiến trình nhỏ hơn
trong sơ đồ luồng dữ liệu
 Sơ đồ chức năng chỉ cho ta biết cần làm gì (What)
chứ
không cho ta biết cần làm như thế nào (How).

4
Ví dụ về sơ đồ chức năng (file đính kèm)
Hệ thống quản lý nhà xe/công ty xe hợp đồng du lịch

1. Quản lý 2. Quản lý 3. Quản lý 4. Quản lý 5. Quản lý 6. Quản lý 7. Quản lý 8. Quản lý 9. Báo cáo,
nhân tài xế xe hợp đồng hợp đồng điều xe thu chi lương thống kê
viên
1.1. Nhập 2.1. Nhập 4.1. Nhập 6.1. Nhập tt 7.1. Nhập 9.1. Báo cáo
3.1. Nhập 5.1. Cập nhật 8.1. Lập bảng
thông tin thông thông tin phiếu thu phiếu chi h/ doanh thu,
thông tin xe lịch chạy xe lương
nhân tin hợp hợp đồng đồng lợi nhuận
viên tài xế đồng
1.2. Cập nhật 4.2. Thanh 7.2. Nhập 9.2. Báo cáo
2.2. Nhập 3.2. Nhập 5.2. Cập nhật 8.2. Cập nhật
thông tin toán hợp 6.3 thống kê phiếu chi lợi nhuận
lịch làm việc lịch chạy xe lịch tài xế lương
nhân viên đồng mua xe mới theo đầu xe

1.3. Tìm 2.3. Cập nhật 3.3. Nhập tt 6.3. Nhập 7.3. Nhập 9.3. Báo cáo
4.3. Thống
kiếm thông thông tin bảo hành sửa phiếu thu xe phiếu thu sửa nhân viên, tài
kê hợp đồng
tin nhân viên tài xế chữa khác chữa, xăng xế nghỉ việc
dầu
7.4. Nhập
2.4. Tìm 3.4. Tìm 6.4. Tìm 9.4. Báo cáo
phiếu
kiếm kiếm kiếm chi tiêu
chi
khác

7.5. Thống
kê chi

7.6. Tìm
kiếm

5
Sơ đồluồng dữ liệu (DFD)

 Mô tả dòng thông tin trong hệ thống


 hỗ trợ bốn hoạt động chính:
– Phân tích
– Thiết kế
– Truyền thông
– S ư u liệu
 Thể hiện
– Hệ thống cần thực hiện các chức năng nào?
– S ự liên quan giữa các chức năng?
– Hệ thống cần truyền đi cái gì?
– Các đầu vào nào cần truyền tới các đầu ra nào?
– Hệ thống cần thực hiện dạng công việc nào?
– Hệ thống nhậ n thông tin để làm việc từ đâu?
– Hệ thống gửi kết quả công việc đến đâu?
6
Yêu cu
ầ của sơ đồluồng dữ u
iệl

 Thể hiện được tất cả các chức năng của hệ thống

 Thật đơn giản để cả người sử dụng và người phân tích hệ


thống đều có thể hiểu được

 Toàn bộ sơ đồ được trình bày cân đối trên một trang (đối với hệ
thống nhỏ)

 Các chức năng hệ thống của cùng một mức cần được trình bày
trên một trang (đối với hệ thống lớn)

 N ê n dùng công cụ máy tính để trình bày sơ đồ

7
Các ký pháp trong sơ đồluồng dữ iệlu

Quá trình (tiến trình)

Thể hiện luồng dữ

liệu Kho dữ liệu

Vào ra dữ liệu và tương tác giữa hệ thống và


người sử dụng (Tác nhân)

8
Các ký pháp trong sơ đồluồng dữ iệlu

 Quá trình(tiến trình):


– chỉ ra một phần của hệ thống chuyển đầu vào
t hành đầu ra.
– Tên quá trình mô tả quá trình làm gì, thông
thường tên quá trình được đặt dưới dạng động từ
thể hiện bản chất xử lý thông tin.
 Dòng (luồng dữ liệu)
– mô tả sự chuyển động của thông tin từ một phần
này của hệ thống tới phần khác của hệ thống
– tên quá trình được đặt dưới dạng danh từ đại diện
cho dòng thông tin di chuyển.

9
Các ký pháp trong sơ đồluồng dữ iệlu
 Kho:
– Kho sử dụng để mô hình hoá một tập hợp dữ liệu ở trạng thái tĩnh.
– Tên kho thể hiện kho là tập hợp nhiều gói dữ liệu được dòng đưa
đến kho hoặc từ kho ra. Tên kho thường được đặt là danh từ thể
hiện thông tin gì được lưu trữ trong kho .
 Nh â n tố ngoài:
– N hâ n tố ngoài (còn gọi là thực thể ngoài) có thể là người, là
nhóm
người hoặc một tổ chức không thuộc lĩnh vực nghiên cứu của hệ
thống (chúng có thể ở trong hoặc ở ngoài hệ thống) nhưng có một
sự liên hệ nhất định nào đó với hệ thống
– chỉ ra giới hạn của hệ thống và nhận diện mối quan hệ của hệ
thống với thế giới bên ngoài
– Tên nhân tố ngoài thường chỉ người hoặc nhóm người của tổ chức
(phòng, ban,…) hoặc tên của hệ thống khác có trao đổi thông tin với
hệ thống đang xét.

10
Các mc
ứ của sơđồluồng dữuiệl

 Mức ngữ cảnh

 Mức đỉnh

 Mức tiếp theo (1.x,…)

11
Các mc
ứ của sơđồluồng dữuiệl
 Mức ngữ cảnh (Context diagram): Sơ đồ luồng dữ liệu mức ngữ
cảnh chỉ chứa đúng 1 tiến trình (gọi là tiến trình 0) tổng
quát hoá toàn bộ chức năng của hệ thống trong mối quan hệ
với các thực thể ngoài
 Mức đỉnh (Top level diagram): Sơ đồ luồng dữ liệu mức đỉnh là
sơ đồ dòng dữ liệu cho ta cái nhìn chi tiết hơn về hệ thống
thông tin so với sơ đồ mức ngữ cảnh
 Mức dưới đỉnh (Lower level diagram): Sơ đồ mức dưới đỉnh phân
rã sơ đồ luồng dữ liệu mức đỉnh một cách chi tiết hơn. S au đó
lại tiếp tục phân rã các sơ đồ luồng dữ liệu mức dưới đỉnh vừa
nhậ n được th à n h các mức thấp hơn. Quá trình phân rã sẽ dừng
lại k h i ta n hậ n được các chức năng cơ bản (functional
primitive) trên sơ đồ
12
Kỹthuậtchia mức

13
Ví dụvềcác mc
ứ DFD

14
Một sốchỉ dẫn xây dựng mô hình DFD

 Chọn các tên có ý nghĩa cho các quá trình, dòng, kho
và nơi kết thúc (thực thể ngoài /trong).

 Đánh số các quá trình.

 Vẽ lại DFD nhiều lần.

 Tránh các DFD quá phức tạp.

 Đảm bảo các DFD chính xác k hi đứng độc lập và


chính xác cả k h i kết hợp với bất k ỳ DFD nào.

15
Một sốqui đnh
ị khi xây dựng sơđồluồng dữ liệu

 Mỗi sơ đồ phải được thể hiện trong phạm vi một trang.


 Tên quá trình trong mỗi sơ đồ ngữ cảnh phải là tên của
hệ thống thông tin.
 Sử dụng tên duy nhất cho mỗi tập k ý hiệu.
 Hạn chế tối đa các đường cắt nhau.
 Sử dụng các tên viết tắt k h i có dùng từ điển dữ liệu
được máy tính hoá
 Sử dụng số t h a m chiếu duy nhất cho mỗi k ý hiệu
quá
trình thay vì chữ viết tắt cho các k ý hiệu DFD
khác.
 Mọi luồng dữ liệu phải bắt đầu hoặc kết thúc tại một
tiến trình.
 Tại mỗi mức DFD, mọi kho dữ liệu phải có ít nhất 1 16
Ví dụvềsô đồluồng dữ iệlu

TT nhân viên 1.1. Nhập thông


Nhân viên
tin nhân viên

Thông tin nhân viên

Thông tin lương

1.2. Cập nhật


Kế toán thông tin nhân
viên

TT tìm kiếm 1.3. Tìm kiếm


Giám đốc, quản lý thông tin
nhân
viên

17
Các phương tiện đểđặc tả chc
ứ năng
 Đặc tả chức năng (P-Spec)
 Các bảng quyết định và cây quyết định
 Các sơ đồ khối
 Các ngôn ngữ có cấu trúc

18
Đặc tảchc
ứ năng (P-SPec)
 Một đặc tả chức năng thường được trình bày một cách
ngắn gọn, không vượt quá một trang A4, và gồm hai
phần:
– Phần đầu đề gồm:
 Tên chức năng;

 Các dữ liệu vào;

 Các dữ liệu ra.

– Phần thâ n mô tả nội dung xử lý, ở đó thường sử dụng các


phương tiện mô tả sau đây (liệt kê theo trật tự ưu tiên giảm
dần):
 Các phương trình toán học.

 Các bảng quyết định hay câu quyết định.

 Các sơ đồ khối.

 Các ngôn ngữ tự nhiên cấu trúc hóa.

 (Không nên sử dụng ngôn ngữ tự do).

19
Ví dụvềP-Spec

20
Bảng quyết đnh
ị và cây quyết đnịh

21
Bảng quyết đnh
ị và cây quyết đnịh

22
Sơ đồ khi

23
Ngôn ngữ có cấu trúc

Lặp Lấy một thí sinh từ kho các thí sinh


Tra cứu điểm của thí sinh
Nếu Điểm thí sinh ≥ Điểm chuẩn
Thì DS đỗ  thí sinh
Không thì DSrớt
Đến khi  thí sinh Hết thí sinh

24
Từ điển dữ iệlu

 Là một danh sách có tổ chức của tất cả các phần t ử


dữ liệu thuộc về hệ thống cùng các định nghĩa
chính xác, đầy đủ sao cho cả người sử dụng và
người phân tích hệ thống cùng có chung cách hiểu
về tất cả các đầu vào, đầu ra, các thành phần lưu
trữ, các tính toán trung gian.

25
Từđiển dữ iệlu
 Từ điển dữ liệu định nghĩa các phần tử dữ liệu bằng cách mô tả:
– Ý nghĩa của các dòng dữ liệu, các kho dữ liệu có m ặt trong DFD
– T hành phần của tập hợp kết hợp của dữ liệu di chuyển trên dòng
– T hành phần của các tập hợp dữ liệu trong các kho
– Chỉ định các giá trị hợp lệ và các đơn vị của các bó thông tin cơ bản
trong các dòng dữ liệu và các kho dữ liệu
– Chi tiết mối quan hệ giữa các kho được nhấn m ạ n h trong sơ đồ thực thể
liên kết
 Kiểm tra từ điển dữ liệu bằng cách trả lời các câu hỏi sau:
– Mọi dòng dữ liệu trong sơ đồ luồng dữ liệu đã được định nghĩa trong từ
điển dữ liệu chưa?
– Mọi thành phần của các phần tử dữ liệu kết hợp đã được định nghĩa
chưa?
– Có phần tử dữ liệu nào được định nghĩa hơn một lần không?
– Từ điển dữ liệu đã sử dụng các ký hiệu đúng cho tất cả các dữ liệu
không?
– Có phần tử dữ liệu nào trong từ điển dữ liệu m à chưa được t h a m chiếu
đến trong các sơ đồ chức năng, sơ đồ luồng dữ liệu hoặc sơ đồ thực
thể liên kết không?

26
Tài liệu của pha phân tích

 Mô tả chi tiết các công cụ và k ỹ thuật sử dụng để hoàn th à n h


việc phân tích
 Cung cấp sự mô tả đặc biệt các yêu cầu của hệ thống m à
người
sử dụng có thể đánh giá và chấp nhận.
 Cung cấp nguồn thông tin cơ bản cho người thiết kế hệ thống
 Giải thích mục đích và p h ạ m vi của hệ thống
 Đưa ra các yêu cầu m à người thiết kế cần thực hiện.
 Nội dung chính bao gồm:
– Kết hợp các yêu cầu mới
– Các công cụ và tài liệu hỗ trợ
– Tổng kết quá trình phân tích

27
Kỹthuâṭphn
ầ mềmứngdụng

Chương 2
CÁC P H A T R O N G P H Á T T R I Ể N P H Ầ N MỀM

P h a 3: P h â n t í ch ( P h â n t í ch d ữ li ệu)

2/21/2021
Nội dung chính

1. Mục đích của mô hình thực thể liên kết


2. Cấu tạo của M H T TLK

2
1. Mc
ụ đích của mô hình thực thểliên kết

 Nó được dùng trong giai đoạn Phân tích hệ thống,


ngay sau giai đoạn T h u thập các yêu cầu của hệ
thống.
 Nó được dùng để phân tích yêu cầu về dữ liệu, n h ằ m
làm rõ loại y/c của người sử dụng.
 Nó được dùng làm công cụ để hỗ trợ việc trao đổi,
thống nhất các y/c về dữ liệu giữa nhà phát triển và
người dùng.
 Nó đóng vai trò trung gian giữa các y/c dữ liệu trừu
tượng ở giai đoạn khảo sát và các chi tiết dữ liệu
ở giai đoạn thiết kế.

3
1. Mc
ụ đích của mô hình thực thểliên kết

Khảo sát hệ
thống Phân tích hệ
thống Thiết kế hệ
thống

Thu thập
Phân tích Thiết kế dữ
các yêu
dữ liệu liệu
cầu

Các Kịch bản


sử dụng Mô hình
Mô hình
thực quan
Từ điển dữ thể liên hệ
liệu kết
4
1. Mc
ụ đích của mô hình thực thểliên kết

Cụ thể hơn, mô hình này sẽ giúp:


 Xác định rõ các đơn vị thông tin nghiệp vụ của hệ
thống
 Xác định rõ các mối quan hệ, ràng buộc giữa các đơn
vị thông tin này
 Trình bày rõ ràng và cô đọng các thông tin trên
 Từ đó giúp phát hiện sớm, và tránh được các sai sót,
hiểu lầm về các y/c hệ thống

5
2. Cấu tạo của Mô hình Thực thểLiên ktế

Gồm có 3 t hành phần chính:

1. T h ự c t h ể (Entities)
2. L i ê n k ế t (Relationships)
3. T h u ộ c t í n h (Attributes)

6
Thực thểvà tp
ậ thực htể
 Một t h ự c t h ể là:
– Thành phần quan trọng đối với nghiệp vụ, nên dữ liệu về nó cần
phải được biết.
– Tên của các thứ m à bạn có thể liệt kê.
– Có thể là một đối tượng cụ thể hoặc trừu tượng.
– Thường là danh từ.
 Một t ậ p t h ự c t h ể (Entity Set): là một tập hợp các thực thể cùng
một loại. Tập thực thể còn được gọi là K i ể u t h ự c t h ể (entity
type).
 K ý hiệu: thực thể và kiểu thực thể đều được biểu diễn bằng một
hình chữ nhật.
 V í dụ:

The movie
“Mission Movies
Impossible”

7
Ví dụ
Tập thực thể Thực thể
PERSON Bill Clinton, Obama
PRODUCT Chair, Table, Motor
JOB Violinist, Programmer
SKILL LEVEL Good, Bad

8
Các thuộc tính của thực htể
 Khái niệm:
– Một t h u ộ c t í n h (an attribute) của một thực thể là
một chi tiết thông tin về thực thể đó.
– Thuộc tính cũng biểu diễn các thông tin cần thiết
cho nghiệp vụ, nhưng gắn liền với thực thể, chứ
không đứng độc lập như thực thể.
– Một thuộc tính có các giá trị m à thuộc một miền
giá trị nào đó (kiểu dữ liệu của nó).
Year of
 Ký hiệu: Title production

Movies

9
Ví dụ: Các thuộc tính

10
Thuộc tính khóa

ID

Year of
Title production

Movies

11
Ví dụ– Thực thể, Tp
ậ thực thể, Thuộc níth

ID
Year of
Title production

Movies

Title =
ID = 1 Year of
“Mission
Impossible” production =
1996
The movie
“Mission Impossible”

12
Liên kết (Relationship)
 Khái niệm:
– Nó biểu diễn mối quan hệ (ràng buộc) giữa hai hay nhiều
thực thể.
– Nó cần thiết cho nghiệp v ụ
 Ví dụ:
– Đạo diễn c h ỉ đ ạ o l à m Phim
– Diễn viên t h a m g i a đ ó n g Phim
– Đào diễn m ờ i Diễn viên t h a m g i a đ ó n g Phim

13
Liên kết (Relationship)
 Số ngôi của liên kết:
– Là số thực thể t h a m gia liên kết đó
– Ví dụ:
 Đạo diễn c h ỉ đ ạ o l à m Phim: liên kết 2 ngôi;
 Đào diễn m ờ i Diễn viên t h a m g i a đ ó n g Phim:

LK 3 ngôi

14
Liên kết (Relationship)
 Ký hiệu:
 Đạo diễn c h ỉ đ ạ o l à m Phim: liên kết 2 ngôi;
 Đào diễn m ờ i Diễn viên t h a m g i a đ ó n g Phim: LK

3 ngôi
Directors Directs Movies

Directors Invites Movies

Actors

15
Các loại liên kt
ế

 Tự l i ê n k ế t (Self-relationship) : là liên kết giữa các


thực thể của cùng một tập thực thể.

 L i ê n k ế t 2 n g ô i (Binary r e l at i ons hi p) : là liên kết


giữa các thực thể thuộc 2 tập thực thể.

– L i ê n k ế t L ớ p c o n (Subcl ass , hay còn gọi là


ISA): là một loại liên kết 2 ngôi đặc biệt.

 L i ê n k ế t n h i ề u n g ô i ( M u l t i w a y r e l at i ons hi p) : là
liên kết giữa các thực thể thuộc từ 3 tập thực thể trở
lên .
16
Ví dụvềcác loại liên ktế
 Tự liên kết
elder brother

Person brotherhood

younger brother
 Liên kết 2 ngôi

Class has Student

17
Ví dụvềcác loại liên ktế
 Liên kết ISA:

address
name dob

Person

isa
roll# school

Student

18
Ví dụvềcác loại liên ktế
 Liên kết nhiều ngôi:
– Một sinh viên t h a m gia một khóa học trong một lớp
học

Class attends Student

Course

19
Lực lượng của Liên kết
 Khái niệm:
– L ự c l ư ợ n g (multiplicity) của một liên kết là số
lượng các thực thể của từng tập thực thể t h a m gia
vào liên kết đó.
 Thường có 3 trường hợp:
– K h ô n g (0): k h i có thể không có thực thể nào của
tập thực thể t h a m gia liên kết, hay cũng nói
việc t h a m gia liên kết của tập thực thể này là
không bắt buộc.
– Một: k h i có đúng một thực thể của một tập thực
thể t h a m gia
– Nhiều: k h i có nhiều hơn 1 thực thể của một tập
thực thể t h a m gia 20
Ví dụvềlực lượng
 Xét liên kết: Đạo diễn c h ỉ đ ạ o l à m Phim:
– Một đạo diễn có thể chỉ đạo Không, Một, hoặc Nhiều bộ phim
– Một bộ ph im phải được chỉ đạo bởi ít nhất Một đạo diễn

Directors 1..N Directs 0..N


Movies

21
Lực lượng của Liên kết 2 ngôi
 Có 3 loại liên kết 2 ngôi giữa hai tập thực thể X và Y:
– M ộ t M ộ t (1:1): mỗi thực thể trong X có quan hệ
với đúng một thực thể trong Y và tương tự ngược
lại.
– M ộ t N h i ề u (1:N): mỗi thực thể trong X có quan hệ
với nhiều thực thể trong Y. Nhưng ngược lại mỗi
thực thể trong Y có quan hệ với đúng một thực thể
trong X.
– N h i ề u N h i ề u (M:N): mỗi thực thể trong X có
quan hệ với nhiều thực thể trong Y và tương tự
ngược lại.

22
Lực lượng của Liên kết 2 ngôi
 Ký hiệu

1 1
1:1 X Y X Y

1 N
1:N X Y X Y

M N
M:N X Y X Y

23
Xây dựng mô hình thực thểliên kết
Gồm các bước:

1. Xác định các thực thể và các thuộc tính của


chúng
2. Xác định các liên kết và các thuộc tính
3. Hoàn thiện mô hình

24
Xác đnh
ị các thực thể
 P h ư ơ n g ph á p :
– Rà soát trong các Kịch bản sử dụng, và nhất là Từ điển dữ
liệu để xác định các đơn vị dữ liệu, đó sẽ là các thực thể
và các thuộc tính tiềm năng
– Cân nhắc mức độ quan trọng của các thực thể và các thuộc
tính tiềm năng đó đối với hệ thống
– Chọn ra các thực thể và các thuộc tính của chúng
 L ư u ý: cần phân biệt giữa các thực thể và thuộc
tính.

25
Xác đnh
ị các liên kt
ế

 Phương pháp:
– Xác định các mối quan hệ giữa các thực thể, để từ đó xác
định ra loại liên kết
– Xác định lực lượng của các thực thể t h a m gia
– Xác định các thuộc tính của các liên kết nếu có

26
Hoàn thiện mô hình

 Cân nhắc rồi thống nhất việc lựa chọn T h ự c t h ể |


L i ê n k ế t | T h u ộ c t í n h trong mô hình
 Cân nhắc việc bổ sung/loại bỏ các t hành phần của mô
hình
 Trong quá trình này, có thể cần phải chuyển đổi giữa
Liên kết và Thực thể, hoặc giữa Thuộc tính và
Thực thể
 Vẽ mô hình cuối cùng gồm toàn bộ các t hành phần
của nó

27
Ví d:ụMô hình TT LK – Từđiển dữliệu
Tên dữ liệu Bí danh Mô tả
Khoa = Tên khoa + Văn phòng + Điện thoại +
Fax
Bộ môn BM = Tên BM + Văn phòng
Giáo viên GV =TênGV + Ngày sinh + Địa chỉ + Chức
danh + (Chức vụ)
Trưởng BM TBM Là một giáo viên có chức vụ là trưởng
BM
Lớp học LH = Tên lớp + Khóa học + Số Lượng SV
Phòng học PH Tên phòng + SL chỗ ngồi
Thời khóa biểu TKB = Năm học + Học kỳ + {Khoa +
{lớp học + phòng học + tiết học}m}n
Khối lượng KLGD = TKB + {Giáo viên}mxn
giảng dạy

28
Ví d:ụMô hình TT LK – Các thực thể
Tên thực Tên sử Các thuộc tính
thể dụng
Khoa TKhoa Tên khoa, Văn phòng, Điện thoại,
Fax
Bộ môn TBoMon Tên BM, Văn phòng
Giáo viên TGiaoVien TênGV, Ngày sinh, Địa chỉ, Chức
danh, Chức vụ
Lớp học TLopHoc Tên lớp, Khóa học, Số Lượng SV
Phòng học TPhong Tên phòng, SL chỗ ngồi
Trưởng BM TTrBM Là một Giáo viên có Chức vụ là
trưởng BM

29
Ví d:ụMô hình TT LK – Các liên kt
ế
 L i ê n k ế t 1:N g i ữ a K h o a v à Bộ môn: Một Khoa có nhiều
Bộ môn, nhưng ngược lại một Bộ môn thuộc đúng một Khoa.
 L i ê n k ế t 1:N g i ữ a Bộ m ô n v à G iáo viên: Một Bộ môn có
nhiều Giáo viên, nhưng ngược lại một Giáo viên thuộc đúng một
Bộ môn.
 L i ê n k ế t 1:N g i ữ a K h o a v à L ớ p học: Một Khoa có nhiều
Lớp học, nhưng ngược lại một Lớp học thuộc đúng một Khoa.
 L i ê n k ế t ISA g i ữ a Tr ư ở n g Bộ m ô n v ớ i G iáo viên : vì
Trưởng Bộ môn cũng là một Giáo viên.
 L i ê n k ế t 1:1 g i ữ a Tr ư ở n g Bộ m ô n v à Bộ môn: mỗi Bộ môn
có một Trưởng Bộ môn, và ngược lại mỗi Trưởng Bộ môn
lãnh đạo một Bộ môn.

30
Ví d:ụMô hình TT LK – Các liên kt
ế
 T h ờ i k h ó a b i ể u l à l i ê n k ế t n h i ề u n g ô i g i ữ a c ác
t h ự c thể: K h o a , L ớ p h ọ c v à P h ò n g học . Liên
kết này sẽ bổ sung t h ê m các thuộc tính là N ă m học,
Học k ỳ và Tiết học.
 K h ố i l ư ợ n g g i ả n g d ạ y l à l i ê n k ế t M:N g i ữ a T K B
v à Giáo viên: Một T K B sẽ phân KLGD cho nhiều
nhiều Giáo viên, và ngược lại một Giáo viên t h a m
gia
giảng dạy theo nhiều TKB.

31
Ví d:ụMô hình TT LK – Các liên kt
ế

1 N
Khoa Có Bộ môn

1 N
Khoa Có Lớp học

N 1
Giáo viên Thuộc Bộ môn
1
ISA

Trưởng Bộ 1
LĐạo
môn

32
Học kỳ
Năm học Tiết học

Khoa TKB Lớp học

Phòng học

TKB KLGD Giáo viên

33
Ví d:ụMô hình TT LK – Hoàn thiện
1 N
1 N N 1
Khoa TKB Lớp học
1 N 1
N
1

Phòng học KLGD


N
N 1
1 N
Bộ môn Giáo viên
1

1 Trưởng Bộ
môn
34
Các nguyên tắc thiết kếmô hình TTLK

1. Trung thành
2. Tránh dư thừa
3. Giữ cho mô hình đơn giản
4. Chọn đúng loại liên kết
5. Chọn loại t hành phần phù hợp

35
Nguyên tắc 1: Trung thành

 Luôn luôn, các phân tích và thiết kế cần phải phản


ánh chân thực các mô tả của hệ thống nghiệp vụ.
 Với mô hình TTLK, điều này có nghĩa là các t hành
phần của nó cũng phải phản ánh sự thực này.
 N ê n đ ặ t t ê n c ác T h ự c t h ể , L i ê n k ế t v à T h u ộ c
tính càng gần với thực tế càng tốt.

36
Nguyên tắc 2: Tránh dư thừa

 Không để tình trạng cùng một thông tin lại xuất hiện
ở nhiều chỗ khác nhau trong mô hình
 Có thể gộp các thực thể có thông tin chung, và
kết hợp với liên kết ISA để giảm dư thừa

37
Ví dụ: dư thừa

name name addr

N 1
Beers ManfBy Manfs

manf

Thông tin về nhà sản xuất đã xuất hiện 2 lần, ở thuộc


tính và ở thực thể

38
Ví dụ: không còn dư thừa

name name addr

N 1
Beers ManfBy Manfs

Thông tin về nhà sản xuất chỉcòn xuất hiện đúng


1 lần

39
Ví dụ: giảm dư thừa với liên kết SIA

name
dob
roll#
name
dob
Student ID

school addr
Person addr

school company
name dob
emp# Student Employee
Employee
addr
company

40
Nguyên tắc 3: Giữ mô hình đơn giản

 Không bổ sung t h ê m các thành phần mới k hi


không thực sự cần thiết.
 Cần lưu ý cân bằng việc phát triển hệ thống hiện tại
và n h u cầu nâng cấp hệ thống trong tương lai.

41
Ví dụ: Thực thể không cần thiết

 Trong hệ thống quản lý Khối lượng giảng dạy cho


một Trường, thì có thể có thực thể Trường và Khoa,
và một Trường thì có thể có nhiều Khoa. Nhưng trong
hệ thống chỉ có 1 thực thể Trường nên việc tạo ra
tập thực thể Trường là không cần thiết.

1 N
Trường Có Khoa

42
Nguyên tắc 4: Chọn đúng loại liên kết

 Khi giữa các thực thể có thể tồn tại nhiều liên kết
khác nhau, thì chỉ cần chọn các liên kết cơ bản nhất.
Còn các liên kết còn lại m à có thể suy được từ các
liên
kết cơ bản thì nên bỏ đi.

43
Ví dụ: Chọn đúng loại liên kết

Salary
title year name addr

Movies Contracts Stars

N
length genre 1  Liệu có cần t h ê m các
liên kết giữa Movies và
Studios Studios, cũng như giữa
Movies và Stars không?
 N ế u có thì liên kết
name addr Contracts có cần thiết
nữa
không? 44
Nguyên tắc 5: Chọn loại thành phần phù hợp

 Đôi k h i không dễ quyết định x e m biểu diễn một


thông tin dưới dạng nào của mô hình TTLK, vì dường
như dạng nào cũng có thể được. Khi đó cần chọn
dạng nào phù hợp nhất, m à tiêu chuẩn có thể dựa
vào các nguyên tắc trên.
 Cần phân biệt giữa thực thể, thuộc tính và liên kết để
chọn cho phù hợp:
– Thực thể có thể tồn tại độc lập và cần có t h ê m thông tin chi
tiết cho nó (các thuộc tính).
– Các thuộc tính không đứng độc lập, m à cần bổ sung, hay là
bộ phận của thực thể hay liên kết nào đó.
– Liên kết cũng không tồn tại độc lập, m à p hụ thuộc vào
các thực thể th à n h phần

45
Kỹthuâṭphn
ầ mềmứngdụng

Chương 2
CÁC P H A T R O N G P H Á T T R I Ể N P H Ầ N MỀM

P h a 4: Thiế t kế (Giớ i thiê ụ )

2/21/2021
Nội dung chính
 Mục đích của thiết kế
 Các nguyên tắc thiết kế
 Các phần cần thiết kế
– Thiết kế CSDL  CSDL ít nhất ở dạng chuẩn 3
– Thiết kế kiến trúc  Lược đồ cấu trúc chương trình
– Thiết kế giao diện  các menu, form nhập, m ẫ u báo cáo,
thông báo

2
Mục đích của giai đoạn Thiết kế
 Là quá trình chuyển các yêu cầu của phần m ề m
sang
dạng biểu diễn của phần m ề m m à nó có thể được
đánh giá về chất lượng trước k h i cài đặt.
 Thiếu thiết kế, việc cài đặt có thể gặp các vấn
đề:
– T h i ế u k ế h o ạ c h c à i đặt: không biết rõ thứ tự cài đặt các
th à n h phần, do đó gây ra sự lộn xộn và khó k h ă n trong
việc ước lượng và phân công công việc
– K h ô n g rõ ràng: chưa hiểu rõ các yêu cầu sẽ được cài đặt
thế nào
– K h ó n â n g c ấ p v à b ả o trì: k h i có lỗi, rất khó xác định

n ằ m ở phần nào. Khi mu ốn nâng cấp cũng không biết
cầnẢnh hưởng xấu đế n chất lượng v à tiến độ
nâng
l à mcấp p hởầđâu,
n mảnh ề m hưởng của nó đến hệ thống hiện tại
thế 3
Các nguyên tắc thiết kế
 Sự trừu tượng (abstraction)
 L à m mị n (tinh chỉnh từng bước - refinement)
 Modul hóa (modularity)

4
Các nguyên tắc thiết kế
 Sự trừu tượng:
– Là sự tập trung vào một vấn đề ở một mức khái quát nào đó,
và bỏ qua các chi tiết mức thấp hơn không liên quan
– Quá trình thiết kế hệ thống đòi hỏi nhiều mức trừu tượng
khác nha u
– Với phần m ề m thì có 3 loại trừu tượng
 Trừu tượng t h ủ tục
 Trừu tượng dữ liệu

 Trừu tượng điều khiển

5
Các nguyên tắc thiết kế
 L à m m ị n (tinh chỉnh từng bước - refinement)
– Là quá trình làm chi tiết hóa từng th à n h phần của một biểu
diễn nào đó, để dần đưa nó sang biểu diễn ở dạng chi tiết
hơn (giảm mức độ trừu tượng)
– Khi các nh iệ m v ụ đã được làm m ịn thì dữ liệu cũng phải
được làm mịn, được phân rã hay cấu trúc lại.

6
Các nguyên tắc thiết kế
 Modul hóa (modularity):
– Là quá trình phân chia hệ thống/phần m ề m th à n h các th à n h
phần riêng rẽ có tên và tương đối độc lập
– Là một k ỹ thuật cơ bản nhất để quản lý một cách hiệu quả
độ phức tạp của hệ thống
– Modul hóa tốt có thể giúp giảm thiểu thời gian và chi phí
phát triển hệ thống

7
Modul hóa

Quan hệ giữa modul hóa và chi phí phần mềm

8
Module hóa hiệu quả
 Che dấu thông tin
– Là cách thiết kế làm sao để thông tin trong một
modul (cả chức năng và dữ liệu) là không nhìn
thấy và không truy nhập được từ các t hành phần
bên ngoài m à không có n h u cầu về thông tin đó
 Độc lập chức năng (functional
independence)
– Là tính chất phản ánh mức độ đơn nhất về chức
năng và đơn giản về giao diện của một modul. Nó
được đo lường theo 2 tiêu chuẩn:
 Mức độ cố kết (cohesion)
 Mức độ tương liên (coupling)
9
Mức độ cố kết
 Khái niệm:
Mức độ cố kết của một modul là một đơn vị đo về sức
m ạ n h chức năng của modul đó. Mức độ này càng
cao thì tính độc lập chức năng cũng càng cao.

10
Các loại cố kết và mức độ của chúng
Mức độ Loại cố kết Ý nghĩa
Cố kết trùng Modul bao gồm một dãy các công việc mà liên
khớp quan rất ít đến nhau

Thấp Cố kết logic Modul bao gồm một dãy các công việc mà có liên
quan đến nhau một cách logic
Cố kết thời Modul bao gồm một dãy các công việc mà phải
gian hoàn thành trong cùng một khoảng tg.
Cố kết thủ tục Các công việc trong modul đó liên quan đến nhau
và phải được thực hiện theo một trật tự nhất định
Vừa
Cố kết truyền Khi các công việc trong một modul cùng sử dụng
thông một phần nào đó của một cấu trúc dữ liệu
Cao Cố kết thủ tục Khi modul đó chỉ thực hiện một công việc
rõ ràng

11
Ví dụ về mức độ cố kết

 Bài toán: viết một chương trình tính giá trị một biểu
thức số học m à có thể được nhập từ bàn phím hay
từ một tệp văn bản. Kết quả đưa ra cũng có thể đưa
ra m à n hình hoặc ghi vào tệp văn bản.
 Sơ đồ cho giải thuật của bài toán trên được cho ở hình
sau:

12
Ví dụ về mức độ cố kết

Nhập từ
Chọn bàn phím
Chuyển bt
BT dạng sang
cách trung dạng hậu
Nhập từ tệp tố tố
nhập
BT dạng
hậu tố
In ra màn
hình Chọn
Giá trị BT Tính giá trị
biểu thức
cách
Ghi ra tệp xuất

13
Mức độ cố kết thấp: trùng khớp

Nhập từ
Chọn bàn phím
Chuyển bt
BT dạng sang
cách trung dạng hậu
Nhập từ tệp tố tố
nhập
BT dạng
hậu tố
In ra màn
hình Chọn
Giá trị BT Tính giá trị
biểu thức
cách
Ghi ra tệp xuất

Một modul làm toàn bộ các công việc

14
Mức độ cố kết vừa: thủ tục

modul Nhập từ
nhập BT bàn phím
Chọn Chuyển bt
BT dạng sang
cách trung dạng hậu
Nhập từ tệp tố tố
nhập
BT dạng
hậu tố
In ra màn
hình Chọn
Giá trị BT Tính giá trị
biểu thức
cách
Ghi ra tệp xuất
modul tính
giá trị BT
modul xuất BT

15
Mức độ cố kết cao: thủ tục rõ ràng

Nhập từ
bàn phím
Chọn cách Chuyển bt
BT dạng sang
nhập
trung dạng hậu
Nhập từ tệp tố tố
BT dạng
hậu tố
In ra màn
hình
Chọn cách Giá trị BT Tính giá trị
xuất biểu thức
Ghi ra tệp

16
Mức độ tương liên

 Khái niệm:
Mức độ tương liên của một modul đơn vị đo lường
mức độ kết nối của modul đó với các modul khác.
Điều này phụ thuộc vào độ phức tạp của giao
diện, điểm truy nhập hay t h a m chiếu của modul.

17
Mức độ tương liên

Mức độ Loại Ý nghĩa


Tương liên Là khi một modul truyền tham số đến
Thấp
dữ liệu modul khác
Tương liên Là khi một modul truyền một thông tin
điều khiển điều khiển (cờ điều khiển) đến modul
Vừa khác
Tương liên Là khi một modul phụ thuộc vào một thiết
ngoài bị bên ngoài (như các t/b nhập/xuất)
Tương liên Là khi một số modul tham chiếu/chia sẻ đến
chung dữ cùng một đối tượng dữ liệu toàn cục
liệu

Cao Tương liên Là khi một modul sử dụng dữ liệu hay điều
nội dung khiển thông tin trong phạm vi của một
modul khác;
Nó cũng xuất hiện khi có tồn tại lệnh rẽ
nhánh trong modul
18
Kỹthuâṭphn
ầ mềmứngdụng

Chương 2
CÁC P H A T R O N G P H Á T T R I Ể N P H Ầ N MỀM

P h a 4: Thiế t kế (Thiế t kế cơ sở d ữ li ệu)


Mô h ì n h d ữ l i ệ u q u a n hệ ( p h ầ n 1)

2/21/2021
Nội dung chính
 Giới thiệu về Mô hình dữ liệu
 Tổng quan về Mô hình dữ liệu quan hệ

2
Tổng quan vềMô hình dữ liệu

3
Mô hình dữ liệu là gì?

 Mô hình dữ liệu (Data Model) là cách k ý hiệu để mô


tả dữ liệu hay thông tin. Nói chung, nó gồm có ba
phần:
– Cấu trúc của dữ liệu (Structure of the data)
– Các thao tác trên dữ liệu (Operations on data)
– Các ràng buộc (Constraints)

4
Tóm tắt lch
ị sửcủa các Mô hình dữ iệu
l

5
Tổng quan vềMô hình dữliệu
quan hệ

6
Quan hệlà gì?
 Quan hệ (relation) là một bảng hai chiều:
– Các cột gọi là các thuộc tính (attribute)
– Các hàng gọi là các bản ghi (record) hay bộ (tuple)

7
Quan hệlà gì?

 Ví dụ: bảng Customers:


– Mỗi hàng biểu diễn cho một CUSTOMER
– Mỗi cột biểu diễn cho một thuộc tính của
CUSTOMER và được gọi là “thuộc
tính”

8
Lược đồ (Schema)
 Lược đồ của một quan hệ là thông tin về cấu trúc của
quan hệ đó
 Nó bao gồm tên và tập các thuộc tính của quan hệ
đó.
 Ví dụ: Lược đồ của quan hệ C u s t o m e r s ở trên:
– Customers ( Customers ID, tax ID, name, address)

9
Bộvà thành phn
ầ

 Một hàng của một quan hệ được gọi là một b ộ


(tuple) hay b ả n g h i (record)
 Một giá trị của một thuộc tính trong một bộ được
gọi là một t h à n h p h ầ n (component)

10
Min
ề giá trị (Domains)
 Miền giá trị của một thuộc tính là tập tất cả
các giá trị m à thuộc tính đó có thể nhận
 N ên khái niệm miền giá trị tương đương với
khái niệm kiểu dữ liệu (data type)
 Ở mức cài đặt trong một hệ quản trị CSDL,
thì miền giá trị của các thuộc tính của một
quan hệ cần phải chọn sao cho n ằ m trong
số các kiểu dữ liệu m à hệ QT CSDL đó hỗ
trợ

11
Biểu diễn tương đương của quan hệ

 Quan hệ là tập hợp của các bộ (sets of tuples), chứ


không phải danh sách của các bộ (lists of tuples)
 Do vậy, thứ tự của các bộ trong quan hệ không quan
trọng, m à quan trọng là nội dung của các bộ. Đồng
thời nếu có 2 bộ có giá trị bằng nhau trên mọi thuộc
tính thì coi như 1 bộ bị thừa

12
Thểhiện của quan ệh
 Thể hiện của quan hệ (instance of a
relation) là tập các bộ của quan hệ đó
tại một thời điểm
 Thể hiện của một quan hệ phản ánh nội
dung của quan hệ đó, và nó thay đổi kh i có
các thao tác cập nhật nội dung quan hệ
như thêm, sửa hay xóa bộ.

13
Khóa của quan hệ
 Khóa (key) của một quan hệ r là một hoặc một tập
hợp các thuộc tính của r, sao cho với một thể hiện của
r, thì không tồn tại 2 bộ nào m à giá trị của các t hành
phần bằng nhau trên khóa.
 Hay nói cách khác, giá trị của các t hành phần trên
Khóa của mỗi bộ trong một thể hiện của quan hệ r là
duy nhất.

14
Khóa của quan hệ
 Có hai loại Khóa của quan hệ
– Khóa của một thể hiện của quan hệ
– Khóa của lược đồ của quan hệ
 VD: với thể hiện s1 của quan hệ S t u d e n t sau:
ID_SV Name Address Class
20091111 Nguyễn Văn A Hà nội ĐT1
20091112 Nguyễn Hồng B Quảng ninh ĐT2
20091113 Trần Lê C Hà tây ĐT1
20091114 Võ Thị D Bắc giang ĐT2

Có các Khóa là:


– K1 = ID_SV
– K2 = Name
– K3 = Address
15
Khóa của quan hệ
 VD: nhưng với thể hiện s2 của quan hệ S t u d e n t sau:
ID_SV Name Address Class
20091111 Nguyễn Văn A Hà nội ĐT1
20091112 Nguyễn Hồng B Quảng ninh ĐT2
20091113 Nguyễn Văn A Hà tây ĐT1
20091114 Võ Thị D Hà nội ĐT2

thì chỉ còn một Khóa là:


– K1 = ID_SV

 K1 = ID_SV là Khóa của lược đồ Sinh


viên,
Còn K2 và K3 chỉ là Khóa của thể hiện s1
16
Khóa của quan hệ
 Tính chất:
– Khóa của thể hiện thì chưa chắc đã là Khóa của
lược đồ
– Còn Khóa của lược đồ thì cũng là Khóa của mọi
thể hiện của quan hệ
Khóa của lược đồ không phụ thuộc vào nội
dung
của quan hệ, còn khóa của thể hiện thì phụ
thuộc

17
Cơsởdữliệu quan ệh
 CSDL quan hệ (Relational Database): Là tập hợp các
quan hệ và các ràng buộc giữa chúng, m à có liên
quan đến một hệ thống thông tin (phần mềm) nào đó

18
Kỹthuâṭphn
ầ mềmứngdụng

Chương 2
CÁC P H A T R O N G P H Á T T R IỂ N P H Ầ N MỀM

P h a 4: Thiế t kế (Thiế t kế cơ sở d ữ liệ u)


Mô h ì n h d ữ l i ệ u q u a n h ệ ( P h ầ n 2)

2/21/2021
Nội dung chính
1. Giới thiệu
2. Đại số quan hệ là gì?
3. Các phép toán trong đại số QH

2
1. Giới thiệu
 Các thao tác dữ liệu trên mô hình quan hệ dựa trên
đ ạ i số q u a n hệ.
 Đại số quan hệ là một phương pháp đơn giản và hữu
hiệu để xây dựng các quan hệ mới từ các quan hệ
hiện có.
 Đại số quan hệ cũng là nền tảng lý thuyết của ngôn
ngữ truy vấn SQL.

3
2. Môn đại sốlà gì?
 Môn đại số bao gồm:
– Các phép toán (operators)
– Các toán hạng nguyên tố (atomic operands)
 Môn đại số cho phép chúng ta xây dựng các biểu thức
đại số.

4
Đại sốquan hệlà gì?
 Đại số quan hệ bao gồm:
– Các phép toán trên đại số quan hệ
– Các toán hạng có thể là:
 Các biến đại diện cho các quan hệ
 Các hằng

5
3. Các phép toán trong đại số QH
 Tổng quan về các phép toán:
– Các phép toán tập hợp: h ợ p , giao, h i ệ u
– Các phép toán làm phân chia quan hệ: c h ọ n n h ằ m lọc ra
một số bộ, và c h i ế u n h ằ m loại ra một vài thuộc tính.
– Các phép toán trộn hai quan hệ: tíc h , và các phép n ố i khác
n hau
– Phép đ ổ i t ê n n h ằ m thay đổi tên và các thuộc tính của quan
hệ, nhưng không làm thay đổi nội dung của nó

6
Ký hiệu các phép toán

Phép toán Ký hiệu


Hợp (Union) 
Giao (Intersection) 
Hiệu (Difference) - or \
Chiếu (Projection) 
Chọn (Selection)  (sigma)
Tích đề các (Product) x
Đổi tên (Renaming)  (rô)

7
Ký hiệu các phép toán

Phép toán Ký hiệu


Nối (Join)
Nối ngoài trái (Left outer join)
Nối ngoài phải (Right outer join)
Nối ngoài đầy đủ (Full outer join)
Nối nửa (Semi-join)

8
Các phép toán nguyên thủy (Primitive operations)

 Trong bất kỳ đại số nào, đều có các phép


toán nguyên thủy (cơ bản nhất), còn các
phép toán khác đều có thể được suy ra từ
các phép toán nguyên thủy này
 Trong đại số quan hệ, có 6 phép toán nguyên
thủy:
– Phép Chọn,
– Phép Chiếu,
– Phép Tích Đề Các,
– Phép Hợp,
– Phép Hiệu,
– Phép Đổi tên

9
Các phép toán tp
ậ hợp (Set operations)

 Đ i ề u k i ệ n t i ê n q u y ế t : để thực hiện được các phép


toán này, 2 quan hệ R và S trước hết cần phải
thỏa m ã n 2 điều kiện:
– Chúng phải có lược đồ có số thuộc tính giống nhau, và miền
giá trị tương ứng của các thuộc tính cũng phải giống nhau.
– Thứ tự của các thuộc tính của 2 QH này cũng phải giống
nhau.
 Khi đó 2 QH này gọi là K h ả h ợ p .

10
Các phép toán tp
ậ hợp

 Hợp (Union):
– R S
 Giao (Intersection):
– R S
 Hiệu (Difference):
– R – S (R \ S)

11
Phép hợp

 Ví dụ: {1,2} U {1,3} =


{1,2,3}

12
Phép hiệu

 Vd: {1,2,3,5} – {1,3,4} = {2,5}.

13
Phép giao

Intersection

 Vd: {1,2,4,6} ∩ {1,2,6,7,8} =


{1,2,6}

14
Phép chọn
 R1 := σ C (R2)
 C là một biểu thức logic (điều kiện chọn).
 R1 là tất cả các bộ có trong R2 m à thỏa
m ã n điều kiện C (C nhận giá trị
Đúng).

15
Phép chọn: ví dụ

Quan hệ Sells:
bar beer price
Joe’s Bud 2.50
Joe’s Miller 2.75
Sue’s Bud 2.50
Sue’s Miller 3.00

JoeMenu := σbar=“Joe’s”(Sells):
bar beer price
Joe’s Bud 2.50
Joe’s Miller 2.75

16
Phép chiếu
 R 1 := π L (R2)
– L là một danh sách các thuộc tính của quan hệ R2.
– R1 được tạo ra bằng cách trích ra từ mỗi bộ trong R2, các
th à n h phần thuộc các thuộc tính L. Từ mỗi bộ được trích ra
đó sẽ tạo th à n h một bộ mới của R1.
– Loại bỏ các bộ giống n ha u nếu có trong R1.

17
Phép chiếu: ví dụ

Quan hệ Sells:
bar beer price
Joe’s Bud 2.50
Joe’s Miller 2.75
Sue’s Bud 2.50
Sue’s Miller 3.00

Prices := πbeer, price(Sells):


beer price
Bud 2.50
Miller 2.75
Miller 3.00

18
Phép tích Đềcác
 R3 := R1 Χ R2
– Ghép đôi từng bộ t1 của R1 với từng bộ t2 của R2, th à n h một
bộ của R3
– Lược đồ của R3 là ghép các thuộc tính của R1 và R2, theo
đúng thứ tự.

19
Tích ĐềCác: ví dụ

R1( A, B) R3( A, R1.B, R2.B , C )


1 2 1 2 5 6
3 4 1 2 7 8
1 2 9 10
R2( B, C) 3 4 5 6
5 6 3 4 7 8
7 8 3 4 9 10
9 10

20
Phép đổi tên
 Phép đổi tên ρ sẽ thay đổi tên của quan hệ và
các thuộc tính của nó
 R 1 := ρR 1(A 1,… ,A n ) (R2): sẽ đổi t ên R 2 t hàn h R 1; và các
thuộc tính của R2 tương ứng sẽ t hành A 1 ,…,A n .
 Ký hiệu ngắn gọn: R1(A 1 ,…,A n ) := R2.

21
Phép đổi tên: ví dụ

Bars( name, addr )


Joe’s Maple St.
Sue’s River Rd.

R(bar, addr) := Bars

R( bar, addr )
Joe’s Maple St.
Sue’s River Rd.

22
Các phép nối (joins)

R
 Nối bằng:
S
– Nối tự R.A = S.B
nhiên
R S
 Nối theta R S
C

23
Nối tựnhiên (natural join)
 Là phép toán kết nối hai quan hệ bằng cách:
– So sánh bằng giữa các thuộc tính cùng tên của 2 quan hệ
này,
– Loại bỏ đi một trong 2 thuộc tính bằng nha u này.

 Ký hiệu R3 := R1 ⋈ R2

24
Nối tựnhiên: ví dụ
Sells( bar, beer, price ) Bars( bar, addr )
Joe’s Bud 2.50 Joe’s Maple St.
Joe’s Miller 2.75 Sue’s River Rd.
Sue’s Bud 2.50
Sue’s Coors 3.00
BarInfo := Sells ⋈
Bars
BarInfo( bar, beer, price, addr )
Joe’s Bud 2.50 Maple St.
Joe’s Milller 2.75 Maple St.
Sue’s Bud 2.50 River Rd.
Sue’s Coors 3.00 River Rd.

25
Kỹthuâṭphn
ầ mềmứngdụng

Chương 2
CÁC P H A T R O N G P H Á T T R IỂ N P H Ầ N MỀM

P h a 4: Thiế t kế (Thiế t kế cơ sở d ữ liệ u)


Mô h ì n h d ữ l i ệ u q u a n hệ ( P h ầ n 3)

2/21/2021
Mc
ụ đích
N ắ m được các vấn đề và khái niệm
 Các bất thường trong một quan hệ (Anomalies)
 Phụ thuộc h à m (Functional Dependencies)
 Khóa
 Sự tách lược đồ quan hệ (Decomposition)

2
Các nội dung chính
1. Giới thiệu về các bất thường trong một quan hệ
2. Các phụ thuộc h à m
3. Khái niệm các khóa
4. Các nguyên nhân gây ra các bất thường
5. Phép tách lược đồ QH

3
1. Các bất thường trong quan ệh

 Hãy quan sát bảng Student


ID Name Class Department Subject Mark

1 E1-001 Nguyen Van A E1 Electronics Electronic Circuit 8


2 E1-001 Nguyen Van A E1 Electronics Digital Technique 7
3 E1-002 Tran Thi B E1 Electronics Digital Technique 9
4 E1-002 Tran Thi B E1 Electronics Electronic Circuit 8
5 E2-001 Nguyen Ho C E2 Electronics Digital Technique 6
6 IT1-001 Tran Thi B IT1 IT Electronic Circuit 10
7 IT1-002 Le Van D IT1 IT Digital Technique 8

4
1. Các bất thường trong quan ệh
Từ bảng trên có thể n hận thấy một số bất thường:

 Dư t h ừ a ( R e d u n d a n c y ) : giá trị của một số thành phần


trong các bộ bị lặp lại không cần thiết như : Name,
Class, Department
 B ấ t t h ư ờ n g k h i c ậ p n h ậ t ( U p d a t e Anomalie): xuất
hiện k h i cập nhật giá trị cho một bộ hiện có, vì thực tế
thực hiện của thao tác có vẻ phức tạp hơn rất nhiều so với
logic của thao tác đó.
 B ấ t t h ư ờ n g k h i b ổ s u n g ( I n s e r t i o n Anomalie): xuất
hiện kh i bổ sung t h ê m một bộ mới.
 B ấ t t h ư ờ n g k h i x ó a ( D e l e t i o n Anomalie): xuất hiện
k hi xóa một bộ hiện có trong quan hệ.
5
1. Các bất thường trong quan ệh
Hậu quả của các bất thường trên

 S ự không nhất quán dữ liệu có nguy cơ rất cao


 Tốn chỗ lưu trữ do dư thừa
 Các thao tác cơ bản trên CSDL không hiệu quả

6
1. Các bất thường trong quan ệh
 Vậy nguyên nhân của các bất thường này là gì?

 Khái niệm P h ụ t h u ộ c h à m có thể giúp chúng ta


hiểu nguyên nhân, cũng như giúp t ì m ra giải pháp
cho vấn đề trên.

7
2. Phụthuộc hàm
 Định nghĩa
 Ý nghĩa của PTH
 Hệ tiên đề Amstrong
 Một số loại PTH đặc biệt
 Khóa và thuộc tính khóa

8
2. Phụthuộc hàm
 Định nghĩa về PTH (Functional Dependency)
– Cho lược đồ quan hệ R(A 1 ,A 2 ,…A n ), và A = A 1 A 2  …
A n , và 2 tập các thuộc tính X và Y  A. Chúng ta nói
rằng:
 X→ Y (X xác định h à m Y, hay Y phụ thuộc hàm
vào X), nếu  thể hiện r của R, thì không tồn tại 2
bộ t 1 , t 2 , sao cho t1[X]=t2[X] và t 1 [Y]  t 2 [Y]
 Nói cách khác: tập các thuộc tính Y p hụ thuộc
h à m vào tập các thuộc tính X k h i và chỉ k h i ứng
với mỗi bộ giá trị của X trong R chỉ xác định
đúng một giá trị của Y tại mọi thời điểm
– X được gọi là Q u y ế t đ ị n h (determinant)
của PTH.

9
2. Phụthuộc hàm – ví dụ
– Một số PTH từ bảng Student:
 ID → Name;
 ID → Class;
 Class → Department;
 ID,Subject → Mark

10
2. Phụthuộc hàm – Ý nghĩa
 Ý nghĩa của một PTH X → Y trong lược đồ R: 
htể hiện r của R thì:
– Hoặc không có bất kỳ 2 bộ t 1 , t 2 nào, sao cho t1[X]=t2[X]
– Hoặc nếu tồn tại 2 bộ t 1 , t 2 m à t1[X]=t2[X], thì t1 [Y]=t2 [Y]
Trong cả hai trường hợp,  bộ t, với mỗi giá trị của t[X] thì chỉ
có một giá trị của t[Y], do đó nếu biết trước giá trị t[X], thì có
thể xác định giá trị t[Y].

11
2. Phụthuộc hàm – Ý nghĩa
 Ý nghĩa của PTH X → Y:
– Thế thì PTH đến từ đâu?
⚫ Nó xuất phát các q u y t ắ c n g h i ệ p v ụ (hay
logic n g h i ệ p v ụ) của cơ sở dữ liệu. Các quy tắc
nghiệp v ụ này sẽ quy định các phụ thuộc giữa
các thuộc tính, và từ đó sẽ tạo ra các phụ thuộc
hàm.

12
2. Phụthuộc hàm – Ý nghĩa
 Ví dụ: một số quy tắc nghiệp v ụ trong lược đồ
Student:
– r1: Mỗi sinh viên có một ID duy nhất.
– r2: Mỗi sinh viên chỉ có duy nhất 1 tên và chỉ thuộc về một
lớp.
 Từr1 và r2, ta có các PTH sau:
ID → Name; ID → Class
– r3: Với mỗi môn học, mỗi sinh viên chỉ thi một lần
 Từ r3, ta có PTH: (ID, Subject) → Mark;

13
2. Phụthuộc hàm
 Hệ tiên đề Amstrong
– Tính phản xạ:  Y  X thì X → Y (PTH t ầ m
thường)
– Tính tăng trưởng:  X, Y, Z, nếu X → Y thì X Z

Y Z (XZ = X  Z)
– Tính bắc cầu:  X, Y, Z, nếu X → Y và Y
→  Z thì X
→ Z
 Các hệ quả:
– Tính hợp : nếu X → Y và X → Z thì X
→  YZ
– Tính tách: nếu X → Y và Z  Y thì X → Z 14
2. Phụthuộc hàm
 Một số loại PTH đặc biệt
– P T H b ộ p h ậ n v à P T H đ ầ y đủ: X → Y được gọi là P T H
bộ p h ậ n nếu X’  X sao cho X’ → Y. Trái lại, nếu không
tồn tại X’ như trên thì P T H n à y l à đ ầ y đ ủ .

– P T H b ắ c c ầ u v à P T H t r ự c tiế p : X → Y được gọi là


PTH
b ắ c c ầ u (hay gián tiếp) nếu  Z  X Y sao cho X → Z và Z

Y. Trái lại, nếu không tồn tại Z như trên thì P T H n à y l à
trực tiếp.

15
3. Khóa
Có một số loại khóa như sau:
– Siêu khóa (Super Keys).
– Khóa ứng viên (Candidate Kyes).
– Khóa chính (Primary Kyes).
– Khóa ngoại.

16
3.
Khóa
Siêu khóa

 Là một hay một tập các cột xác định duy nhất một hàng trong
bảng

 S K là siêu khóa của R k h i với mọi t1, t2 thuộc bất k ỳ thể hiện r
của R ta luôn có t1[SK] ≠ t2[SK]

 S K là siêu khóa củaR <=> S K xác định h à m mọi thuộc tính


của R (SK -> R).
Ví dụ: Ta có lược đồ DMSV(MaSV, SoC MT ND, Ho_ten_sv,

Ng ay _Si nh, Dia_chi, Que _quan) . Ta có thể có siêu khóa sau


(DMDV(MaSV, SoCMT ND, Ho_ten_sv), k h i đó một khóa
nói chung là t hành phần tối thiểu của siêu khóa.

17
3 Khóa (tiếp)
 Khóa ứng viên (khóa ứng cử): Là một tập con của siêu khóa (cũng là một siêu
khóa), nhưng không thể t h u lại thành một siêu khóa khác được gọi là khóa
ứng viên hay khóa dự tuyển, Ví dụ ta có tập các khóa ứng viên{ (MaSV),
(SoCMTND)}.

 Khóa chính:Là một khóa được lựa chọn một cách tùy ý từ tập các khóa ứng
viên, và được sử dụng trong các chỉ mục của bảng đó.

◼ Khóa ngoại: M ộ t t h u ộ c t í n h c ủ a q u a n hệ R 1 đ ư ợ c g ọ i l à m ộ t

k h o á n g o ạ i l ai n ế u nó k h ô n g p h ả i l à k h o á c h í n h c ủ a q u a n hệ
R 1 n h ư n g c ác g i á t r ị c ủ a nó l à c ác g i á t r ị c ủ a k h o á c h í n h
t r o n g m ộ t q u a n hệ R 2 nà o đ ó

◼ Khóa ngoại lai dùng để chứa dữ liệu dùng cho việc liên kết với
các bảng khác trong CSDL.

18
Ví dụ

19
3. Khóa (tiếp)
– T h u ộ c t í n h k h ó a (Prime attribute): 1 thuộc tính A là
t h u ộ c t í n h k h ó a nếu nó t h a m gia vào th à n h phần
của khóa chính hoặc khóa ứng cử. Trái lại, thì nó là
t h u ộ c t í n h k h ô n g k h ó a (hay t h u ộ c t í n h m ô tả)

20
4. Nguyên nhân gây ra các bất thường

ID Name Class Department Subject Mark

1 E1-001 Nguyen Van A E1 Electronics Electronic Circuit 8


2 E1-001 Nguyen Van A E1 Electronics Digital Technique 7
3 E1-002 Tran Thi B E1 Electronics Digital Technique 9
4 E1-002 Tran Thi B E1 Electronics Electronic Circuit 8

5 E2-001 Nguyen Ho C E2 Electronics Digital Technique 6


6 IT1-001 Tran Thi B IT1 IT Electronic Circuit 10
7 IT1-002 Le Van D IT1 IT Digital Technique 8

21
4. Nguyên nhân gây ra các bất thường

 Khóa chính của quan hệ Student:


K = (ID, Subject)
 N h ậ n xét: các thuộc tính dư thừa là các thuộc tính
phụ thuộc h à m bộ phận hoặc bắc cầu vào Khóa chính,
ví dụ như:
– (ID, Subject) → Name, Class, Department; PTH bộ phận

ID → Name, I D → Class, I D → Department
– Class → Department

22
4. Nguyên nhân gây ra các bất thường

 Là sự tồn tại của các phụ thuộc bộ phận hoặc bắc cầu
vào khóa chính

 G i ả i ph áp : Cần loại bỏ các loại PTH này trong quan


hệ, nhưng làm thế nào?
 P h é p t á c h l ư ợ c đồ!

23
4. Phép tách
 Đ ị n h nghĩa: cho một LĐQH R. Một phép tách R là
sự thay thế nó bằng các LĐ con (sub-schema) R 1 , R 2 ,
…, R n sao cho R = R 1 R 2 …R n . Ký hiệu phép
tách
là: (R) = (R 1 ,R 2 , ..., R n ) ( called rho )

 Một số tính chất muốn có của phép tách:


– Tách nối không mấ t thông tin (Loseless-join
decomposition)
– Bảo toàn các PTH (Preservation of FDs)

24
4. Phép tách
 T á c h n ố i k h ô n g m ấ t t h ô n g tin: giả sử cho  =
(R 1 ,R 2 , ..., R n ) là 1 phép tách R.  được gọi là tách nối
không mất thông tin nếu nó thỏa mãn:
 thể hiện r của R thì biểu thức sau luôn thỏa mãn: :
r = R1 (r) R2 (r) ...  Rn (r)
 Bảo t o à n c á c PTH: cho LĐ R với tập các PTH F.
Phép tách  = (R 1 ,R 2 , ..., R n ) được gọi là bảo toàn PTH
nếu nó thỏa mãn:
F = R1 (F)   R2 (F)  …   Rn (F)
Với Ri (F) = {X → Y | X→ Y and X Y  Ri }

25
Ví d:ụtách bảng Student thành 3 bảng S1, S2 và S3

S1 S3
ID Name Class ID Subject Mark
E1-001 Nguyen Van A E1 E1-001 Electronic Circuit 8
E1-002 Tran Thi B E1
E1-001 Digital Technique 7
E2-001 Nguyen Ho C E2
E1-002 Digital Technique 9
IT1-001 Tran Thi B IT1
E1-002 Electronic Circuit 8
IT1-002 Le Van D IT1
E2-001 Digital Technique 6
S2
IT1-001 Electronic Circuit 10
Class Department
E1 Electronics IT1-002 Digital Technique 8
E2 Electronics
IT1 IT

26
4. Phép tách
 Một phép tách tốt cần phải::
– Loại bỏ tất cả các bất thường
– Lưu giữ được các tính chất mong mu ố n

 L à m thế nào đạt được?


 Quá trình chuẩn hóa và các dạng chuẩn (Normalization and
Normal Forms)

27
Kỹthuâṭphn
ầ mềmứngdụng

Chương 2
CÁC P H A T R O N G P H Á T T R IỂ N P H Ầ N MỀM

P h a 4: Thiế t kế (Thiế t kế cơ sở d ữ liệ u)


Mô h ì n h d ữ l i ệ u q u a n hệ ( P h ầ n 4)

2/21/2021
Nội dung trình bày
1. Khái niệm chuẩn hóa
2. Mục đích của chuẩn hóa
3. Các dạng chuẩn
4. Lược đồ khái niệm
5. Các phép toán trên CSDL quan hệ
6. Các bước đưa về dạng chuẩn 3NF
7. Các quy tắc toàn vẹn dữ liệu

2
1. Khái niệm chuẩn hóa

 Chuẩn hóa: Mô hình quan hệ chỉ chấp nhận duy nhất các quan hệ thoả
m ã n điều kiện “Mọi giá trị trong quan hệ - nghĩa là tất cả các giá trị
của
các thuộc tính trong tất cả các bộ - đều phải là nguyên tố (atomic) (nghĩa là
không chia nhỏ được nữa)” .

 Nói một cách khác, tại mỗi vị trí cắt nhau của một hàng và một cột trong
bảng tồn tại đúng một giá trị và không bao giờ là một tập các giá trị.

 Dạng chuẩn (normal form): Là trạng thái của một quan hệ có được do
áp dụng những quy tắc liên quan đến phụ thuộc h à m của quan hệ đó.

 Chuẩn hoá dữ liệu: là quá trình phân rã lược đồ quan hệ chưa chuẩn
hoá (có dạng chuẩn thấp) th ành các lược đồ quan hệ nhỏ hơn nhưng ở
dạng chuẩn cao hơn (có cấu trúc tốt hơn)

3
2. Mc
ụ đích của việc chuẩn hóa

 Loại bỏ các dữ liệu dư thừa trong các bảng.

 Xóa bỏ các dị thường trong các thao tác cập nhật dữ


liệu.

 Tối ưu hóa cấu trúc của các bảng.

4
3 Các dạng chuẩn
 Dạng chuẩn 1(1 Normal Form - 1NF): Một bảng đạt chuẩn 1 k hi và chỉ khi
tất cả các cột trong bảng chỉ chứa giá trị nguyên tố, nghĩa là không có
nhóm lặp (các cột) bên trong một hàng của bảng.

5
3 Các dạng chuẩn (tiếp)

 Kết luận:
– Mọi lược đồ quan hệ đều thuộc dạng chuẩn 1.

– Dạng chuẩn 1 có thể dẫn đến sự trùng lặp dữ


liệu. Do đó gây ra các dị thường về cập nhật
dữ liệu.

6
3. Các dạng chuẩn (tiếp)

 Dạng chuẩn 2(2 Normal Form - 2NF): Lược đồ quan hệ R được gọi là thuộc
dạng chuẩn 2 nếu nó đã ở dạng chuẩn 1 và mọi thuộc tính không khóa của R
phụ thuộc h à m đầy đủ vào khóa chính của R.

7
 K ế t luận:
– Mọi lược đồ quan hệ thuộc dạng chuẩn 2 cũng thuộc dạng chuẩn 1.
– Còn xuất hiện sự trùng lặp dữ liệu. Do đó gây ra các dị thường về cập
nhật dữ liệu.
8
3. Các dạng chuẩn (tiếp)
 Dạng chuẩn 3 (3 Normal Form - 3NF): Lược đồ quan hệ R được gọi là thuộc dạng
chuẩn 3 nếu:
o R thuộc dạng chuẩn 2.
o Mọi thuộc tính không khóa của R không phụ thuộc bắc cầu vào khóa chính
của R.

Ví dụ: Lược đồ dưới đây thuộc dạng chuẩn 2 nhưng không thuộc dạng chuẩn 3, vì
tồn tại phụ thuộc h à m bắc cầu:

Rõ ràng: MaN V  MaPB, MaPB  TenPB => M aN V  TenPB, S au kh i chuẩn hóa sang
dạng 3 chúng t a nhận được các lược đồ sau:
9
3. Các dạng chuẩn (tiếp)
 K ế t luận:
– Mọi lược đồ quan hệ thuộc dạng chuẩn 3 cũng thuộc dạng chuẩn 2.
– PTH bắt cầu là nguyên nhân dẫn đến trùng lặp dữ liệu.
– Dạng chuẩn 3 là dạng chuẩn tối thiểu trong thiết kế CSDL

10
4 Lược đồkhái nim

11
4 Lược đồkhái niệm(tiếp)

12
5 Các phép toán trên CSDL quan hệ

– Chèn (insert)
– Loại bỏ (delete)
– Thay đổi (change)

⚫ Trong mô hình CSDL quan hệ được nêu trên,


các phép toán này được áp dụng cho từng bộ
của các quan hệ lưu trữ trong máy

13
5 Các phép toán trên CSDL quan hệ(tiếp)
1. Phép chèn (INSERT)
– Phép chèn t h ê m một bộ t vào quan hệ r {A1, ..., An}
có dạng:
r = r t
– Ta có thể biểu diễn chi tiết phép chèn như sau:
I N S E R T (r; A1 = d1, A2 = d2, ..., A n = dn)
– Trong đó: - Ai với i = 1, ..., n là tên các thuộc tính và
di với di  dom(Ai) là các giá trị thuộc miền trị
tương ứng của thuộc tính Ai.
⚫ Ví dụ:
– Để t h ê m một bộ t4 = (S4, Clark, 20, London) vào quan hệ
S trong hình trang 11 ta làm như sau:
INSERT(S; S# = S4, S N A M E = Clark, S TA T U S = 20, CITY = London)

14
5 Các phép toán trên CSDL quan hệ(tiếp)

 N ế u x e m th ứ tự các trường là cố định, k h i đó có thể biểu diễn


phép chèn dưới dạng không tường m i n h như sau:
I N S E R T (r; d1, d2, ..., dn)
• Mục đích của phép chèn là t h ê m một bộ vào một quan hệ
nhất định
 Kết quả của phép toán này có thể gây ra một số sai sót với
những lý do sau đây:
 Bộ mới cần t h ê m vào không phù hợp với lược đồ quan hệ
đã cho
 Một số giá trị của một số thuộc tính n ằ m ngoài miền giá trị của
thuộc tính đó
 Giá trị khoá của bộ mới có thể là giá trị đã có trong quan hệ
đang lưu trữ
 Do vậy, tuỳ từng hệ thống cụ thể sẽ có những cách khắc
phục riêng
15
5. Các phép toán trên CSDL quan hệ(tiếp)

2. Phép loại bỏ (DEL)


– Phép loại bỏ (DEL) là phép xoá một bộ ra khỏi một quan
hệ cho trước
– Giống như phép chèn, phép loại bỏ có dạng:
r =r \ t
– Ta có thể biểu diễn chi tiết phép loại bỏ như sau:
DEL (r; A1 = d1, A2 = d2, ..., A n = dn)
– Hoặc nếu x e m th ứ tự các trường là cố định thì:
DEL (r; d1, d2, ... dn)
– Ví dụ:
⚫ Cần loại bỏ bộ tương ứng với P2, S3 trong quan hệ SP
trên hình 1.2 ta làm như sau:
DEL (SP; S# = S3, P# = P2, QTY = 200)

16
5. Các phép toán trên CSDL quan hệ(tiếp)

– Tuy nhiên, không phải lúc nào phép loại bỏ cũng


cần đầy đủ tất cả các loại thông tin của bộ cần loại
bỏ
– N ế u có giá trị về bộ đó tại các thuộc tính khoá K
=
{B1, B2,..., Bj} thì phép loại bỏ chỉ cần viết:
DEL (r; B1 = f1, B2 = f2, ..., Bi = fj)
– Ví dụ, trong phép loại bỏ nêu trên, vì (S#, P#) là
khoá của quan hệ SP nên ta chỉ cần viết:
DEL (SP; S# = S3, P# = P2)

17
5. Các phép toán trên CSDL quan hệ(tiếp)

3. Phép thay đổi (CHANGE hoặc UPDATE)


– Trong thực tế không phải lúc nào cũng chỉ dùng phép chèn
hoặc loại bỏ đi một bộ m à nhiều k h i chỉ cần sửa đổi một số
giá trị nào đó tại một số thuộc tính, lúc đó cần thiết phải
sử dụng phép thay đổi ("Change" hay viết tắt là CH)
– Gọi tập {C1, ..., Cp}  {A1, ..., An} là tập các thuộc tính m à
tại đó các giá trị của bộ cần thay đổi, k h i đó phép thay
đổi có dạng:
r = r \ t  t'
– Hay ta có thể biểu diễn chi tiết phép loại bỏ như sau:
CH (r; A1 = d1, A2 = d2, ..., A n = dn; C1 = e1, C2 = e2, ..., Cp = ep)

18
5. Các phép toán trên CSDL quan hệ(tiếp)

– N ế u K = {B1, ..., Bm} là khoá của quan hệ, k h i đó chỉ


cần viết:
CH (r; B1 = f1, B2 = f2, ..., B m = fm; C1 = e1, C2 = e2, ..., Cp = ep)
– Ví dụ: Cần thay đổi địa chỉ hãng cung cấp S1 từ London
t hà n h Amsterdam trong quan hệ S. Khi đó phép thay đổi có
dạng như sau:
CH (S; S# = S1; CITY = Amsterdam)
– Cũng có thể không dùng phép thay đổi m à dùng tổ hợp
của
phép loại bỏ và phép chèn một bộ mới
⚫ Do vậy, sai sót đối với phép thay đổi cũng sẽ xảy ra
tương t ự như với phép chèn và phép loại bỏ

19
6. Các bước đưa vềdạng chuẩn 3NF.

 Buớc 1: Chuyển quan hệ chưa chuẩn hóa t h à n h 1 tập quan


hệ tương đương ở dạng 1NF.
– 2 phương pháp:
 Cách 1: Loại bỏ các nhóm lặp bằng cách đưa dữ liệu thích
hợp vào
các cột trống của các hàng chứa dữ liệu lặp
– Cách này thường được gọi là “làm phẳng” (flattening)
– Bằng cách này sữ dư thừa đã được đưa vào quan hệ kết quả, tuy nhiên
sự dư thừa này sẽ được loại bỏ trong quá trình chuẩn hóa
 Cách 2:
– Chỉ định một hoặc một nhóm các thuộc tính làm khóa chính cho bảng
chưa chuẩn hóa
– Loại bỏ các nhóm lặp bằng cách mang nhóm các thuộc tính lặp lại
cùng bản copy của khóa chính sang một quan hệ tách biệt
– N hận diện các khóa chính của các quan hệ mới
– N ếu bảng chưa chuẩn hóa có chưa hơn một nhóm lặp lại hay các nhóm
lặp lại lồng nhau thì cách này được lặp đi lặp lại cho đến k hi không
còn nhóm lặp nữa.

20
6. Các bước đưa vềdạng chuẩn 3NF.

 Ví dụ: Xét hoạt động của một công ty cho thuê văn phòng.
 Với giả thiết:
– Mỗi khách hàng chỉ được thuê một văn phòng 1 lần
– Và mỗi khách hàng chỉ được thuê tối đa 1 văn phòng tại 1 thời điểm

21
6. Các bước đưa vềdạng chuẩn 3NF.

 Giả sử có 2 khách hàng, thông tin về 2 khách hàng thuê


được biểu diễn dưới dạng bảng Customer_Rental:

22
6. Các bước đưa vềdạng chuẩn 3NF.

 Thuộc tính khóa chính được n hận diện cho bảng chưa
chuẩn hóa C u s t o m e r _ R e n t a l là C u s t o m e r _ N o .
 N h ó m lặp lại: (P ro p e r t y _ N o , PA d d r e s s , R e n t S t a r t , R e nt F i ni s h,
Rent,
O w n e r _ No, OName).
 Để chuyển thành 1NF, phải đảm bảo chỉ có một giá trị tại mỗi ô của bảng.
 2 Cách chuyển thà nh 1NF:
– Cách 1: Loại bỏ nhóm lặp bằng cách đưa dữ liệu tương ứng của khách hàng vào
từng hàng của bảng.

23
6. Các bước đưa vềdạng chuẩn 3NF

 Cách 2: Loại bỏ nhóm lặp lại bằng cách mang


dữ liệu lặp lại cùng bản copy của thuộc tính
khoá gốc (Customer_No) sang một quan hệ
tách biệt được gọi là Customer như trên hình
3.20
 Sau đó nhận diện khoá chính cho mỗi quan hệ

24
6. Các bước đưa vềdạng chuẩn 3NF

25
6. Các bước đưa vềdạng chuẩn 3NF
– Bước 2. Tạo các ánh xạ của quan hệ gốc 1NF để hạn chế
mọi phụ thuộc h à m không đầy đủ vào khoá chính để
tạo ra một tập các quan hệ 2NF theo các bước sau:
– Từ quan hệ ban đầu, đối với mỗi thuộc tính của khoá chính, ta
tạo một quan hệ tách biệt
– Tiếp tục tạo các quan hệ tách biệt mới với tất cả các kết hợp
của các thuộc tính của khoá chính cho đến k hi tạo được
quan hệ với toàn bộ khoá chính gốc
– Chỉ định thuộc tính hoặc kết hợp các thuộc tính này làm
khoá
chính cho các quan hệ mới
– Trong quan hệ gốc, t ì m sự phụ thuộc h à m đầy đủ của từng
thuộc tính trong các thuộc tính còn lại vào các khoá chính mới
t ì m ra và đặt nó vào quan hệ tương ứng với khoá chính mới
này
– Khi đã xét hết các thuộc tính còn lại trong quan hệ gốc
thì bỏ đi các quan hệ m à chỉ có các thuộc tính khoá
m à không có các thuộc tính không khoá khác
26
6. Các bước đưa vềdạng chuẩn 3NF

– Ví dụ, xét quan hệ 1NF tên là ORDER như sau:


ORDER(Order_Num,Order_Date,Product_Num,Product_Desc,Num_Ordered)

 Khoá chính của quan hệ này là kết hợp của hai thuộc tính
(Order_Num, Product_Num)
 Thuộc tính Num_Ordered p hụ thuộc vào toàn bộ khoá
chính
 Thuộc tính Order_Date chỉ p hụ thuộc vào Order_Num
 Thuộc tính Product_Desc chỉ phụ thuộc vào Product_Num

 N h ư vậy, quan hệ ORDER không phải ở dạng


2NF

27
6. Các bước đưa vềdạng chuẩn 3NF

 Theo t h ủ tục chuyển th à n h 2NF, tiến hàn h như sau:


– Từ quan hệ ban đầu, với mỗi thuộc tính thuộc khoá
chính tạo được các quan hệ tách biệt:
 (Order_Num,
 (Product_Num,
– Kết hợp tiếp theo của các thuộc tính trong khoá chính là hai
thuộc tính Order_Num và Product_Num, vì vậy, có t h ê m
quan hệ:
 (Order_Num, Product_Num,
– Đặt các thuộc tính còn lại trong quan hệ ban đầu ORDER
vào các quan hệ mới tương ứng:
 ORDER(Order_Num, Order_Date)
 PRODUCT(Product_Num, Product_Desc)
 ORDER_LINE(Order_Num, Product_Num, Num_Ordered)
– N h ư vậy, thay vì một quan hệ ORD ER ban đầu, đã nhậ n
được ba quan hệ ở dạng 2NF
28
6. Các bước đưa vềdạng chuẩn 3NF

 Bước 3: Tạo các ánh xạ của các quan hệ 2NF này


để hạn chế mọi phụ thuộc h à m bắc cầu của các
thuộc tính không khoá vào khoá chính. Kết quả sẽ
tạo nên một tập các quan hệ 3NF.
– Từ quan hệ 2NF ban đầu, mang bản copy của thuộc tính
quyết định cùng tất cả các thuộc tính không khoá m à
p hụ thuộc h à m vào thuộc tính quyết định này sang
một quan hệ mới với thuộc tính quyết định sẽ được chỉ
định làm khoá chính của quan hệ mới

29
6. Các bước đưa vềdạng chuẩn 3NF
– Ví dụ, xét quan hệ C U S TO M E R như sau:
 CUSTOME R (Customer_Num, Customer_Name, Address,
Sales_Rep_Num, Sales_Rep_Name)

– Quan hệ này chưa ở dạng 3NF vì thuộc tính


Sales_Rep_Name phụ thuộc h à m vào một thuộc tính là
Sales_Rep_Num
– Theo t h ủ tục trên sẽ nh ận được 2 quan hệ ở dạng 3NF:
 CUSTOMER(Customer_Num, Customer_Name, Address,
Sales_Rep_Num)
 SALE S_RE P (Sales_Rep_Num, Sales_Rep_Name)

30
6. Các bước đưa vềdạng chuẩn 3NF
 Lưu ý:
– Trường hợp quan hệ đã ở dạng 3NF nhưng có các khoá ứng cử phủ
nhau thì chưa thể khẳng định là đã ở dạng chuẩn BCNF
– N ế u tồn tại thuộc tính quyết định m à không phải là khoá ứng cử
thì phải mang bản copy của thuộc tính quyết định cùng các thuộc
tính phụ thuộc h à m đầy đủ vào nó sang một quan hệ mới

 Mục đích chính của quá trình này là giảm được sự dư thừa
thông tin, và do đó tránh được các vấn đề dị thường với
các phép toán lưu trữ như đã bàn đến ở trên

31
7. Các quy tắc toàn vẹn dữ iệlu

C.J. Date:
– Qui tắc Toàn vẹn thực thể (Entity Integrity Rule - EI):
 Không một t hành phần nào của các thuộc tính dùng làm khoá
chính trên một bảng dữ liệu được là null
– Qui tắc Toàn vẹn quy chiếu (Referential Integrity
Rule - RI):
 N ế u một bảng dữ liệu bao gồm một khoá ngoại lai (FK) khớp
với một khoá chính (PK) trên một bảng dữ liệu T nào đó, thì
mỗi trị của FK phải hoặc:
– bằng trị của khoá chính trên một hàng nào đó của bảng dữ liệu
T,
hoặc
– hoàn toàn null (Điều này không nên có vì không kết nối vào
đâu)
Cần tuâ n t h ủ các quy tắc toàn vẹn dữ liệu này trong 3 phép toán
thao tác CSDL

32
7. Các quy tắc toàn vẹn dữ liệu(tiếp)
Phép toán Chèn (Insert):
– N ế u người sử dụng cố thử đưa vào một bộ với khoá ngoại
lai không khớp với trị của khoá chính của bảng dữ liệu
tương ứng thì để đ ả m bảo các quy tắc toàn vẹn dữ liệu,
ta có thể cho áp dụng một trong 3 nguyên tắc sau đây:
 Gạt bỏ việc t h ê m hàng này và yêu cầu người sử dụng đưa
vào thông tin của khoá chính trên bảng dữ liệu tương
ứng
– Nguyên tắc này được gọi là nguyên tắc phụ thuộc
(DEPENDENT)
 Tự động chuyển người sử dụng qua một chương trình khác
để cho phép người sử dụng t h ê m vào quan hệ tương ứng
một hàng mới với khoá chính cần thiết
– Nguyên tắc này được gọi là nguyên tắc tự động
(AUTOMATIC)
 Chấp nhận bộ mới với khoá ngoại lai là null, nếu
đồng ý chấp nhận null đối với khoá ngoại
lai
– Nguyên tắc này được gọi là nguyên tắc làm rỗng 33
(NULLIFY)
7. Các quy tắc toàn vẹn dữ liệu(tiếp)
Phép toán Thay đổi (Update):
– Để xác định sẽ xử lý như thế nào k h i người sử
dụng cố tình thay đổi khoá chính có liên hệ với một khoá
ngoại lai,
có thể chọn một trong 3 hướng giải quyết sau đây:
 Tự động thay đổi giá trị của khoá ngoại lai cho khớp với giá trị
mới của khoá chính
– Nguyên tắc này được gọi là nguyên tắc thác
đổ hay dây chuyền (CASCADE)
 Chỉ cho phép thay đổi giá trị khoá chính ở hàng hiện không có
giá trị của khoá chính khớp với giá trị hiện có của khoá ngoại
lai tương ứng
– Nguyên tắc này được gọi là nguyên tắc hạn chế (RESTRICT)
 Cho khoá ngoại lai về null đối với các hàng có giá trị của khoá
ngoại lai hiện khớp với giá trị của khoá chính cần thay đổi, nếu
đồng ý chấp nhận null đối với khoá ngoại lai
– Đây là nguyên tắc làm rỗng (NULLIFY)

34
7. Các quy tắc toàn vẹn dữ liệu(tiếp)
Phép toán Xoá (Delete):
– N ế u người sử dụng cố tình xoá một hàng chứa giá trị của
khoá chính m à ít nhất có một bảng dữ liệu hiện đang sử
dụng giá trị này cho khoá ngoại lai thì quy tắc toàn vẹn dữ
liệu có thể tăng cường bằng một trong ba nguyên tắc sau
đây (cũng tương tự như với phép thay đổi ở trên):
 Tự động xoá tất cả các hàng trong tất cả các bảng dữ liệu có
giá trị của khoá ngoại lai trùng với giá trị của khoá chính cần
xoá
– Nguyên tắc này được gọi là nguyên tắc thác đổ hay dây chuyền
(CASCADE)
 Chỉ cho phép xoá giá trị khoá chính ở hàng hiện không có giá
trị của khoá chính khớp với giá trị hiện có của khoá ngoại lai
tương ứng
– Nguyên tắc này được gọi là nguyên tắc hạn chế (RESTRICT)
 Cho khoá ngoại lai về null đối với các hàng có giá trị của
khoá ngoại lai hiện khớp với giá trị của khoá chính cần xoá,
nếu đồng ý chấp nhận null đối với khoá ngoại lai
– Đây là nguyên tắc làm rỗng (NULLIFY)

35
Kỹthuâṭphn
ầ mềmứngdụng

Chương 2
CÁC P H A T R O N G P H Á T T R IỂ N P H Ầ N MỀM

P h a 4: Thiế t kế (Thiế t kế cơ sở d ữ liệ u)


C h u y ể n t ừ m ô h ì n h T T L K s a n g m ô h ì n h d ữ l i ệ u q u a n hệ

2/21/2021
Nội dung trình bày

 Chuyển từ thực thể sang quan hệ


 Chuyển từ liên kết sang quan hệ
Chuyển từthực thểsang quan ệh

 Quy tắc:
– Tên thực thể → Tên quan hệ
– Các thuộc tính của thực t h ể → Các thuộc tính của
QH.

name
dob
Student (roll#, name, dob,
roll# addr, school)
Student
school addr
Chuyển từliên kết sang quan ệh
 Chuyển liên kết nhiều ngôi t hành các liên kết hai
ngôi:
– Coi liên kết như tập thực thể

Sinh
Sinhviên
viên Sinh viên
1
N
N 1
Khoa
Khoa Học Học Khoa
N
1
Khóa
Khóa Khóa
Chuyển từliên kết sang quan ệh

 Chuyển liên kết 2 ngôi:


– Liên kết 1:1: nên ghép 2 thực thể này lại để th à n h một thực
thể chung, rồi chuyển thực thể chung này t h à n h QH
– Liên kết M:N:
 Tên liên kết → Tên quan hệ
 Thuộc tính của quan hệ =  các thuộc tính
khóa của các thực thể t hành viên.
– Liên kết 1:N: chỉ cần t h ê m thuộc tính khóa của thực thể ở
đầu 1 vào thực thể ở đầu N, thì liên kết này có thể được
bỏ đi.
Ví dụ

Sinh viên (ID_SV, Tên SV);

ID_SV ID_Khóa Khóa (ID_Khóa, Tên khóa);


M N
Sinh viên Học Khóa
Học (ID_SV, ID_Khóa);

Tên SV Tên khóa

ID_Lớp
ID_SV Sinh viên (ID_SV, Tên SV,
M 1
Sinh viên Học Lớp ID_Lop);

Tên SV Tên lớp Lớp (ID_Lớp, Tên lớp);


Chuyển từ liên kết sang quan hệ

 V ớ i l i ê n k ế t ISA: không cần phải tạo quan hệ mới


cho loại liên kết này, nhưng các thực thể t h a m gia
một cây liên kết này cần được xử lý đặc biệt theo
1 trong 3 cách như sau:
– T h e o g ó c n h ì n T h ự c t h ể / L i ê n k ế t: với mỗi thực thể E
trong cây liên kết, tạo một quan hệ m à chứa các thuộc tính
khóa của gốc và các thuộc tính thuộc về E.
– T h e o c á c h t i ế p c ậ n h ư ớ n g đ ố i tư ợng : Coi các thực thể
như các đối tượng thuộc về một lớp. Với mỗi cây con của
cây liên kết, thì tạo ra một quan hệ m à chứa tất cả các
thuộc tính của cây con đó.
– Sử d ụ n g g i á t r ị r ỗ n g (NU LL values): tạo ra một quan
hệ duy nhất bao gồm tất cả các thuộc tính của các thực thể
trong cây liên kết.
Ví dụ- Theo góc nhìn Thực thể/Liên kết

 Chuyển cây liên kết sau:


address
name dob
Ta sẽ có 3 quan hệ:
ID Person

Person(ID, name,
address, dob)
isa isa
Student(ID, roll#, school)
roll# emp#
Employee(ID, emp#,
Student Employee company)

school
company
Ví dụ- Theo Hướng đối ư
tợng

 Cây liên kết trên có 4 cây con:


– Một m ì n h Person
– Person và Student
– Person và Employee
– Cả 3 tập thực thể
 Từ đó ta sẽ có 4 quan hệ:
– Person(ID, name, address, dob)
– PersonS(ID, name, address, dob, roll#, school)
– PersonE(ID, name, address, dob, emp#, company)
– PersonSE(ID, name, address, dob, roll#, school ,
emp#, company)
Ví dụ- Sửdụnggiá trị NULL

 Từ cây liên kết, ta tạo ra 1 quan hệ duy nhất:

Person(ID, name, address, dob, roll#, school , emp#,


company))
Kỹthuâṭphn
ầ mềmứngdụng

Chương 2
C Á C P H A T R O N G P H Á T T R IỂ N P H Ầ N MỀM

P h a 4: Thiế t kế (Thiế t kế giao d i ệ n )

2/21/2021
Các nội dung chính
 Các loại giao diện
 T ầ m quan trọng của giao diện
 Các quy tắc thiết kế giao diện
 Các bước thiết kế

2
Các loại giao diện
 Giao diện giữa các module chương trình
 Giao diện giữa các modul và các thiết bị/hệ thống bên ngoài
 Giao d i ệ n n g ư ờ i m á y : giao diện giữa người sử dụng và phần m ề m

3
Tầm quan trọng của giao diện
 L à b ộ m ặ t c ủ a p h ầ n m ề m : cần rõ ràng, sáng sủa, thân
thiện.
 L à n ơ i c u n g c ấ p c á c c h ứ c n ă n g ch o n g ư ờ i dù ng : cần đầy
đủ các chức năng, dễ sử dụng và sử dụng an toàn.
 L à n ơ i c u n g c ấ p c á c t r ợ giúp: cần hiểu được các n h u cầu
trợ giúp và giúp đỡ kịp thời và hiệu quả.
 L à c ô n g c ụ sử d ụ n g h à n g n g à y : nên cần k h ả năng tùy
biến và linh hoạt để tránh n h à m chán và sử dụng ngày càng
hiệu quả.

4
Các quy tắc thiết kế
 Cá c q u y t ắ c vàng:
1. Luôn đặt người dùng vào vị trí điều khiển
2. Giảm thiểu gánh nặng ghi nhớ của người dùng
3. Tạo giao diện nhất quán

5
Quy tắc 1: Luôn đặt người dùng vào vị trí điều khiển

 Ý nghĩa:
– Giao diện cần phải giúp người dùng luôn duy trì quyền điều khiển chương trình, chứ
không phải bị điều khiển bởi chương trình
– Việc thiết kế giao diện cần đứng từ góc độ người dùng và vì người dùng, chứ không
chỉ ở góc độ của người phát triển hệ thống dùng chương trình.

6
Quy tắc 1: Luôn đặt người dùng vào vị trí điều khiển

 Các nguyên tắc cho phép cụ thể hóa quy tắc 1:


– Xác định các chế độ tương tác (interaction modes) p hù hợp, sao cho chúng không bắt
người dùng phải thực hiện các h àn h động không mong mu ố n hay không cần thiết
– Cung cấp nhiều loại tương tác linh hoạt: cho phép người dùng có nhiều lựa chọn
loại hình tương tác, như bàn phím, chuột, cảm ứng, giọng nói,v.v.
– Cho phép tương tác có thể bị ngắt và làm lại (undo)
– Cho phép giao diện có thể tùy biến và tiến hóa theo sở thích và k i n h nghiệm của
người dùng
– Che dấu các chi tiết k ỹ thuật bên trong không cần thiết khỏi người dùng thông
thường

7
Quy tắc 2: Giảm thiểu gánh nặng ghi nhớ của người dùng

 Ý nghĩa:
– Quy tắc này giúp người dùng sử dụng hệ thống cảm thấy thoải mái hơn, thao tác
chính xác hơn, giảm thiểu công sức phải nhớ, cũng như các lỗi do việc nhớ
không chính xác

8
Quy tắc 2: Giảm thiểu gánh nặng ghi nhớ của người dùng

 Các nguyên tắc cụ thể:


– Giảm thiểu yêu cầu ghi nhớ ngắn hạn: như các hàn h động đã thực hiện, các dữ liệu
đã nhập, các cửa sổ trước,v.v
– Thiết lập các giá trị mặc định có ý nghĩa
– Xác định các shortcut trực quan và dễ nhớ
– Hé mở thông tin theo một cách dần dần

9
Quy tắc 3:
Tạo giao diện nhất quán

 Ý nghĩa:
– Các giao diện của một hệ thống cần phải theo một phong cách thống nhất nào
đó, n hư các form nhập liệu theo một cách bố trí nhất định, các báo cáo có cùng
định dạng nhất định, các cửa sổ có cùng phong cách nhất định
– Tính nhất quán của giao diện sẽ làm người dùng cảm thấy thân thiện hơn, dễ sử
dụng hơn, thích nghi n h a nh hơn. Đồng thời nó cũng giảm thiểu các sai sót, thời
gian làm quen của người dùng với hệ thống

10
Quy tắc 3:
Tạo giao diện nhất quán

 Các nguyên tắc cụ thể:


– Cho phép người dùng đặt công việc hiện tại trong k h u n g cảnh có ý nghĩa: giao diện
luôn cho phép N S D biết họ đang ở đâu và đang làm gì, cái gì đã làm, cái gì sẽ làm
tiếp theo
– Duy trì sự nhất quán trong một họ các ứng dụng
– Hạn chế thay đổi các phong cách giao diện m à đã tạo được ấn tượng tốt với
người dùng. Chỉ nên thay đổi k h i có lý do chính đáng

11
Các kiểu tương tác của người dùng
 Thao tác trực tiếp (direct manipulation)
 Chọn m e n u (menu selection)
 Điền vào form (form fill-in)
 Ngôn ngữ lệnh (command language)
 Ngôn ngữ tự nhiên (natural language)

12
Các kiểu tương tác của người dùng
Kiểu Ưu đ i ể m Nhược điể m Ví d ụ ứ n g d ụ n g
tương tác
Thao tác Tương tác nhanh Có thể khó cài đặt. Video games
trực tiếp và trực quan Chỉ phù hợp k h i có ẩn dụ hình ảnh cho các Hệ thống CAD
Dễ học tác v ụ và các đối tượng.

Chọn m e n u Tránh lỗi người Thao tác chậm đối với người sử Phần lớn các hệ thống
dùng dụng có k i nh nghiệm. thông dụng
Yê u cầu gõ k ý tự ít Có thể trở nên phức tạp nếu có
nhiều lựa chọn menu.
Điền vào Nhập dữ liệu Tốn nhiều không gian mà n hình Khai thuế, xử lý nợ cá
form đơn giản Rắc rối xảy ra k h i các lựa chọn nhân
Dễ học của người dùng không khớp
Kiểm tra được với các trường của form.
Ngôn ngữ Mạnh và linh động Khó học Hệ điều hành, hệ thống
lệnh Quản lý lỗi kém. điều khiển và lệnh
Ngôn ngữ Người sử dụng Yê u cầu gõ nhiều. Hệ thống truy vấn
tự bình thường có Hệ thống hiểu ngôn ngữ tự thông tin
nhiên thể dùng được. nhiên không tin cậy được
Dễ mở rộng 13
Các bước thiết kế giao diện
 Phân tích môi trường, người dùng, các công việc
 Thiết kế giao diện
 Cài đặt giao diện
 Kiểm tra tính hợp lệ của giao diện

14
Các bước thiết kế giao diện

15
Phân tích người dùng, tác vụ, môi trường
 N ế u không hiểu người dùng mu ốn làm gì với hệ thống, ta khó có thể thiết kế nên một
giao diện hiệu quả.
 Phân tích người dùng phải được mô tả sao cho cả người dùng và người thiết kế có
thể hiểu được.
 S ử dụng kịch bản trong đó mô tả các tình huống sử dụng hệ thống cũng là một
cách để mô tả các phân tích này
 Các k ỹ thuật phân tích:
o Phân tích tác vụ: Mô hình hóa các bước để hoàn th à n h một tác vụ.
o Phỏng vấn: Hỏi người sử dụng về công việc họ làm.
o Quan sát: Quan sát người sử dụng tại nơi làm việc.

16
Phân tích tác vụtheo cây phân cp

17
Phỏng vn

 Thiết kế phỏng vấn dưới dạng cấu trúc linh động, dựa vào các câu hỏi mở.
 Người dùng có thể cung cấp thông tin m à họ nghĩ là cần thiết, không chỉ là
những thông tin m à bạn nghĩ cần phải t h u thập.
 Phỏng vấn theo nhóm cho phép người dùng thảo luận với nhau về những
gì họ làm.

18
Quan sát
 Quan sát người dùng tại nơi làm việc và đặt câu hỏi về công việc của họ
(không có kịch bản sẵn ).
 Có giá trị vì nhiều tác v ụ người dùng trực quan và họ thấy khó k h ă n k h i
diễn đạt và giải thích.
 Hỗ trợ cho việc hiểu vai trò xã hội và ảnh hưởng về mặt tổ chức lên công
việc.

19
Tạo protype cho giao diện người dùng
 Mục tiêu là cho phép người dùng có những trải nghiệm trực tiếp với giao
diện.
 Không có những k i nh nghiệm này, không thể đánh giá được tính sử dụng
của một giao diện.
 Xây dựng prototype có thể có hai giai đoạn:
– Giai đoạn đầu, xây dựng prototype trên giấy
– Sa u đó, thiết kế được tinh chỉnh, phát triển các bản m ẫ u tự động hóa với độ phức
tạp ngày càng tăng.

20
Xây dựng prototype trên giấy
 Đi một lượt qua các kịch bản và phác thảo các giao diện.
 Sử dụng k ỹ thuật storyboard để biểu diễn một chuỗi các tương tác với hệ
thống.
 Xây dựng prototype trên giấy là cách hiệu quả để lấy phản hồi từ khách
hàng.

21
Các kỹthuậtxây dựng prototype
 Xây dựng dựa vào kịch bản:
– Phát triển một tập các kịch bản và m à n hình bằng công cụ như Macromedia Director
– Khi người dùng tương tác với prototype này,màn hình sẽ chuyển qua một m à n hình
khác.
 Lập trình trực quan:
– Sử dụng một ngôn ngữ chuyên dụng để phát triển giao diện n h a n h như Visual
Basic.
 Xây dựng dựa vào internet:
– Sử dụng web browser và các script liên quan.

22
Đánh giá giao diện
 N ê n tiến hành đánh giá UI để x e m giao diện đó đã hợp lý hay chưa.
 Đánh giá đầy đủ rất tốn k é m và thường không thực tế đối với đa số hệ
thống.
 Về lý tưởng, một giao diện nên được đánh giá dựa vào đặc tả tính sử dụng.
Tuy nhiên, các đặc tả như vậy hiếm k h i được tạo ra.

23
Các thuộc tính vềtính sử dn
ụg

Thuộc tính Mô t ả
Tính có thể học được Một người dùng mới mấ t bao lâu để sử dụng
được hệ thống có hiệu quả?
Tốc độ thao tác Tốc độ trả lời của hệ thống có đáp ứng tốt được
công việc của người dùng hay không?
Tính chịu lỗi Mức độ chịu lỗi của hệ thống đối với lỗi người
dùng như thế nào?
Kh ả năng khôi phục Hệ thống khôi phục từ lỗi người dùng tốt đến
mức nào?
Tính tương thích Hệ thống gắn bó với một mô hình làm việc đến
đâu?

24
Các kỹthuậtđánh giá đơn gin

 Câu hỏi để lấy phản hồi từ người dùng.


 Quay video về việc sử dụng hệ thống và đánh giá.
 Cài các m ã t h u thập thông tin về các tiện ích sử dụng và lỗi người dùng.
 Cung cấp chức năng trong chương trình để t h u thập phản hồi trực tuyến
từ người dùng.

25
Các bước thiết kế giao diện
 T h a m khảo chi tiết trong sách “Software E n g i n e e r i n g – A
p r a c t i t i o n e r ’s approach”

26
Kỹthuâṭphn
ầ mềmứngdụng

Chương 2
CÁC P H A T R O N G P H Á T T R I Ể N P H Ầ N MỀM

P h a 4: Thiế t kế (Thiế t kế kiế n t r ú c )

2/21/2021
Kiến trúc phần mềm
 Khái niệm:
“Là một cấu trúc bao gồm các t hành phần phần mề m ,
các tính chất có thể thấy được từ bên ngoài của
các thành phần này, và các liên kết giữa chúng” *
 Các t hành phần phần m ề m có thể gồm:
– Các module
– Các cấu trúc dữ liệu, cơ sở dữ liệu

2
Kiến trúc phần mềm
 Mục đích sử dụng:
– Để đánh giá tính hiệu quả của phần m ề m trong
việc đáp ứng các y/c của hệ thống
– Cân nhắc để chọn ra kiến trúc phù hợp nhất giữa
các kiến trúc khác nhau
– Giúp dự trù sớm và tương đối chính xác các tài
nguyên cần chuẩn bị cho giai đoạn cài đặt phần
mềm
– Đóng vai trò như thiết kế tổng thể, làm nền tảng
cho các thiết kế chi tiết sau đó
– Giúp giảm thiểu các rủi ro trong quá trình xây
dựng phần m ề m sau này
3
Kiến trúc phần mềm
Các mô hình kiến trúc
 Mô hình Model-View-Controller (MVC)
 Mô hình kiến trúc phân tầng
 Mô hình Repository
 Mô hình client–server
 Mô hình pipe and filter

4
Mô hình Model-View-Controller (MVC)
Tên Mô h ì n h MVC (Mo de l -Vi e w - C o nt ro l l e r)
Mô tả Tách riêng phần biểu diễn và phần tương tác ra khỏi dữ liệu hệ thống. Hệ
thống được cấu trúc hóa t hành ba component logic tương tác với nhau.
• Model component: quản lý dữ liệu hệ thống và các thao tác trên dữ trên
dữ liệu đó.
• View component: định nghĩa và quản lý cách dữ liệu được biểu diễn tới
người dùng như thế nào.
• Controller component: Quản lý tương tác người dùng ( ví dụ như ấn
phím, nhấp chuột, ...) và chuyển các tương tác này tới View và Model.

Sử Được sử dụng k hi có nhiều cách biểu diễn và tương tác với dữ liệu. Cũng
dụng được sử dụng k h i chưa biết được các yêu cầu tương lai cho tương tác
k hi và biểu diễn dữ liệu.
nào
Ưu Cho phép dữ liệu thay đổi độc lập với việc biểu diễn của nó và ngược lại.
điểm Hỗ trợ biểu diễn theo nhiều cách khác nhau trên cùng một dữ liệu.
Nhược Có thể chứa code bổ sung và code sẽ phức tạp hơn k hi
điểm mô hình dữ liệu và mô hình tương tác đơn giản.

5
Mô hình Model-View-Controller (MVC)

6
Ví d:ụKiến trúc ứngdụngWeb sử dụngmô hình MVC

7
Mô hình kiến trúc phân tầng
 Được sử dụng để mô hình hóa giao diện của các hệ
thống con.
 Tổ chức hệ thống t hành một tập các tầng, mỗi tầng
cung cấp một tập các dịch vụ.
 Hỗ trợ việc phát triển dần dần các hệ thống con trên
các tầng khác nhau. Khi giao diện của tầng thay
đổi, chỉ các tầng lân cận mới bị ảnh hưởng.

8
Mô hình kiến trúc phân tn
ầ g
Tên Kiến trúc phân tầng
Mô tả Tổ chức hệ thống t hành các tầng, mỗi tầng chứa các chức năng liên quan
đến nhau. Một tầng cung cấp các dịch v ụ cho tầng trên của nó vì vậy
các tầng thấp nhất biểu diễn các dịch v ụ lõi được sử dụng trong toàn bộ
hệ thống.

Sử Được sử dụng k h i xây dựng các tính năng mới dựa trên những hệ thống
dụng có sẵn; k hi việc phát triển được dàn trải trên nhiều nhóm khác nhau
k hi và mỗi nhóm chịu trách nhi ệm về chức năng của một tầng; k hi có một
nào yêu cầu về bảo mật ở nhiều mức độ.
Ưu Cho phép thay thế các phần miễn là interface được duy trì. Các chức
điểm năng dư thừa (ví dụ như phân quyền) có thể được cung cấp ở mỗi tầng để
tăng độ tin cậy của hệ thống.

Nhược Thực tế, cung cấp một sự phân chia rõ rệt giữa các tầng thường rất khó
điểm k hă n và tầng cao hơn có thể tương tác trực tiếp với tầng thấp hơn hơn
là thông qua một tầng bên dưới nó. Hiệu năng cũng có thể là một vấn
đề vì nhiều mức diễn giải của một yêu cầu dịch v ụ k hi nó được thực
hiện tại mỗi tầng.
9
Mô hình phân tng
ầ tổng quát

10
Mô hình Repository
 Các hệ thống con phải trao đổi dữ liệu với nhau. Có hai
k h ả năng:
– Việc chia sẻ dữ liệu được thực hiện ở cơ sở dữ liệu trung t â m
hay còn gọi là kho dữ liệu, kho này được truy cập bởi tất cả các
hệ thống con.
– Mỗi hệ thống con duy trì một cơ sở dữ liệu riêng và chuyển dữ
liệu trực tiếp tới các hệ thống con khác.
 Khi có một lượng lớn dữ liệu cần chia sẻ, mô hình về
chia sẻ là mô hình phổ biến nhất và là cơ chế chia
sẻ dữ liệu hiệu quả nhất.

11
Mô hình Repository
Tên Kiến trúc phân tầng
Mô tả Tất cả các dữ liệu trong hệ thống được quản lý ở một kho trung tâm, kho
này được truy cập bởi tất cả các component của hệ thống. Các
component không tương tác trực tiếp với nhau, chỉ thông qua kho chung
thôi.
Sử Sử dụng mô hình này k hi ta có một hệ thống trong đó một lượng lớn
dụng thông tin được sinh ra phải được lưu trữ trong một thời gian dài. Ta cũng
k hi có thể sử dụng nó trong các hệ thống hướng dữ liệu trong đó dữ liệu trong
nào kho kích hoạt hành động hay công cụ.
Ưu Các component có thể độc lập với nhau – chúng không cần biết sự tồn tại
điểm của các component khác. Các thay đổi xảy ra ở một component không
ảnh hưởng tới các component khác. Tất cả các dữ liệu có thể được quản
lý một cách nhất quán (ví dụ như backup dữ liệu được thực hiện đồng
thời) vì tất cả dữ liệu được lưu trữ ở cùng một nơi.
Nhược Các vấn đề xảy ra trên kho chung ảnh hưởng đến toàn hệ thống. Có thể
điểm không hiệu quả trong việc tổ chức các giao tiếp thông qua kho. Phân
tán kho trên nhiều máy tính có thể khó khăn.

12
Một kiến trúc repository cho một IDE

13
Mô hình client - server
 Các mô hình hệ thống phân tán chỉ ra cách dữ liệu và
các xử lý được phân tán trên nhiều component như thế
nào.
 Tập hợp các server độc lập cung cấp các dịch vụ cụ thể
ví dụ như in ấn, quản trị dữ liệu, ...
 Tập hợp các khách hàng triệu gọi các dịch v ụ này.
 Hệ thống mạng cho phép người dùng truy cập vào các
server.

14
Mô hình client - server
Tên Mô h ì n h c l i e n t - s e r v e r
Mô tả Trong một kiến trúc client–server, chức năng của hệ thống được tổ chức
thành các dịch vụ, mỗi dịch v ụ được đặt trên một server riêng lẻ.
Khách hàng là người sử dụng các dịch v ụ này và truy cập vào các
server để sử dụng dịch vụ.

Sử Được sử dụng k hi dữ liệu trong một cơ sở dữ liệu chia sẻ phải truy cập từ
dụng nhiều nơi. Vì các server được truy cập từ nhiều nơi khác nhau, có thể
k hi được sử dụng k hi tải trên hệ thống thay đổi.
nào
Ưu Ưu điểm chính là server được phân tán trên mạng. Chức năng chung
điểm (dịch v ụ in ấn chẳng hạn) có thể có sẵn cho tất cả các khách hàng
và không cần thiết phải cài đặt toàn bộ các dịch vụ.

Nhược Mỗi dịch v ụ là một điểm đơn gây lỗi vì vậy dễ bị tấn công từ chối dịch v ụ
điểm hoặc lỗi server. Hiệu năng có thể không dự đoán trước được do nó phụ
thuộc vào mạng cũng như hệ thống. Có thể có các vấn đề về quản lý nếu
server được sở hữu bởi các tổ chức khác nhau.

15
Ví dụvềmô hình client - server cho một thưviện phim ảnh

16
Mô hình pipe filter
 Các chuyển đổi chức năng xử lý các đầu vào và tạo ra các đầu ra.
 Các biến thể của phương pháp này rất phổ biến. Khi các chuyển
đổi là tuần tự, đây là mô hình xử lý khối tu ần tự m à các hệ
thống xử lý dữ liệu sử dụng.
 Không thật sự ph ù hợp với các hệ thống tương tác.

17
Mô hình pipe filter
Tên Mô h ì n h p i p e f i l t e r
Mô tả Việc xử lý dữ liệu trong một hệ thống được tổ chức sao cho mỗi
component xử lý (filter) là rời rạc và tiến hành một loại xử lý dữ
liệu. Dòng dữ liệu (pipe) đi từ một component đến một
component
khác để xử lý.
Sử Thường sử dụng trong các ứng dụng xử lý dữ liệu ( cả ứng dụng
dụng xử lý khối và xử lý giao tác) trong đó các đầu vào được xử lý ở
k hi các giai đoạn rời rạc để tạo ra các đầu ra tương ứng.
nào
Ưu Dễ hiểu và hỗ trợ việc tái sử dụng chuyển đổi. Kiểu dòng dữ liệu
điểm phù hợp với cấu trúc của của nhiều quy trình công việc. Tiến hóa
bằng cách t h ê m vào các chuyển đổi là dễ dàng. Có thể cài đặt
theo kiểu hệ thống tuần tự hoặc song song.
Nhược Format của dữ liệu truyền đi phải được chấp t huận trong việc giao
điểm tiếp giữa các chuyển đổi. Mỗi chuyển đổi phải phân tích cú pháp
đầu vào của nó và chuyển nó t hành đầu ra ở dạng được chấp
nhận. Điều này gây khó k h ăn trong việc tái sử dụng các chuyển
đổi h à m m à cấu trúc dữ liệu không tương thích.
18
Ví dụvềmô hình pipe filter

19
Kỹthuâṭphn
ầ mềmứngdụng

Chương 3

SQL

2/21/2021
Nội dung
 5.1. Giới thiệu SQL
 5.2. Phân loại SQL
 5.3. Các lệnh SQL

2
5.1 Giới thiệu SQL

 Ngôn ngữ truy xuất CSDL quan hệ


 Là một ngôn ngữ phi t h ủ tục
 Là phương tiện được sử dụng để trao đổi với D B M S
 Câu lệnh giống ngôn ngữ tiếng A n h (dễ đọc, dễ hiểu hơn tiếng Anh).
 Những câu lệnh của SQL được sử dụng để trích rút và cập nhật dữ liệu
trong một hoặc nhiều bảng của cơ sở dữ liệu.
 SQL làm việc với hầu hết các hệ quản trị cơ sở dữ liệu như M S Access, DB2,
Informix, M S SQL Server, Oracle, Sybase ..

3
5.2. Phân loại SQL

 DDL – Data Definition Language


– L à m việc với cấu trúc CSDL
 DML – Data Manipulation Language
– L à m việc với dữ liệu thực sự được lưu trữ
 DCL – Data Control Language

4
5.3 Các lệnh SQL

 Tạo và hủy cơ sở dữ liệu

 Tạo, hủy và sửa bảng dữ liệu

 Thêm, xóa, truy xuất dữ liệu từ bảng

5
Tạo và hủy CSDL

1. Tạo CSDL: Cú pháp C R E AT E D ATA BAS E < Tê n


CSDL>.
Ví dụ: create database QLSV

2. Hủy CSDL: Cú pháp D R O P D ATA BAS E < Tê n CSDL>.


Ví dụ: drop database QLSV.

6
Tạo bảng dữ liệu(Table)

Cú pháp C RE AT E TA BLE < T ê n b ả n g > ( < C o lu m n 1><Kiểu d ữ liệu>[<RBTV>],


< C o l u m n 2><Kiểu d ữ liệu>[<RBTV>],……<Column n> < Kiể u d ữ liệu>[<RBTV>]).
Ràng buộc toàn vẹn – RBTV: N O T N ULL, NULL, UNIQUE, DEFAULT, PRIMARY KEY,
FOREIGN K E Y / R E F E R E N C E S , CHECK

Ví dụ:

CREATE TA B L E DM_KHOA (MA_KHOA I N T P R IMARY KEY,TEN_KHOA NVARCHAR(50)


NULL,GHI_CHU NVARCHAR(255) NULL)

7
Hủy và sửa bảng dữ liệu(Table)
– Hủy Table: Cú pháp D R O P TABL E < T ên bảng>.
Ví dụ: D R O P TABLE DM_KHOA

– Sửa Table:

Sửa cột của bảng

A LT E R TA BLE < T ên b ả n g > A LT E R C O L U M N < N e w _ D a t a _ Ty p e >


[ RBTV] .
Ví dụ:

A LT E R TA B LE DM_KHOA A LT E R COLUMN TEN_KHOA NVARCHAR(100) N O T N U L L

T h ê m cột của bảng

A LT E R TA BLE < T ên b ả n g > A D D < Co l u m n _ N a m e > < Ki ể u d ữ liệu>


[ RBTV] .

Ví dụ: 8
Thêm, xóa dữ liệu khỏi bảng
 T h ê m dữ liệu vào bảng:
Cú pháp: INSE R T INTO < T ê n b ảng >(C ol um n1, C o l um n 2 , .., C o l u m n n) VA L UES ( G i á t r ị 1,
G i á t r ị 2, …., G i á t r ị n)

Ví dụ: Cho các lược đồ QH sau


- DM_KHOA (MA_KHOA,TEN_KHOA,GHI_CHU)

- DM_SINHVIEN (MSSV, HO_TEN, NGAY_SINH, DIEN_THOAI)

T h ê m một khóa mới vào bảng DM_KHOA:


INSE RT INTO DM_KHOA (MA_KHOA,TEN_KHOA,GHI_CHU) VA LU ES (1,'Khóa 30','Dài hạn')

 X ó a d ữ l i ệ u k h ỏ i bảng:

Cú pháp: DELET E FROM <T ê n b ả n g > [WHERE < Đi ều ki ệ n>]

Ví dụ: DE LE TE FROM DM_KHOA W H E R E MA_KHOA=1

9
Truy xuất dữ liệu

SELECT [DISTINCT] <Column1,.., ColumnN>


FROM <Tên bảng 1>,[<Tên bảng 2>],…
[WHERE <Expression>]
[GROUP BY gColumn1, gColumn2,..
[HAVING <gExpression>] ]
[ORDER BY oColumn1, oColumn2
[DESC/ASC], …]

10
Truy xuất dữ liệu
– Truy xuất một cột trong bảng:

Cú pháp SE L E C T <C o l um n_Na m e > FROM <T ên bảng>.


Ví dụ: S E L E C T TEN_KHOA FROM DM_KHOA

– Truy xuất nhiều cột trong bảng:

Cú pháp: SE L E C T <Column_Name1,.., C o l u m n i> FROM <Tê n bảng>.


Ví dụ: S E L E C T TEN_KHOA,GHI_CHU FROM DM_KHOA

– Truy xuất tất cả các cột trong bảng:

Cú pháp SE L E C T * FROM < T ê n bảng>.


Ví dụ: SE LE CT * FROM DM_KHOA

C h ú ý: Mệ nh đề điều kiện W H E R E <Điều kiện> thường được sử dụng trong câu lệnh truy xuất để t ìm
được một kết quả thỏa mã n điều kiện nào đó, ví dụ :

SE LE C T * FROM DM_KHOA W H E R E TEN_KHÓA=‘Dài hạn’ 11


Mệnh đề Order By
 Mục đích: sắp xếp lại dữ liệu theo một trật tự nhất định.
 Phải được đặt ở cuối của dòng lệnh.
 Có thể phát triển rộng ra k h i thực hiện sắp xếp theo nhiều cột,
– Ví dụ :

SELECT * FROM D M_S I NH VI EN ORDER B Y HO_TEN,NGAY_SINH


 Ta có thể dùng chỉ số thứ tự của cột trong bảng để thay cho tên cột,
– Ví dụ :t hay cho câu lên h t rên ta có t h ể sử dụng câu lện h sau : FROM
S ELEC T * D M_SINH VIEN ORDER B Y 2,3
 Chú ý: M ệnh đề ORDER B Y sẽ mặc định sắp xếp theo chiều tăng dần, k h i đó nếu mu ốn sắp
xếp theo chiều giảm dần phải t h ê m cú pháp DESC sau m ệ n h đề O RDER BY,
– Ví dụ:
SELECT * FROM DM _SI NH VIEN ORDER B Y HO_TEN DESC

12
Mệnh đề WHERE
 Mục đích: lọc dữ liệu theo một điều kiện nào đó. Khi đó SQL cung cấp cho người sử dụng một tập các
toán tử để lọc dữ liệu theo miền mong muốn,

C h ú ý: Nế u trong câu lệnh SE L E C T cùng sử dụng m ệ n h đề WHERE và m ệ n h đề O R D E R BY thì m ệ n đề


WHERE phải n ằ m trước m ệ n h đề O R D E R B Y
Toán tử LIKE

Đây là toán tử được sử dụng trong trình lọc thông m i n h của SQL, với việc sử dụng kết hợp
với các k ý tự đại diện toán tử L I L E cung cấp rất nhiều các k h ả năng lọc giữ liệu một cách
th u ậ n tiện và phong phú.
 K ý t ự đ ạ i d i ệ n % (SQL S e r v e r ) :
- T ì m các cụm từ có k ý tự đầu là một k ý tự nào đó
cú pháp LIKE ‘<Ký t ự c ầ n tim>%’.
Ví dụ:
Giả sử ta m uốn t ì m tất cả các sinh viên có họ bắt
đầu bằng k ý tự ‘n’, Khi đó ta se có cú pháp
như sau:
S E L E C T * FROM DM_SINHVIEN WH ERE
HO_TEN LIKE 'n%‘
- T ì m các cụm từ có k ý tự cuối là một k ý tự nào
đó
cú pháp LIKE ‘%<Ký t ự c ầ n tim>’
14
Ví dụ, ta mu ốn t ì m tất cả các sinh viên có tên kết
Toán tử LIKE
- Còn nếu k h i ta không biết rõ cụm k ý tự cần t ì m ở n ằ m ở đâu trong các cụm k ý tự thì ta
dùng cú pháp như sau: LIKE ‘%<Cụm k ý t ự c ầ n tim>%’.
Ví dụ, ta mu ốn t ì m tất cả các sinh viên m à họ tên có cụm từ ‘nam’, k h i đó ta có cú
pháp như sau:
S E L E C T * FROM DM_SINHVIEN W HERE HO_TEN LI KE '%nam%‘
C h ú ý: Ký tự đại diện % được sử dụng rất đa dạng và hiệu quả, tùy thuộc vào cách đặt vị
trí của nó.
 Ký tự đại diện (_) – C h ỉ d ù n g c h o S Q L S e r v e r : Ký tự đại diện _ trên nguyên tắc được
sử dụng giống như k ý tự đại diện %, song có một điều khác biệt là k ý tự đại diện _ chỉ
đại diện cho một một k ý tự duy nhất
Ví dụ: S E L E C T * FROM DM_KHOA WH ERE TEN_KHOA LIKE 'a_a‘

15
 K ý t ự đ ạ i d i ệ n k h o ả n h t r ố n g ([ ])- SQ L S e r v e r : Ký tự đại diện khoảng trống [ ]
được sử dụng kết hợp với toán tử LIKE để t ì m ra các đối tượng với một đặc điểm nào đó
m à đối tượng đó thỏa mãn.
Ví dụ: Ta có bảng danh mục khóa như sau:

Khi đó nếu ta muốn t ì m tất cả các bản ghi m à phần ghi chú của nó bắt đầu bằng chữ D
hoặc H, thì ta sử dụng cú pháp lọc như sau: SE L E C T * FROM DM_KHOA
WHERE GHI_CHU LIKE '[DH]%‘, kết quả nhận được như sau:

16
Còn nếu ta sử dụng cú pháp SE L E C T * FROM DM_KHOA WHERE GHI_CHU LIKE '[^DH]%‘, ta
sẽ nhận được kết quả như sau:

C h ú ý: Không nên quá lạm dụng vào các k ý tự đại diện, chỉ sử dụng chúng k hi thật sự cần thiết.

17
Một sốhàm tính toán
 H à m t r u n g b ì n h – AVG(): Dùng để tính giá trị trung bình cho một cột nào đó
 H à m đ ếm số bản ghi – Count():
Đếm số lần xuất hiện của giá trị hoặc số dòng dữ liệu của bảng.
Count(*) sẽ cho ra tất cả các các bản ghi kể cả các bản ghi có chứa giá trị Null,
Count(Column_name) sẽ đưa chỉ đưa ra các cột có giá trị
 H à m lấy giá trị lớn nhất – MAX(): Dùng để lấy giá trị lớn nhất trong một cột
nào đó.
 H à m lấy giá trị nỏ nhất – MIN(): Dùng để lấy giá trị nhỏ nhất trong một cột nào đó. Cách
sử dụng tương tự như đối với h à m MAX().
 H à m lấy giá trị tổng – SUM(): Dùng để lấy giá trị tổng của một cột nào đó.
 Chú ý: Thường các h à m lấy giá trị tổng được sử dụng k è m với các m ệ n h đề GROUP B Y và
HAVING.

18
Mệnh đềGROUP BY và HAVING
 Mệnh đề G R O U P B Y dùng để nhóm các bản ghi có một số tính chất giống nhau, k hi đó các tính chất đó
sẽ có mặt trong m ệ n h đề SE L E C T và m ệ n h đề G R O U P BY.
 Cho lược đồ quan hệ DM_VT(Ma_VT,TEN_VT,CHUNG_LOAI,DVT,SO_LUONG )
Ví dụ: h à m SUM() để tình tổng các giá trị trong cột SO_LUONG, muốn tính tổng số lượng cho từng loại
vật tư, k h i đó ta sẽ có cú pháp như sau:
SEL E CT TEN_VT,CHUNG_LOAI,DVT,SUM(SO_LUONG) A S SO_LUONG FROM DM_VT
G R O U P B Y TEN_VT,CHUNG_LOAI,DVT
Mệnh đề HAVING dùng để lọc các bản ghi vừa được nhóm bằng m ệ n h đề G R O U P BY.
Ví du: Ta cần tính tổng của từng loại vật tư, tuy nhiên chỉ đối với các vật tư m à số lượng tổng của nó lơn
hơn 50, k h i đó ta sẽ sử dụng cú pháp sau:
SEL E CT TEN_VT,CHUNG_LOAI,DVT,SUM(SO_LUONG) A S SO_LUONG FROM DM_VT
G R O U P B Y TEN_VT,CHUNG_LOAI,DVT
HAVING SUM(SO_LUONG)>50

19
Ví dụ MaV T Te n V T Chungloai DV T Soluong
XMHT Xi mang Xi mang kg 150
hoang thach

XMHT Xi mang Xi mang tạ 2


hoang thach
XMHT Xi mang Xi mang tấn 4
hoang thach
ThepHP Thé p hòa Thé p kg 50
phát
ThepHP Thé p hoa sen Thé p tạ 50

ThepHP Thé p hòa Thé p tấn 50


phát
XMBS Xi mang bỉm Xi mang kg 150
sơn
XMBS Xi mang bỉm Xi mang tấn 15
sơn
XMHT Xi mang Xi mang tấn 10
hoang thach
20
Mệnh đềGROUP BY và HAVING
C h ú ý: N ế u k hi trong câu lựa chọn SE L E C T có sử dụng cả m ệ n h đề WHERE và HAVING thì m ệ n h đề
WHERE sẽ được thực hiện trước k hi nhóm, còn m ệ n h đề HAVING sẽ được thực hiện sau k hi nhóm.

V í dụ: Ta có cú pháp sau:

SE L EC T TEN_VT,CHUNG_LOAI,DVT,SUM(SO_LUONG) A S SO_LUONG FROM DM_VT

WHERE CHUNG_LOAI=‘xi m ă n g '

G R O U P B Y TEN_VT,CHUNG_LOAI,DVT

HAVING SUM(SO_LUONG)>50

21
Kếtnối các bảng – SQL JOIN
 Mục đích: kết nối các bảng khác n hau để lựa chọn được nhưng thông tin cần thiết
tùy thuộc vào mục đích sử dụng.

 K ế t h ợ p h a i bảng: Giả sử ta có hai bảng DM_KHOA, và DM_LOP như sau:


DM_KHOA DM_LOP

22
Kếtnối các bảng – SQL JOIN
 Nế u ta muốn đưa ra danh sách lớp cùng với tên khóa của lớp đó:

SE LE CT DM_LOP.TEN_LOP,DM_KHOA.TEN_KHOA FROM DM_LOP,DM_KHOA

WHERE DM_LOP.MA_KHOA=DM_KHOA.MA_KHOA
Và ta nhận được kết quả như sau:

Tuy nhiên thường trong thực tế có rất nhiều các yêu cầu khác nhau cho việc kết nối các bảng, và k hi đó
thay cho việc sử dụng việc so sánh các cột ở các bảng khác nhau người ta thường dùng các m ệ n h đề
kết nối J O I N để thực hiện, sau đây là một số m ệ n h đề kết nối thông dụng nhất.

23
Kếtnối các bảng – SQL JOIN
 INNER JOIN: Mệnh đề kết nối INNER J O I N sẽ trả về tất cả các dòng từ hai bảng thỏa m ã n điều kiện so khớp.
Các dòng m à không thỏa m ã n điều kiện so khớp sẽ không có trong tập kết quả, cú pháp của m ệ n h đề INNE R J O I N
như sau:

SEL EC T Table 1.Te nc ot1 , Table1. Tencot2…,Table2. Te nc ot 1, Table.Tencot2.. FROM Ta b l e 1 INNE R


J O I N Ta b l e 2 O N Ta b le 1. C o ts o s a nh= Ta b l e 2 .C o t s o sa nh

V í dụ: Ta có cú pháp sau:

SEL EC T DM_LOP.TEN_LOP,DM_LOP.LOP_TRUONG,DM_KHOA.TEN_KHOA FROM DM_LOP

INNER J O I N DM_KHOA O N DM_LOP.MA_KHOA=DM_KHOA.MA_KHOA

Và kết quả nhận được là:

24
Kếtnối các bảng – SQL JOIN
 LEFT JOIN: Mệnh đề LEFT J O I N sẽ trả về tất cả các dòng có trong bảng 1 bất kể các dòng đó có so khớp với
một dòng nào đó ở bên bảng 2 hay không. Cú pháp của m ệ n h đề LEFT J O I N như sau:

SE LE CT Tabl e1.Te nc ot1, Table1. Tencot1…,Table2. Te nc o t 1 , Table.Tencot2.. FROM Ta b l e 1 LEFT


J O I N Ta bl e 2 O N Ta bl e 1.C o ts o s a nh= Ta b l e 2 .C o t so s a nh

V í dụ: Ta có cú pháp sau:

SE LE CT DM_LOP.TEN_LOP,DM_LOP.LOP_TRUONG,DM_KHOA.TEN_KHOA FROM DM_LOP

LEFT J O I N DM_KHOA O N DM_LOP.MA_KHOA=DM_KHOA.MA_KHOA

Khi đó ta sẽ nhận được kết quả như sau:

25
Kếtnối các bảng – SQL JOIN
 RIGHT JOIN: Mệnh đề này ngược với m ệ n h đề LEF T JOIN, nó trả về tất cả các hàng có mặt trong bảng thứ 2. Cú
pháp như sau:

 SE LEC T Tabl e1.Te nc ot1, Table1. Tencot2…,Table2. Te nc ot1 , Table.Tencot2.. FROM Ta bl e 1 RIGHT
J O I N Tab l e 2 O N Ta b l e 1 .C o t s o s a nh= Ta bl e 2.C ot s o s a nh

Ví dụ: Ta có cú pháp sau:

SE LE CT DM_LOP.TEN_LOP,DM_LOP.LOP_TRUONG,DM_KHOA.TEN_KHOA FROM DM_LOP

RIGHT J O I N DM_KHOA O N DM_LOP.MA_KHOA=DM_KHOA.MA_KHOA

Và kết quả nhận được sẽ là:

26
Kếtnối các bảng – SQL JOIN
 P h é p h ợ p – UNION: Đây là phép toán dùng để nối hai hay nhiều câu truy vấn (Query) lại với nhau.
Khác với m ệ n h đề JOIN, các kết nối của m ệ n h đề J O I N được thực hiện theo chiều ngang, còn đối
với UNION kết nối dữ liệu được thực hiện theo chiều dọc.
Ví dụ: Ta có hai câu truy vấn sau:
SE LE CT THOI_GIAN TEN_VT,CHUNG_LOAI,DVT,SO_LUONG FROM DM_VT
WHERE CHUNG_LOAI='Xe n g u y e n chiec‘

SE LE C T THOI_GIAN,TEN_VT,CHUNG_LOAI,DVT,SO_LUONG FROM DM_VT


W H E R E CHUNG_LOAI='Phu tung'

27
Kếtnối các bảng – SQL JOIN
 Ta có thể sử dụng m ệ n h đề UNION để nối hai câu truy vấn trên như sau:

SE LE CT THOI_GIAN,TEN_VT,CHUNG_LOAI,DVT,SO_LUONG FROM
DM_VT

WHERE CHUNG_LOAI='Xe n g u y e n chiec'

UNION
SEL EC T THOI_GIAN,TEN_VT,CHUNG_LOAI,DVT,SO_LUONG FROM DM_VT

WHERE CHUNG_LOAI='Phu tung'

Và kết quả nhận được sẽ như sau:

28
Mệnh đềORDER BY
Bây giờ giả sử ta muốn sắp xếp kết quả nhận được theo tên vật tư bằng cách sử dụng m ệ n h đề ORDER BY.
Khi đó ta sẽ có cú pháp sau:
S E LE C T THOI_GIAN,TEN_VT,CHUNG_LOAI,DVT,SO_LUONG FROM DM_VT
W H ER E CHUNG_LOAI='Xe n g u y e n chiec‘
UNI ON
S E LE C T THOI_GIAN,TEN_VT,CHUNG_LOAI,DVT,SO_LUONG FROM DM_VT
W H E RE CHUNG_LOAI='Phu tung‘
O R D E R B Y TEN_VT
Và kết quả nhận được là:

N hư vậy để sắp xếp kết quả nhận được k hi sử dụng m ệ n h đề UNI ON bằng cách áp dụng m ệ n h đề O R D E R BY thì
m ện h đề O R D E R BY phải được đặt ở câu truy vấn sau cùng.

29
Truy vấn lồng nhau – Truy vấn con
Giả sử ta có hai bảng danh mục khóa học và danh mục lớp học như sau:
DM_KHOA DM_LOP

Khi đó muốn t ìm tất cả các lớp thuộc khóa có tên là “Khoa 03”, ta có thể sử dụng cú pháp sau:
SE LE CT * FROM DM_LOP
WHERE MA_KHOA=(SELECT MA_KHOA FROM DM_KHOA WHERE TEN_KHOA='Khoa 03')
Kết quả nhận được như sau:

Cú pháp SELE C T MA_KHOA FROM DM_KHOA WHERE TEN_KHOA='Khoa 03‘ được gọi là truy vấn con
(SubQuery).

30
Phép toán IN
 Cú pháp truy vấn ở trên có thể được viết lại như nhau:
S E L E C T * FROM DM_LOP
W H ER E MA_KHOA I N (SELECT MA_KHOA FROM DM_KHOA W H ER E TEN_KHOA= ' Khoa 03')
Kết quả nhận được tương tự như k h i sử dụng dấu =
 Tóan tử IN có nghĩa là có trong tập hợp trả về từ kết quả truy vấn, m ệ n h đề N O T IN thi kết quả nhận được sẽ
ngược lại.
Ví dụ:
S E L E C T * FROM DM_LOP
W H ER E MA_KHOA N O T IN ( SELE CT MA_KHOA FROM DM_KHOA WH ER E TEN_KHOA=' Khoa 03')

Kết quả nhận được sẽ là:

N hư vậy thực chất của phép toán I N là k iểm tra sự tồn tại của một giá trị trong một tập hợp

31
Mệnh đềSELECT ALL, DISTINCT
 M ệ n h đ ề SE LE CT ALL: Chọn tất cả các dòng trong bảng.
 M ệ n h đ ề DISTINCT: Mệnh đề DISTINCT cho phép chọn nhưng có loại bỏ các cột trùng lặp thông tin. Nghĩa là
DISTINCT chỉ có hiệu lực trên các trường có mặt trong m ệ n h đề SELECT.
V í dụ: Ta có bảng danh mục vật tư như sau:

N ếu sử dụng cú pháp: SE L E C T DISTINCT TEN_VT,CHUNG_LOAI,DVT FROM DM_VT, ta sẽ nhận được kết quả
như sau:

32
LỆNH UPDATE
 Dùng để chỉnh sửa lại dữ liệu trong bảng dữ liệu, cú pháp như sau:
UP D ATE <Tenbang> SE T <Column1=Value> [, <Column2=Value>,… ]
[ WHERE <Dieukien> ]
V í dụ: Ta có bảng danh mục vật tư như sau:

Khi đó nếu ta mu ốn sửa số lượng nhập về kho của xe máy WA V E 110 ngày 01/09/2007 từ 10 chiếc thành 20 chiếc ta sẽ
dùng cú pháp sau:UPDATE DM_VT SE T SO_LUONG=20 WHERE MA_VT=1, kết quả sau k hi sửa như sau:

33
Các loại ràng buộc - Constraints
 Đó là tập các quy tắc n h ằ m k iể m soát các thao tác đối với dữ liệu như ngăn chặn
dữ liệu sai nhập vào CSDL, cảnh báo người dùng hoặc ứng dụng không xóa dữ liệu
đúng
..vvv

 Gồm có:

 Các r à n g b u ộ c ở m ứ c ca o

 Các ràng buộc ở mức đặc t h ù

34
Các loại ràng buộc ở mc
ứ cao
 Ràng buộc thực thể – Entity Constraints: Ràng buộc này yêu cầu không tồn tại hai
dòng trùng nhau, để thực hiện điều này một hay nhiều cột được đánh dấu là duy nhất.
Cột hoặc các cột đó được thiết kế là Primary, Candidate hoặc Alternate Key.
 Ràng buộc miền – Domain Constraints: Ràng buộc này yêu cầu chỉ có các giá trị hợp lệ
tồn tại trong mỗi cột bao gồm có hay không có cột chấp n hận giá trị Null. Ví dụ, nếu t a
chỉ định dữ liệu của cột THOI_GIAN trong bảng có kiểu ngày giờ, thì k h i đó nếu ta
cố tình đưa dữ liệu kiểu k ý tự vào cột đó thì hệ quản trị sẽ không chấp nhậ n và báo lỗi.
 Ràng buộc toàn vẹn t h a m chiếu – Reference integrity Constraints: Ràng buộc này được
thự hiện k h i có hai hay nhiều bảng có quan hệ với nhau. Nó kiểm tra giá trị của cột có
ph ù hợp với cột trong bảng khác có quan hệ với bảng hiện chứa cột ràng buộc hay
không.

35
Các loại ràng buộc ở mức đặc thù
+ Ràng buộc khóa chính – Primary Key Constraints: Ràng buộc khóa
chính bảo đảm giá trị của một cột hay các cột nào đó là duy nhất trong
bảng và không chứa giá trị Null, và trong một bảng chỉ có một khóa
chính. Trong M S Access và SQL Server k hi một khóa chính được thiết
lập thì đồng thời một chỉ mục duy nhất cũng được thiết lập trên cột
hoặc các cột của khóa chính. Ta có thể dùng từ khóa P R I MA RY K E Y
để thiết lập khóa chính trong k hi thiết kế bảng, hoặc sử dụng cú pháp
A LT E R TABL E để t h ê m dàng buộc khóa chính với cú pháp A DD
CONST R AINT , hoặc xóa bỏ dàng buộc với cú pháp D R O P
CONST R AINT .
+ Ràng buộc duy nhất – Unique Constraints: Ràng buộc này yêu cầu tính
duy nhất trên một cột nào đó của bảng dữ liệu. Một bảng có thể có
nhiều định danh duy nhất. Khi đó nếu ta cố tình đưa một giá trị trùng
lắp vào cột được thiết lập ràng buộc duy nhất, thì hệ thống sẽ không
chấp nhận và báo lỗi.
+ Ràng buộc k iể m tra – Check Constraints:Dàng buộc Check tuân theo
dàng buộc miền, nó sẽ k i ể m tra x e m dữ liệu trong cột được thiết lập
ràng buộc có n ằ m trong miền giá trị được định nghĩa k hi tạo ràng
buộc không
36
Các loại ràng buộc ở mức đặc thù (tiếp)
+ Ràng buộc mặc định – Default Constraint: Ràng buộc Default
chỉ ra một giá trị được tự động đưa vào cột được thiết lập ràng
buộc Default nếu trong quá trình t h ê m mới dữ liệu không
cung cấp một giá trị rõ ràng cho cột đó. Giá trị chỉ định trong
ràng buộc Default phải tương thích với kiểu dữ liệu của cột
được thiết lập ràng buộc.
Ràng buộc khóa ngoại – Foreign Key Constraints: Ràng buộc
khóa ngoại phục v ụ cho hai mục đích: nó tuân theo toàn vẹn
t h a m chiếu bằng việc k i ểm tra quan hệ giữa các bảng, và nó
tuân theo toàn vẹn miền trên cột hay các cột khóa ngoại bằng
việc chỉ cho phép các hợp lệ. Một ràng buộc khóa ngoại thường
t h a m chiếu đến giá trị khóa chính của bảng cha, tuy nhiên nó
cũng có thể t h a m chiếu đến bất kỳ giá trị của các khóa duy
nhất khác của bảng cha (cột hay các cột có sàng buộc duy nhất
UNIQUE).

37
I NS ER T INTO <Tê n bản g> (Col um n1, Co l u m n 2 , .., C o l u m n n) VAL UES
( G i á t r ị 1, G i á t r ị 2, …., G i á t r ị n)
DELETE FROM < Tên b ả n g > [WHERE < Đi ều ki ệ n > ]
SELECT [DISTINCT] <Column1,.., ColumnN>
FROM <Tên bảng 1>,[<Tên bảng 2>],…
[WHERE <Expression>]
[GROUP BY gColumn1, gColumn2,..
[HAVING <gExpression>] ]
[ORDER BY oColumn1, oColumn2
[DESC/ASC], …]
SE LE CT DM_LOP.TEN_LOP,DM_KHOA.TEN_KHOA FROM DM_LOP,DM_KHOA

WHERE DM_LOP.MA_KHOA=DM_KHOA.MA_KHOA
38

You might also like