Phân tích và thiết kế hệ thống System Analysis & Design
Bài giảng 5: Phân tích và thiết kế cơ sở dữ liệu TS Đào Nam Anh
1
Tham khảo
• Systems Analysis and Design, Alan Dennis and Barbara Haley Wixom Fred Niederman John Wiley & Sons, Inc. • Dao Nam Anh, "Systems Analysis And Design", Course
2
Book, University of Power, 201
Giới thiệu
Thiết kế CSDL logic Thiết kế CSDL vật lý
3
Chương 5. Phân tích và thiết kế cơ sở dữ liệu 5.1 Mô hình thực thể - liên kết 5.2 Mô hình quan hệ 5.3 5.4 5.5 Một số bài tập hệ thống ứng dụng
Giới thiệu
4
Cơ sở dữ liệu đóng một vai trò rất lớn trong phát triển ứng dụng. Cơ sở dữ liệu cho phép bạn phân tích thông tin mà bạn đã thu thập được thông qua các công cụ như báo cáo và dữ liệu kho
Giới thiệu
• Cơ sở dữ liệu là một cơ chế được sử dụng để lưu trữ
thông tin, hoặc dữ liệu.
• Thông tin là một cái gì đó mà tất cả chúng ta đều sử
dụng trên một cơ sở hàng ngày cho một loạt các lý do. • Với một cơ sở dữ liệu, người dùng sẽ có thể lưu trữ dữ liệu một cách có tổ chức. Một khi dữ liệu được lưu trữ, sẽ cần lấy thông tin ra một cách dễ dàng, và tìm kiếm dựa trên nhiều tiêu chí.
• Dữ liệu cũng phải được dễ dàng thêm vào cơ sở dữ
5
liệu, sửa đổi, và loại bỏ.
Giới thiệu
• Dữ liệu được biểu diễn dưới nhiều mô hình khác nhau:
mô hình phân cấp, mô hình mạng, mô hình quan hệ, mô hình hướng đối tượng.
6
• Phần lớn các hệ quản trị cơ sở dữ liệu thương mại hiện nay đều sử dụng các dữ liệu theo mô hình quan hệ và sự lựa chọn hợp lý của chương này là cơ sở dữ liệu quan hệ.
Giới thiệu
• Các hệ thống đều cần có một cơ sở dữ liệu (CSDL) của
mình.
• Việc phân tích và thiết kế cơ sở dữ liệu cho một hệ
thống có thể tiến hành đồng thời với việc phân tích và thiết kế hệ thống hoặc có thể tiến hành độc lập.
7
• Vấn đề đặt ra là cần xây dựng một cơ sở dữ liệu giảm tối đa sự dư thừa dữ liệu đồng thời dễ dàng khôi phục và bảo trì.
Giới thiệu
Phân tích CSDL • Bước này được tiến hành độc lập với các hệ quản trị
CSD:
yêu cầu dữ liệu của hệ thống.
• Xác định các yêu cầu về dữ liệu thông qua phân tích các
• Xây dựng mô hình thực thể liên kết biểu diễn các yêu
8
cầu về dữ liệu.
Giới thiệu
Thiết kế CSDL quan hệ. • Quá trình thiết kế cơ sở dữ liệu gồm các bước sau đây: • Thiết kế CSDL vật lý: dựa trên một hệ quản trị CSDL cụ
– Cài đặt vật lý trong CSDL, đặt các tham số chi tiết
thể. – Xây dựng các bảng trong CSDL quan hệ, quyết định cấu trúc thực tế của các bảng lưu trữ trong mô hình quan hệ.
9
trong HQTCSDL lựa chọn.
1 Mô hình thực thể - liên kết
• Mô hình thực thể - liên kết (Entity-Relationship Diagram - ERD) là mô hình liên hoàn các thực thể và các mối liên kết trong hệ thống thông tin.
mối liên kết giữa chúng trong hệ thống.
• Trên mô hình này sẽ thể hiện đầy đủ các tập thực thể và
• Đây cũng chính là mô hình quan niệm về dữ liệu của hệ
10
thống thông tin.
1 Mô hình thực thể - liên kết
• Mục đích
• Mô hình thực thể - liên kết đã được sử dụng rộng rãi
trong phân tích cấu trúc và mô hình hóa.
• Cách tiếp cận ERD dễ hiểu, là công cụ mạnh để mô hình các vấn đề thực tế và có thể dễ dàng chuyển sang sơ đồ cơ sở dữ liệu.
nghiệp vụ, các mối quan hệ giữa chúng và các thuộc tính để mô tả chúng.
11
• Với ERD thế giới thực là một tập hợp các thực thể
1 Mô hình thực thể - liên kết
Các thành phần
12
Cấu trúc điển hình của mô hình ERD bao gồm các tính năng sau đây: • Thực thể (entity) • Thuộc tính (attribute) của các thực thể • Liên kết (relation)
1 Mô hình thực thể - liên kết
Thực thể
• Thực thể là để chỉ một đối tượng, một nhiệm vụ, một sự kiện trong thế giới thực hay tư duy được quan tâm trong quản lý. Một thực thể tương đương với một dòng trong bảng nào đó, ví dụ sinh viên Ngô Nguyên Th., đơn hàng số XD123.
13
• Một cơ sở dữ liệu thường chứa những nhóm thực thể
như nhau. Ví dụ, một công ty thuê hàng trăm nhân viên và lưu giữ những thông tin tương tự liên quan đến mỗi nhân viên. Các thực thể nhân viên này chia sẻ các thuộc tính giống nhau nhưng mỗi thực thể có các giá trị riêng cho các thuộc tính đó.
1 Mô hình thực thể - liên kết
– Thuộc tính
• Thuộc tính (attribute) được sử dụng để mô tả thực thể. • Mỗi một thực thể có các thuộc tính, đó là các đặc trưng cụ thể mô tả thực thể đó. Ví dụ, một thực thể Nhânviên được mô tả bằng Họtên, Tuổi, Địachỉ, Lương… của nhân viên đó.
• Một thực thể cụ thể sẽ có một giá trị cho mỗi thuộc tính của nó. Ví dụ, nhân viên NV1 có các giá trị cho các thuộc tính {Họtên, Tuổi, Địachỉ, Lương} là “ Lê Vân”, 32, “Hà nội”, 500000.
thuộc tính đó. Ví dụ tuổi là thuộc tính được qui định là số 14 nguyên, trong khoảng [18..24].
• Mỗi thuộc tính có một tập giá trị gọi là miền giá trị của
1 Mô hình thực thể - liên kết
15
• Kiểu thuộc tính • Trong mô hình ER có mặt nhiều kiểu thuộc tính: thuộc tính đơn, thuộc tính phức hợp, thuộc tính đơn trị, thuộc tính đa trị, thuộc tính được lưu trữ, thuộc tính suy diễn được, thuộc tính có giá trị không xác định, thuộc tính phức tạp.
1 Mô hình thực thể - liên kết
• Thuộc tính đơn là thuộc tính không thể phân chia ra
16
được thành các thành phần nhỏ hơn. Ví dụ, thuộc tính Tuổi của một nhân viên là một thuộc tính đơn.
• Thuộc tính phức hợp là thuộc tính có thể phân chia được thành các thành phần nhỏ hơn, biểu diễn các thuộc tính cơ bản hơn với các ý nghĩa độc lập. Ví dụ, thuộc tính Họtên của thực thể nhân viên có thể phân chia thành các tính Họđệm và Tên. Giá trị của một thuộc tính là sự kết hợp kết hợp các giá trị của các thuộc tính thành phần tạo nên nó. Việc phân chia một thuộc tính phức hợp thành các thuộc tính đơn tùy thuộc vào hoàn cảnh cụ thể.
1 Mô hình thực thể - liên kết
17
• Trong một số trường hợp, một thuộc tính có thể có một tập giá trị cho cùng một thực thể. Những thuộc tính như vậy gọi là thuộc tính đa trị. Ví dụ, thuộc tính Bằngcấp của một người. Một người có thể không có bằng cấp nào, người khác có thể có một bằng, người khác nữa có thể có nhiều bằng. Như vậy, các người khác nhau có thể có một số giá trị khác nhau cho thuộc tính Bằngcấp. Thuộc tính Bằngcấp là một thuộc tính đa trị.
• Những thuộc tính có giá trị duy nhất cho một thực thể cụ thể gọi là các thuộc tính đơn trị. Ví dụ, Họtên là một thuộc tính đơn trị của thực thể nhân viên, mỗi nhân viên có một họ tên duy nhất.
1 Mô hình thực thể - liên kết
18
• Thuộc tính được lưu trữ là các thuộc tính mà giá trị của nó được nhập vào khi cài đặt cơ sở dữ liệu. Trong một số trường hợp, hai hay nhiều thuộc tính có giá trị liên quan đến nhau. Ví dụ, thuộc tính Tuổi và thuộc tính Ngàysinh của một người. Với một người cụ thể, ta có thể tính tuổi của anh ta bằng cách lấy năm hiện tại trừ đi năm của Ngàysinh. Thuộc tính mà giá trị của nó có thể tính được thông qua giá trị của các thuộc tính khác gọi là thuộc tính suy diễn được
1 Mô hình thực thể - liên kết
– Kiểu thực thể
• Một kiểu thực thể (entity class) là một tập hợp các thực thể có các thuộc tính như nhau. Một kiểu thực thể trong cơ sở dữ liệu được mô tả bằng tên và các thuộc tính. Ví dụ: NHÂNVIÊN (Họtên, Tuổi, Lương), CÔNGTY (Tên, Địađiểm, Giámđốc).
19
• Một tập hợp các thực thể của một kiểu thực thể cụ thể
trong cơ sở dữ liệu tại một thời điểm được gọi là một tập thực thể, nó thường được tham chiếu đến bằng cách sử dụng tên của kiểu thực thể. Ví dụ, NHÂNVIÊN để chỉ một kiểu thực thể, vừa để chỉ tập hợp hiện tại của tất cả các thực thể nhân viên trong cơ sở dữ liệu.
1 Mô hình thực thể - liên kết
– Kiểu thực thể
• Kiểu thực thể được biểu diễn bằng hình chữ nhật, và
20
được đặt tên bằng danh từ. Phần trên ghi tên kiểu thực thể, phần dưới ghi các thuộc tính.
1 Mô hình thực thể - liên kết
– Kiểu thực thể
• Một kiểu thực thể thường có một thuộc tính mà các giá trị của nó là khác nhau đối với mỗi thực thể riêng biệt trong một tập thực thể. Thuộc tính như vậy gọi là thuộc tính khóa và các giá trị của nó có thể dung để xác định từng thực thể một cách duy nhất.
• Thuộc tính khóa của một kiểu thực thể: Một ràng buộc quan trọng trên các thực thể của một kiểu thực thể là khóa.
• Ví dụ, thuộc tính Tên của kiểu thực thể CÔNGTY là
21
khóa của kiểu thực thể đó vì mỗi thực thể công ty có một tên duy nhất.
1 Mô hình thực thể - liên kết
– Kiểu thực thể
• Đôi khi, nhiều thuộc tính kết hợp với nhau tạo thành một khóa, nghĩa là tổ hợp các giá trị của các thuộc tính này phải khác nhau đối với mỗi thực thể. Trong trường hợp như vậy ta có một thuộc tính khóa phức hợp. Chú ý rằng khóa phức hợp phải tối thiểu, nghĩa là tất cả các thuộc tính thành phần phải có mặt trong thuộc tính phức hợp để thỏa mãn tính chất duy nhất.
22
• Thuộc tính khóa của một kiểu thực thể: Một ràng buộc quan trọng trên các thực thể của một kiểu thực thể là khóa.
1 Mô hình thực thể - liên kết
– Kiểu thực thể
• Một kiểu thực thể có thể có nhiều hơn một thuộc tính
khóa.
tên duy nhất thì các thuộc tính Mãsốcông ty và Têncôngty đều là các thuộc tính khóa.
• Ví dụ, nếu một công ty có một mã số duy nhất và một
23
• Một kiểu thực thể cũng có thể không có khóa. Một thực thể không có khóa được gọi là kiểu thực thể yếu. Một thuộc tính mà là một khóa chính của quan hệ khác được gọi là khóa ngoại (foreign key).
1 Mô hình thực thể - liên kết
– Liên kết
• Liên kết đại diện cho liên hệ giữa một số thực thể. Mối liên kết giữa các tập thực thể có thể là một mối liên kết sở hữu hoặc phụ thuộc hoặc mô tả sự tương tác giữa chúng. Để mô tả một mối liên kết người ta dùng một đoạn thẳng trong đó ghi tên của mối liên kết và các thuộc tính riêng của nó nếu có. Một mối liên kết có thể có thuộc tính riêng.
24
• Một liên kết có thể là nguyên phân, nhị phân, hoặc n, tuỳ thuộc vào việc số lượng các thực thể tham gia trong mối liên kết là 2, 3 hoặc nhiều hơn.
1 Mô hình thực thể - liên kết
– Liên kết
• Một liên kết có Bản số (cardinality). Đó là một cặp số
nguyên (i,j), chứa số tối thiểu và số tối đa trường hợp có thể có của các phần tử của tập thực thể tham gia vào mối liên kết.
• Bản số của tập thực thể nào thì được ghi trên nhánh của tập thực thể đó. Nếu i,j nhận giá trị lớn hơn 1 thì quy ước thay chúng bởi ký tự N.
25
• Các dạng một-một (1:1), một-nhiều (1: N), nhiều – nhiều (M:N), có trong các mối liên kết giữa hai thực thể, 1:1:1, 1:1: N, 1: N: M, M: N: P trong các mối liên kết giữa ba thực thể.
1 Mô hình thực thể - liên kết
– Liên kết
26
• Liên kết một – một (1-1) • Mỗi thể hiện của thực thể A quan hệ với một thể hiện của thực thể B và ngược lại. Ký kiệu bằng một đường nối giữa hai thực thể. Ví dụ: Một sinh viên có một luận văn. Một luận văn thuộc về một sinh viên.
1 Mô hình thực thể - liên kết
27
– Liên kết • Liên kết một – nhiều (1-N) • Mỗi thể hiện của thực thể A quan hệ với nhiều thể hiện của thực thể B. Ngược lại mỗi thể hiện của thực thể B quan hệ với chỉ một thể hiện của thực thể A. Ký kiệu: đoạn thẳng phân nhánh tại bên “ nhiều”. Ví dụ: Một khoa có nhiều sinh viên. Một sinh viên thuộc về một khoa.
1 Mô hình thực thể - liên kết
28
• Liên kết nhiều – nhiều (N-M) • Mỗi thể hiện của thực thể A quan hệ với nhiều thể hiện của thực thể B. Ngược lại mỗi thể hiện của thực thể B quan hệ với nhiều thể hiện của thực thể A. Ký kiệu phân nhánh tại hai đầu đoạn thẳng. Ví dụ: Một giảng viên dạy nhiều sinh viên. Một sinh viên được dạy bởi nhiều giảng viên.
1 Mô hình thực thể - liên kết
• Loại thành viên: là điều kiện một thể hiện của thực thể tham gia vào liên kết với một thực thể khác. Nó có thể là bắt buộc hay tuỳ chọn trong quan hệ. Các loại thành viên cho biết số thể hiện nhỏ nhất của mỗi thực thể tham gia vào liên kết với một thể hiện của một thực thể khác.
29
• Ký kiệu Bắt buộc và Tuỳ chọn
1 Mô hình thực thể - liên kết
• Ví dụ Tuỳ chọn (ít nhất 0) –“một giáo viên có thể dạy
30
không, một hoặc nhiều môn học.” Bắt buộc(ít nhất 1) – “một môn học cần phải được một hoặc nhiều giáo viên dạy.”
1 Mô hình thực thể - liên kết
• Lưu ý: Mô hình dữ liệu không chỉ là công cụ phân tích thiết kế mà còn như một phương pháp kiểm tra các yêu cầu nghiệp vụ của người sử dụng.
của mô tả yêu cầu nghiệp vụ: Khi chiều một nhiều là mở, không xác định (khách hàng có thể có nhiều đơn hàng) thì chiều từ nhiều sang một là hoàn toàn xác định (một đơn hàng phải thuộc về một khách hàng).
• 1. Liên kết một - nhiều biểu thị ràng buộc là một phần
31
• 2. Nếu hai thực thể có quan hệ một - một thường có ít lý do để coi chúng như hai bảng tách biệt. Do đó thường gộp hai thực thể làm một bảng với mỗi dòng dài hơn.
1 Mô hình thực thể - liên kết
• Lưu ý: Mô hình dữ liệu không chỉ là công cụ phân tích thiết kế mà còn như một phương pháp kiểm tra các yêu cầu nghiệp vụ của người sử dụng.
32
• 3. Nếu hai thực thể có quan hệ nhiều - nhiều thì không có sự khác biệt về bản chất giữa các chiều (không nói lên được kẻ thống trị). Do đó ít khi được sử dụng.
1 Mô hình thực thể - liên kết
• Tóm lại trong ba kiểu liên kết trên, liên kết một nhiều là quan trọng hơn cả và hầu như các mối quan hệ trong mô hình thực thể liên kết đều là một nhiều.
33
• Mô hình thực thể - liên kết là mô hình liên hoàn các tập thực thể và các mối liên kết trong hệ thống thông tin. • Trên mô hình này sẽ thể hiện đầy đủ các tập thực thể và mối liên kết giữa chúng trong hệ thống. Đây cũng chính là mô hình quan niệm về dữ liệu của hệ thống thông tin.
1 Mô hình thực thể - liên kết Xây dựng mô hình thực thể liên kết của hệ thống
34
Gồm có ba bước sau đây: • Xác định các thực thể và các định danh thực thể • Xác định liên kết giữa các thực thể • Xác định các thuộc tính mô tả cho các thực thể
1 Mô hình thực thể - liên kết Xây dựng mô hình thực thể liên kết của hệ thống
• Thông tin tài nguyên: con người, kho bãi, tài sản. Ví dụ
1. Xác định các thực thể và các định danh thực thể • Xác định các thực thể là các mục thông tin cần thiết cho hệ thống và hệ thống cần lưu giữ. Các thực thể được tìm từ các nguồn:
nhà cung cấp, mặt hàng, kho...
trường và kích hoạt một chuỗi hoạt động của hệ thống. Ví dụ đơn hàng mua bán, dự trù, phiếu yêu cầu,... • Thông tin tổng hợp: thường ở dưới dạng thống kê liên quan đến các kế hoạch hoặc kiểm soát. Ví dụ dự toán chi tiêu, tính lương...
35
• Thông tin giao dịch: là các luồng thông tin đến từ môi
1 Mô hình thực thể - liên kết Xây dựng mô hình thực thể liên kết của hệ thống
1. Xác định các thực thể và các định danh thực thể
• Kiểm tra rằng mỗi thực thể thoả mãn:
» Tên gọi là danh từ » Có nhiều thể hiện » Có duy nhất một định danh » Có ít nhất một thuộc tính mô tả » Có liên kết với ít nhất một thực
36
thể khác.
1 Mô hình thực thể - liên kết Xây dựng mô hình thực thể liên kết của hệ thống
2. Xác định liên kết giữa các thực thể
• Thiết lập sự tồn tại của liên kết. Vẽ đường thẳng và đặt
tên liên kết tại hai đầu.
tuỳ: chọn hay bắt buộc.
• Xác định loại liên kết (1-1, 1-N, N-M) và loại thành viên
37
• Tách liên kết N-M thành hai liên kết 1-N với một thực thể kết hợp. Khi đó thực thể kết hợp sẽ có định danh được tạo thành từ hai thuộc tính định danh của các thực thể ban đầu.
1 Mô hình thực thể - liên kết Xây dựng mô hình thực thể liên kết của hệ thống
38
2. Xác định liên kết giữa các thực thể Ví dụ: liên kết GIẢNG VIÊN-MÔN HỌC dạng N:M được tách ra thành hai liên kết 1:N với việc tạo ra một thực thể trung gian GIẢNG DẠY.
1 Mô hình thực thể - liên kết Xây dựng mô hình thực thể liên kết của hệ thống
39
3. Xác định các thuộc tính mô tả cho các thực thể 1. Mỗi thuộc tính chỉ xuất hiện một lần trong thực thể tương ứng. 2. Nếu không chắc chắn là thuộc tính hay thực thể cần tiếp tục nghiên cứu và phân tích nó. 3. Khi một thuộc tính của thực thể A có nhiều giá trị ta sẽ mô hình hóa thuộc tính đó là một thực thể B có liên kết phụ thuộc với thực thể A. Định danh của thực thể B sẽ bao gồm các thuộc tính định danh của thực thể A và một số thuộc tính khác của thực thể B. Liên kết giữa thực thể A và thực thể B được gọi là liên kết phụ thuộc. [16,17,18]
1 Mô hình thực thể - liên kết Xây dựng mô hình thực thể liên kết của hệ thống
40
3. Xác định các thuộc tính mô tả cho các thực thể Ví dụ: Một giảng viên có thể có nhiều trình độ ngoại ngữ với các ngôn ngữ khác nhau. Khi đó trình độ ngoại ngữ của giảng viên không được mô hình hóa là một thuộc tính mà được mô hình hóa là một thực thể như sau:
2 Mô hình quan hệ
41
Cơ sở dữ liệu quan hệ (Relational Data Model) được Edgar Frank Codd giới thiệu vào tháng 7/1970 với bài “Mô hình dữ liệu cho các ngân hàng dữ liệu lớn”. Theo mô hình này, các dữ liệu sẽ được lưu vào máy tính dưới dạng các bảng hai chiều gọi là các quan hệ và giữa các bảng sẽ có các mối liên hệ được định nghĩa nhằm phản ảnh mối liên kết thực sự của các đối tượng dữ liệu ở bên ngoài thế giới thật.
2 Mô hình quan hệ
42
Mô hình dữ liệu này cùng với mô hình dữ liệu thực thể kết hợp đang được sử dụng rộng rãi trong việc phân tích và thiết kế CSDL hiện nay. Nền tảng cơ bản của Cơ sở dữ liệu quan hệ là lý thuyết tập hợp trên các quan hệ, tức là tập của các bộ giá trị (Value Tuples). Trong mô hình dữ liệu này những khái niệm sẽ được sử dụng bao gồm thuộc tính (Attribute), quan hệ (Relation), lược đồ quan hệ (Relation Schema), bộ (Tuple), khóa (Key).
2 Mô hình quan hệ Quan hệ
So sánh tương ứng giữa mô hình thực thể liên kết, mô hình quan hệ và hệ quản trị CSDL chúng ta có bảng sau:
Mô hình thực thể liên kết Mô hình quan hệ Các bảng trong hệ QTCSDL
Quan hệ Bảng
Bộ Dòng hay bản ghi
Thực thể (kiểu thực thể) Thể hiện của thực thể (thực thể)
43
Thuộc tính Thuộc tính Cột hay trường
2 Mô hình quan hệ Quan hệ
• Ví dụ với Mô hình thực thể liên kết
Công nghệ thông tin
Quản trị kinh doanh
Loại thực thể KHOA có hai thực thể:
CNTT QTKD
Nhà 1C Nhà 2A
44
63322332 87787888
2 Mô hình quan hệ Quan hệ
Trong Mô hình quan hệ: • Quan hệ: KHOA (Tên khoa, Mã khoa,
• Các bộ:
(Công nghệ thông tin, CNTT,
Địa chỉ khoa, Điện thoại)
•
45
Nhà 1c, 63322332) (Quản trị kinh doanh, QTKD, Nhà 2A, 87787888)
2 Mô hình quan hệ Quan hệ
Trong bảng của hệ QTCSDL
chỉ
Tên khoa
Điện thoại
KHO A
Mã khoa
Địa khoa
CNTT Nhà 1C
63322332
Công nghệ thông tin
trị
kinh
QTKD Nhà 2A
87787888
Quản doanh
46
2 Mô hình quan hệ Quan hệ
47
So sánh tương ứng giữa mô hình thực thể liên kết, mô hình quan hệ và hệ quản trị CSDL chúng ta có bảng sau:
2 Mô hình quan hệ Quan hệ
• Trong Mô hình quan hệ, các bộ trong một quan hệ
không được trùng nhau.
• Thuộc tính được xác định bởi tên, thứ tự của các thuộc
• Trong một quan hệ, tên các thuộc tính phải khác nhau,
tính trong quan hệ là không quan trọng.
48
các miền giá trị của các thuộc tính không nhất thiết khác nhau.
2 Mô hình quan hệ Khóa
• Khóa chính của một quan hệ (Primary Key - PK) là một hoặc một nhóm thuộc tính, xác định duy nhất một bộ trong quan hệ. Khóa chính của quan hệ là định danh của thực thể tương ứng. Trong quan hệ các thuộc tính thuộc khóa chính được gạch chân và được gọi là các thuộc tính khóa.
49
• Ví dụ: KHOA (Tên khoa, Mã khoa, Địa chỉ khoa, Điện thoại) – Mã khoa là khóa chính của quan hệ KHOA.
2 Mô hình quan hệ Khóa
• Khóa ghép là khóa có từ hai thuộc tính trở lên. • Ví dụ: trong quan hệ GIẢNG DẠY (Mã giảng viên, Mã môn học, Ngày bắt đầu), khóa chính là một khóa ghép gồm hai thuộc tính Mã giảng viên, Mã môn học.
50
• Khi chọn khóa chính cần phải xét các tiêu chuẩn: khóa chính phải xác định được duy nhất một bộ trong quan hệ, phải có số thuộc tính ít nhất, phải không thay đổi theo thời gian.
2 Mô hình quan hệ Khóa
• Khóa ngoài: Một khóa ngoài được sử dụng để thiết lập một mối quan hệ. Đó là thuộc tính mô tả của quan hệ này nhưng đồng thời lại là thuộc tính khóa trong quan hệ khác. Các thuộc tính khóa ngoài được in nghiêng hoặc gạch chân bằng nét đứt.
• Ví dụ: LỚP (tên lớp, khoa, phòng học)
51
SINH VIÊN (mã SV, họ tên, ngày sinh, quê quán, tên lớp) trong đó tên lớp là khóa ngoài của quan hệ SINH VIÊN.
2 Mô hình quan hệ Khóa
• Khóa giả - là thuộc tính do người thiết kế đặt ra để làm
52
khóa chính. Thuộc tính này không mô tả đặc điểm của các đối tượng quan tâm mà chỉ có tác dụng để xác định duy nhất đối tượng đó. Ví dụ: mã SV, số hóa đơn…Thông thường khi khóa chính có từ 3 thuộc tính trở lên, người ta thường đặt ra một khóa giả làm khóa chính để thuận tiện hơn trong việc truy vấn dữ liệu.
2 Mô hình quan hệ Khóa
• Ràng buộc tham chiếu (ràng buộc khóa ngoài): liên quan
• Ràng buộc thực thể là một ràng buộc trên khóa chính. Nó yêu cầu khóa chính phải tối thiểu, xác định duy nhất và không null. Giá trị null tức là không có giá trị. Nó khác với giá trị 0 hay dấu cách.
53
đến tính toàn vẹn của mối quan hệ tức là liên quan đến tính toàn vẹn của khóa ngoài. Một ràng buộc tham chiếu yêu cầu một giá trị khóa ngoài trong một quan hệ cần phải tồn tại là một giá trị khóa chính trong một quan hệ khác hoặc là giá trị null.
2 Mô hình quan hệ Khóa
• Ví dụ có một bộ như sau:
SINH VIÊN mã SV
tên SV
tên lớp
SV34
Hoàng Anh T4-K7
• Tuy nhiên trong quan hệ “LỚP” lại không có bộ nào có khóa
54
chính T4-K7. Đó là vi phạm ràng buộc tham chiếu.
• Các ràng buộc được định nghĩa bởi người dùng: đây là các ràng buộc liên quan đến miền giá trị của dữ liệu thực tế.
2 Mô hình quan hệ Phụ thuộc hàm
• Ví dụ: Mã sinh viên→Ngày sinh. • Phụ thuộc hàm giữa nhiều thuộc tính: thuộc tính B phụ thuộc hàm vào các thuộc tính A1 và A2, được ký hiệu là {A1, A2}→B nếu với mỗi cặp giá trị của A1 và A2 xác định duy nhất một giá trị của B.
• Trong một quan hệ R, thuộc tính B phụ thuộc hàm vào thuộc tính A (hay thuộc tính A xác định hàm thuộc tính B) ký hiệu A→B nếu với mỗi giá trị của thuộc tính A xác định một giá trị duy nhất của thuộc tính B.
55
• Ví dụ: {Số hóa đơn, Mã hàng}→Số lượng.
2 Mô hình quan hệ Phụ thuộc hàm
56
Các loại phụ thuộc hàm 1. Phụ thuộc hàm đầy đủ: Thuộc tính B gọi là phụ thuộc đầy đủ vào tập thuộc tính A (có từ 2 thuộc tính trở lên) nếu nó chỉ phụ thuộc hàm vào A và không phụ thuộc hàm vào bất cứ tập con nào của A. Ngược lại B gọi là phụ thuộc hàm bộ phận vào tập thuộc tính A. 2. Phụ thuộc hàm bắc cầu: Nếu có A1→A2 và A2→A3 thì A1→A3. Khi đó A3 được gọi là phụ thuộc bắc cầu vào A1. Định nghĩa khóa theo quan niệm phụ thuộc hàm: Trong quan hệ R, tập các thuộc tính K là khóa của quan hệ nếu có K→Bi với Bi là tất cả các thuộc tính còn lại.
2 Mô hình quan hệ Các dạng chuẩn
• Dạng chuẩn (normalization) là quá trình nhóm dữ liệu một cách hợp lý để tránh trùng lặp dữ liệu và sự phức tạp dữ liệu.
hóa.
• Có rất nhiều mức độ (hoặc các hình thức) bình thường
• Những quy tắc cho việc bình thường ban đầu được phát
triển bởi E.F. Codd, một nhà nghiên cứu tại IBM. • Có một số dạng bình thường hóa: 1NF, 2NF, 3NF,
57
Boyce-Codd,…. Dưới đây là 3 dạng cơ bản.
2 Mô hình quan hệ Các dạng chuẩn
– Dạng chuẩn 1
• Các khóa chính của thực thể là một thuộc tính, hoặc là
• Đối với mô hình dữ liệu để đáp ứng Dạng chuẩn 1 (First Normal Form - 1NF), tất cả các thực thể trong CSDL phải có một khóa chính.
một bộ các thuộc tính, xác định một trường hợp duy nhất trong thực thể đó.
58
• Khóa chính không bao giờ có thể là null. • Ngoài ra, không có hai trường hợp có thể có cùng giá trị cho các khóa chính. 1NF cũng quy định rằng không có nhóm lặp.
2 Mô hình quan hệ Các dạng chuẩn
– Dạng chuẩn 1
• Ví dụ, một thực thể Album, có thuộc tính TênNghệSỹ. • Nếu trong thực thể có nhiều album của cùng 1 nghệ sỹ
• Một nhóm lặp là thuộc tính có nhiều giá trị có liên quan đến một giá trị duy nhất trong một thuộc tính khác trong cùng một thực thể.
• Để sửa lỗi này, bạn cần phải tạo thêm thực thể
thì có nghĩa có nhóm lặp.
59
TênNghệSỹ và tạo ra một mối quan hệ giữa hai thực thể.
2 Mô hình quan hệ Các dạng chuẩn
– Dạng chuẩn 2
• 2NF xác định rằng tất cả các thuộc tính không phải là
khóa, phụ thuộc toàn bộ vào khóa chính.
thì 2NF không phải là một vấn đề.
• Khi khóa chính của một thực thể là một thuộc tính đơn,
• Tuy nhiên, nếu khóa chính được tạo thành từ nhiều
thuộc tính thì 2NF có nghĩa là: tất cả các thuộc tính khác trong thực thể phụ thuộc vào tất cả các thuộc tính trong các khóa chính.
• Ví dụ: Cho một quan hệ: R (A, B, C, D, E).
60
• Hàm Phụ thuộc đầy đủ: {A,B}→D; • Hàm Phụ thuộc bộ phận: A→C; B→E;
Khóa chính là A,B.
2 Mô hình quan hệ Các dạng chuẩn
– Dạng chuẩn 3
• 3NF là dạng chuẩn mà hầu hết các mô hình dữ liệu và cơ
sở dữ liệu được chuẩn hóa.
kiện: không có sự phụ thuộc bắc cầu.
• 3NF là một mô hình dữ liệu 2NF, và thỏa mãn thêm điều
• Một phụ thuộc bắc cầu tồn tại khi một thuộc tính (không
phải khóa) của một thực thể phụ thuộc vào một thuộc tính (không phải khóa) khác, mà thuộc tính này phụ thuộc vào thuộc tính khóa.
• Ví dụ: Cho một quan hệ: R (A, B, D, E). Khóa chính là A,B. • Các Hàm phụ thuộc : {A,B}→D; • D→E là Hàm phụ thuộc giữa các thuộc tính không phải là 61
khóa.
3 Thiết kế CSDL logic
62
• Có hai hướng tiếp cận để mô hình hóa dữ liệu: • Vẽ mô hình thực thực liên kết. Đây là cách tiếp cận từ trên xuống (top - down). Để xây dựng mô hình thực thể liên kết cần xác định một cách trực giác các đối tượng quan trọng mà một hệ thống cần phải lưu trữ như dữ liệu (đó là các thực thể) và xác định các thuộc tính mô tả cho các thực thể đó cùng với quan hệ giữa các thực thể. Nếu áp dụng đúng các luật trong mô hình thực thể liên kết thì ta sẽ có các quan hệ đã được chuẩn hóa.
3 Thiết kế CSDL logic
• Chuẩn hóa là cách tiếp cận từ dưới lên (bottom - up):
Để chuẩn hóa cần nhóm tất cả các thuộc tính liên quan của hệ thống vào trong một quan hệ. Áp dụng các luật chuẩn hóa để tách quan hệ đó thành các quan hệ có cấu trúc tốt hơn giảm bớt dư thừa dữ liệu.
63
• Mỗi cách tiếp cận đều có ưu điểm và nhược điểm riêng vì vậy trong thực tế người ta thường phối hợp cả hai cách tiếp cận này để có được một mô hình dữ liệu chính xác nhất. Kết quả cuối cùng của phần thiết kế CSDL logic là tập các bản ghi logic biểu diễn các quan hệ trong CSDL.
3
Thiết kế CSDL logic
Chuyển đổi từ mô hình thực thể liên kết thành các bản ghi logic
– Bước 1: Chuyển đổi các thực thể thành bảng • Tùy theo thực thể tham gia các mối quan hệ 1:1, 1:N, N:M,
có các trường hợp sau:
64
• Mối quan hệ N:M • Một thiết kế có thể hoặc có thể không quan hệ dạng N:M. Ta có chuyển đổi một quan hệ N:M về nhiều quan hệ 1:M rồi áp dụng như cho trường hợp với mối quan hệ 1:N. • Cách chuyển quan hệ dạng N:M như sau: đầu tiên chuyển đổi hai thực thể thành hai bảng. Sau đó, tạo ra một bảng thứ ba, thường được gọi là bảng giao, có tên ghép từ hai bảng trước. Bảng này lưu các cặp khóa ngoại kết nối hai bảng kia.
3
Thiết kế CSDL logic
Chuyển đổi từ mô hình thực thể liên kết thành các bản ghi logic
65
• Ví dụ với mô hình thực thể liên kết:
3
Thiết kế CSDL logic
Chuyển đổi từ mô hình thực thể liên kết thành các bản ghi logic
• Ta có các bản ghi logic sau:
Sinh viên (Họ tên, Mã SV, Ngày sinh, Giới tính, Dân tộc, Quê quán, Điện thoại, Email, Ngành học, Cấp học)
Khóa học (Tên khóa học, Mã khóa học, Trình độ)
Khoa (Tên khoa, Mã khoa, Địa chỉ khoa, Điện thoại)
66
Môn học (Tên môn học, Mã môn học, Số tín chỉ, Học kỳ, Học phí) Giảng viên (Họ tên, Mã giảng viên, Ngày sinh, Giới tính, Dân tộc, Địa chỉ, Điện thoại, Email, Ngành dạy)
3
Thiết kế CSDL logic
Chuyển đổi từ mô hình thực thể liên kết thành các bản ghi logic
67
Giảng dạy (Mã giảng viên, Mã môn học, Ngày bắt đầu)
Với các liên kết nhiều- nhiều trong mô hình thực thể, thay thế bằng các liên kết một – nhiều, như ví dụ dưới đây.
3
Thiết kế CSDL logic
Chuyển đổi từ mô hình thực thể liên kết thành các bản ghi logic
– Bước 2: Thiết lập các ràng buộc • Sau khi có các bảng sẽ cần xác định các ràng buộc cho
bảng.
mặc định.
• Giá trị mặc định: Với mỗi trường của bảng có thể đặt giá trị
• Kiểm tra tính hợp lệ - Validation Rule: Sử dụng qui tắc này
• Validation Text: Đây là thông báo lỗi mà gửi đến người sử
để kiểm tra tính hợp lệ của dữ liệu.
68
dụng khi Validation Rule bị vi phạm.
3
Thiết kế CSDL logic
Chuyển đổi từ mô hình thực thể liên kết thành các bản ghi logic
• Chuẩn hóa quan hệ
• Bước 1. Dạng chuẩn 0 (0NF). Từ một biểu mẫu (tài liệu
xuất: hóa đơn, chứng từ,…) lấy ra một danh sách các thuộc tính cho quan hệ chưa được chuẩn hóa. • Mỗi tiêu đề trong biểu mẫu là một thuộc tính. • Bỏ qua phần đầu đề và phần dưới cùng (một số ghi chú,
chữ ký …) của biểu mẫu.
• Không lấy các thuộc tính được suy diễn từ những thuộc tính khác (như thành tiền = đơn giá * số lượng) và các thuộc tính trình bày như „số thứ tự‟ nếu có.
69
• Bổ sung thêm một số thuộc tính định danh tương ứng với một số thuộc tính tên gọi chưa có định danh nếu cần thiết. • Xác định nhóm thuộc tính lặp, các Hàm phụ thuộc giữa các
thuộc tính.
3
Thiết kế CSDL logic
Chuyển đổi từ mô hình thực thể liên kết thành các bản ghi logic
– Bước 2: Thiết lập các ràng buộc
• Bước 2. Chuyển về dạng chuẩn 1 (1NF): Tách nhóm thuộc
tính lặp.
quan hệ (R1). Xác định khóa chính của quan hệ này. • Các thuộc tính của nhóm lặp và khóa chính của quan hệ
• Tách các thuộc tính không nằm trong nhóm lặp thành một
trên (R1) tạo thành một quan hệ (R2). Xác định khóa chính cho quan hệ R2: khóa chính của R2 sẽ là một khóa ghép giữa khóa của R1 và một thuộc tính khác trong R2.
• Ví dụ: R{A,B,C,D,E} và khóa là {A}. Tồn tại nhóm thuộc tính
70
lặp {C,D} thì tách thành 2 quan hệ: R1{A,B,E} và R2{A,C,D}.
3
Thiết kế CSDL logic
Chuyển đổi từ mô hình thực thể liên kết thành các bản ghi logic
• Bước 3. Chuyển về dạng chuẩn 2 (2NF): Loại bỏ phụ
thuộc bộ phận vào khóa (chỉ áp dụng với các quan hệ có khóa ghép).
• Tách các thuộc tính tham gia vào Hàm phụ thuộc được xác định bởi một phần của khóa vào một quan hệ mới (R3). Khóa chính của quan hệ là thuộc tính xác định hàm.
• Phần còn lại với khóa chính của quan hệ trên (R3) là một quan hệ giữ nguyên khóa chính như quan hệ ban đầu. • Ví dụ: R{A,B,C,D} và khóa là {A,B}. Tồn tại Hàm phụ thuộc
71
A→C thì tách thành 2 quan hệ R1{A,C} và R2{A,B,D}.
3
Thiết kế CSDL logic
Chuyển đổi từ mô hình thực thể liên kết thành các bản ghi logic
• Sau khi tiến hành theo hai hướng khác nhau: xây dựng mô hình thực thể liên kết và chuẩn hóa dữ liệu chúng ta sẽ có hai tập bản ghi logic khác nhau của cùng một hệ thống. Khi đó cần phải kết hợp lại để có một mô hình CSDL logic thống nhất cho hệ thống. • Một số nguyên tắc kết hợp: • 1. Kiểm tra sự thống nhất về tên gọi của các quan hệ và
các thuộc tính trong hai kết quả. Nếu cùng tên những khác nghĩa thì phải đặt lại tên cho khác nhau. Nếu cùng nghĩa nhưng khác tên thì phải đặt lại tên cho giống nhau. • 2. Lấy tất cả các quan hệ khác nhau từ hai kết quả. • 3. Với hai quan hệ trùng nhau thì lấy tất cả các thuộc tính 72
• Hoàn thiện mô hình CSDL logic
có trong hai quan hệ từ hai kết quả.
3
Thiết kế CSDL logic
Chuyển đổi từ mô hình thực thể liên kết thành các bản ghi logic
– Bước 3: Tạo các mối quan hệ
• Trên cơ sở quan hệ dữ liệu được nêu trong các tài liệu
73
phân tích, có thể cần thiết kế các quan hệ giữa các bảng sử dụng các khóa chính và các khóa ngoại.
3
Thiết kế CSDL logic
Chuyển đổi từ mô hình thực thể liên kết thành các bản ghi logic
• Hoàn thiện mô hình CSDL logic
• Sau khi tiến hành theo hai hướng khác nhau: xây dựng mô hình thực thể liên kết và chuẩn hóa dữ liệu chúng ta sẽ có hai tập bản ghi logic khác nhau của cùng một hệ thống. Khi đó cần phải kết hợp lại để có một mô hình CSDL logic thống nhất cho hệ thống. • Một số nguyên tắc kết hợp: • 1. Kiểm tra sự thống nhất về tên gọi của các quan hệ và
74
các thuộc tính trong hai kết quả. Nếu cùng tên những khác nghĩa thì phải đặt lại tên cho khác nhau. Nếu cùng nghĩa nhưng khác tên thì phải đặt lại tên cho giống nhau. • 2. Lấy tất cả các quan hệ khác nhau từ hai kết quả. • 3. Với hai quan hệ trùng nhau thì lấy tất cả các thuộc tính
có trong hai quan hệ từ hai kết quả.
4 Thiết kế CSDL vật lý
75
Phần thiết kế CSDL vật lý sẽ phụ thuộc vào một HQTCSDL mà ta sẽ sử dụng để cài đặt CSDL. Chúng ta cần chuyển từ các bản ghi logic với các thuộc tính thành các quan hệ được biểu diễn dưới dạng bảng, với các trường hay các cột được cài đặt trong một HQTCSDL cụ thể
4 Thiết kế CSDL vật lý Thiết kế các bảng
76
Bảng là các khối logic cơ bản của cơ sở dữ liệu quan hệ. Bảng là một nhóm các cột dữ liệu. Với mỗi bảng cần chỉ rõ: khóa chính (có thể gồm một hay nhiều thuộc tính) và mô tả của tất cả các cột (trường).
4 Thiết kế CSDL vật lý Thiết kế các bảng
Các yêu cầu về việc thiết kế các trường: • Tiết kiệm không gian nhớ, • Biểu diễn được mọi giá trị có thể, • Cài đặt các ràng buộc toàn vẹn của dữ liệu, • Đặt giá trị mặc định (Default) để giảm thiểu thời gian
77
nhập dữ liệu.
4 Thiết kế CSDL vật lý Thiết kế các bảng
Chọn kiểu dữ liệu và độ rộng của trường • Hầu hết các hệ quản trị cơ sở dữ liệu thương mại đều cung cấp cho người dùng các kiểu dữ liệu thông dụng như: text, number, logical, date, time,... Khi chọn kiểu dữ liệu và độ rộng trường nên chọn đúng kiểu và khai báo độ rộng vừa đủ, không nên làm phức tạp cấu trúc dữ liệu của hệ thống.
Các quan hệ: • Các quan hệ giữa các bảng sẽ được thiết lập bởi các
khóa ngoài.
cài đặt.
78
• Cần phải đảm bảo là cái ràng buộc khóa ngoài sẽ được
4 Thiết kế CSDL vật lý Xem xét hiệu suất thực thi CSDL
Cần phải đánh giá việc thực thi CSDL, đó là tính hợp lý của thời gian đáp ứng các câu hỏi truy vấn. • Chạy thử CSDL với một tập đủ lớn các bản ghi trong
• Mô phỏng một số người dùng cùng thực hiện một truy
môi trường thực tế.
vấn trong CSDL đa người sử dụng.
qua lâu.
79
• Chạy trộn lẫn một số chức năng trong thời gian không
4 Thiết kế CSDL vật lý Xem xét hiệu suất thực thi CSDL
– Chỉ số - index
• Xác định một số chỉ số trong CSDL là một vấn đề quan
trọng cần quan tâm khi thiết kế CSDL. • Một chỉ số duy nhất cho mỗi khóa chính, • Một chỉ số trên mỗi khóa ngoài, • Những dữ liệu được truy nhập thường xuyên cũng cần
• Với chỉ số ghép trên nhiều cột cần phải cung cấp thứ tự
phải tạo chỉ số,
80
các cột.
4 Thiết kế CSDL vật lý Xem xét hiệu suất thực thi CSDL
Ưu điểm việc sử dụng chỉ số: • Tăng tốc độ tìm kiếm và khôi phục các bản ghi, • Có hiệu suất cao trong việc truy nhập nhiều bảng, • Tạo các cách sắp xếp khác nhau trên cùng một bảng, • Tạo nhiều mức sắp xếp bằng cách tạo một chỉ số trên
một số cột.
Hạn chế: • Cần không gian để lưu giữ các chỉ số, • Tốn thời gian cập nhật tất cả các chỉ số khi cập nhật dữ
81
liệu.
4 Thiết kế CSDL vật lý Xem xét hiệu suất thực thi CSDL
– Dạng không chuẩn
• Trong khi một cơ sở dữ liệu chuẩn thường linh hoạt và có hiệu suất cao trong các ứng dụng trực tuyến, như hệ thống đặt hàng. Tuy nhiên, có những tình huống nhất định, khi chạy các loại truy vấn đối với một cơ sở dữ liệu chuẩn (3NF hoặc 4NF) sẽ dẫn đến sự tham gia số lượng lớn các bảng liên kết, làm tăng chi phí và làm chậm hiệu suất.
82
• Khi đó cần phải không chuẩn hóa một số thực thể để
tăng hiệu suất.
4 Thiết kế CSDL vật lý Xem xét hiệu suất thực thi CSDL
– Dạng không chuẩn
• Phân rã: Căn cứ vào yêu cầu sử dụng nếu có những cột thuộc tính hay dùng và ít dùng hoặc vì một lý do nào đó (ví dụ để bảo mật) thì phân rã chúng ra. Những cột thuộc tính hay dùng cho vào cùng một bảng.
• Gộp hai hay nhiều bảng khi việc sử dụng chúng thường
83
đi liền với nhau.
4 Thiết kế CSDL vật lý Xem xét hiệu suất thực thi CSDL
– Dạng không chuẩn
84
• Lặp lại các cột thuộc tính từ các bảng khác nhau, thêm một số cột thuộc tính suy diễn vào bảng (ví dụ: thành tiền, tổng tiền) nếu nó được truy vấn thường xuyên. • Lập các bảng chỉ dẫn căn cứ vào đường truy nhập và theo các cột thuộc tính có tần số sử dụng cao. Thêm một số bảng để lưu trữ các thông tin kết quả truy vấn sẽ được sử dụng lại.
4 Thiết kế CSDL vật lý Điều chỉnh thực thi CSDL
đĩa.
• Đảm bảo điều khiển tương tranh trong CSDL đa người sử
dụng.
• Tạo ra các view của CSDL cho từng đối tượng người dùng. • Xác định sự phân tán dữ liệu và xử lý giữa các client và
85
server trong một hệ thống phân tán.
– Dạng không chuẩn • Tạo các thủ tục sao lưu và phục hồi CSDL. • Tổ chức bảo trì và bảo mật cho CSDL. • Thiết lập các ràng buộc toàn vẹn cho CSDL. • Xác định không gian nhớ cho các bảng CSDL và các chỉ số. • Thiết lập vùng nhớ đệm cho CSDL. • Phân cụm CSDL, tổ chức lưu trữ vật lý tối ưu cho CSDL trên
TÓM TẮT
Thiết kế CSDL logic Thiết kế CSDL vật lý
86
Chương 5. Phân tích và thiết kế cơ sở dữ liệu 5.1 Mô hình thực thể - liên kết 5.2 Mô hình quan hệ 5.3 5.4 5.5 Một số bài tập hệ thống ứng dụng
Questions
87
https://sites.google.com/site/daonamanhedu/teaching/softw areanalysisanddesign