Professional Documents
Culture Documents
ứ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
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)
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
có
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
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
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)...
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
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
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
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
Hỗ trợ Bảo trì
39
Mô hình tiến trình phần mm
ề
40
Các mô hình tiến trình
41
Mô hình tuyến tính cổ đin
ể
Phân tích
Cài đặt
Kiểm thử
Vận hành
42
Mô hình tuyến tính cổđin
ể
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
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
7
Xác đ ị n h p h ạ m vi, k h ả n ă n g v à m ụ c t i ê u c ủ a d ự
án
8
Phân tích tính k h ả thi
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
10
Phân tích tính k h ả thi
11
Q u ả n t r ị d ự án
12
Ví d ụ t ạ o k ế h o ạ c h l à m v i ệ c
Độ ưu tiên Cao
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
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
ầ
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)
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.
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?
– 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
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
– 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)
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.
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)
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)
7
Các ký pháp trong sơ đồluồng dữ iệlu
8
Các ký pháp trong sơ đồluồng dữ iệlu
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 đỉnh
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).
15
Một sốqui đnh
ị khi xây dựng sơđồluồng dữ liệu
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 sơ đồ khối.
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
24
Từ điển dữ iệlu
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
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
2
1. Mc
ụ đích của mô hình thực thểliên kết
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
5
2. Cấu tạo của Mô hình Thực thểLiên ktế
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
Actors
15
Các loại liên kt
ế
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
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
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
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:
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
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
Phòng học
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
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
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
N 1
Beers ManfBy Manfs
manf
38
Ví dụ: không còn dư thừa
N 1
Beers ManfBy Manfs
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
41
Ví dụ: Thực thể 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
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
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
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ó
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
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
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
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
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
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ì?
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ì?
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
ầ
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ệ
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
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
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
7
Ký hiệu các phép toán
8
Các phép toán nguyên thủy (Primitive operations)
9
Các phép toán tp
ậ hợp (Set operations)
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
12
Phép hiệu
13
Phép giao
Intersection
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
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ụ
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ụ
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
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
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:
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ì?
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 đ ủ .
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]
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
21
4. Nguyên nhân gây ra các bất thường
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
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 )
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
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
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
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.
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)
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)
16
5. Các phép toán trên CSDL quan hệ(tiếp)
17
5. Các phép toán trên CSDL quan hệ(tiếp)
18
5. Các phép toán trên CSDL quan hệ(tiếp)
19
6. Các bước đưa vềdạng chuẩn 3NF.
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.
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
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
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
27
6. Các bước đưa vềdạng chuẩn 3NF
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)
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
2/21/2021
Nội dung trình bày
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
ID_Lớp
ID_SV Sinh viên (ID_SV, Tên SV,
M 1
Sinh viên Học Lớp ID_Lop);
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
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
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
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
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
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
ả
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
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
3
5.2. Phân loại SQL
4
5.3 Các lệnh SQL
5
Tạo và hủy CSDL
6
Tạo bảng dữ liệu(Table)
Ví dụ:
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:
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)
X ó a d ữ l i ệ u k h ỏ i bảng:
9
Truy xuất dữ liệu
10
Truy xuất dữ liệu
– Truy xuất một cột trong bảng:
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ụ :
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,
Đâ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
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.
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 đó:
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:
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:
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
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‘
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
UNION
SEL EC T THOI_GIAN,TEN_VT,CHUNG_LOAI,DVT,SO_LUONG FROM DM_VT
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')
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
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