1. Trang chủ
  2. » Công Nghệ Thông Tin

Giáo trình Cơ sở dữ liệu nâng cao (Nghề Lập trình máy tính): Phần 2 - Tổng cục dạy nghề

49 15 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 49
Dung lượng 3,07 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tiếp nối phần 1, phần 2 của giáo trình cung cấp cho người học những kiến thức về cách chuyển đổi sơ đồ ER thành lược đồ cơ sở dữ liệu quan hệ. Định nghĩa khung nhìn. Giải thích các vấn đề liên quan đến sự nhìn bao gồm: độc lập dữ liệu, an toàn, cập nhật. Sử dụng QBE dạng căn bản để tìm thông tin trong một quan hệ. Sử dụng QBE tìm thông tin trong nhiều quan hệ.

Trang 1

5.2 Thiết kế QUERY

5.2.1 QUERY đơn (SELECT QUERY )

5.2.2 Lập tiêu chuẩn lựa chọn trong query

5.2.3 Sử dụng Field tính toán trong query

- Bảng kết quả của một Query gọi là Dynaset Một Dynaset không phải là một bảng dữ liệu thực sự nhưng trong một số trường hợp nó có thể tác động thay đổi dữ liệu ngược lại lên Table

5.1.2 Dạng thức

Có rất nhiều kiểu Query trong Access Tùy từng trường hợp cụ thể mà ta chọn loại

Query phù hợp

1) Select query (Query truy vấn dữ liệu): loại Query này được sử dụng rất phổ biến,

nó được dùng nhằm để chọn lựa ra các mẫu tin thoả mãn một điều kiện nào đó, ngoài ra còn cho phép tạo thêm các field tính toán và kết nhóm số liệu

2) Update Query (Query cập nhật số liệu): dùng để thay đổi dữ liệu đồng loạt trên

một hay nhiều dòng của một hay nhiều bảng Ví dụ muốn sửa điểm anh văn cho các sinh

viên có tham dự kỳ thi học kỳ 2 thuộc lớp tin học

3) Delete Query (Query xoá dữ liệu ): xoá một hay nhiều mẩu tin từ nhiều bảng Ví

dụ: ta có thể dùng delete Query để xoá danh sách các sinh viên đã nghỉ học của một lớp

hay toàn trường

4) Find Duplicate Query : Query tìm các mẩu tin trùng dữ liệu với nhau trong một

bảng Ví dụ: tìm tất cả các sinh viên có họ tên trùng nhau thì sử dụng Find Duplicate Query 5) Find Unmatched Quer (Query tìm các mẫu tin không khớp với nhau): tìm trong

bảng này những mẫu tin mà mà giá trị của một field nào đó mà giá trị không trùng khớp giá trị với bất cứ mẫu tin nào khác trong bảng thứ hai Giả sử vì một lý do nào đó mà khi ta nhập điểm môn học của sinh viên, ta nhập không đúng mã sinh viên của một sinh viên Do đó, khi

in ra bảng điểm vì không tìm được mã sinh viên tương ứng trong Table sinh viên nên cột họ

Trang 2

và tên bị trống Để biết được dữ liệu gõ sai thuộc sinh viên nào, ta sử dụng Find Unmatched

Query

6) Crosstab Query (Query Tham chiếu chéo): dùng để kết nhóm dữ liệu theo một chỉ

tiêu nào đó Nó giúp ta tổng hợp số liệu từ một đến nhiều chỉ tiêu theo hàng, trên mỗi hàng lại tổng hợp một (chỉ một) chỉ tiêu khác theo cột, vùng giao nhau giữa cột và hàng thì thể

hiện trị số tổng hợp của một (Chỉ một) chỉ tiêu thứ 3

Ví dụ: yêu cầu cho biết số lượng vật tư nhập xuất trong mỗi ngày cụ thể là bao nhiêu, bên cạnh số tổng vật tư đó còn phải cho biết đó là những vật tư nào Kết quả của Crosstab Query trả về như sau:

G

M H1

7) Append Query (Query nối số liệu): nối thêm số liệu từ một hoặc nhiều bảng

8) Make Table Query (Query tạo bảng): dùng để lập các bảng dự phòng, trích rút dữ

liệu từ một Table để lưu trữ trước khi xoá các mẫu tin này ra khỏi Table hiện hành

9) Union Query (Query hợp số liệu): gom, nối đuôi số liệu từ hai hay nhiều bảng

thành một danh sách để xem chung

10) Data Define Query (Query định nghĩa dữ kiện): sử dụng lệnh của ngôn ngữ SQL

để tạo hoặc sửa đổi cấu trúc của một bảng

Trang 3

100 & “năm cô đơn”

“hôm nay” &Date()

“phim” &202/2 &”chó đốm

Tin Học

100 nămcô đơn hôm nay:21/11/2004 phim 101 chó đốm + Cộng hoặc ghép

Is Chính là Opject này chính là Object kia

rơivào trong

[Software] In (“Windows”,”Word”,”Excel”) Weekday([Ngay]) In (2,4,6)

Toán tử In chỉ dùng trong ngôn ngữ SQL Between

… And

Thuộc trong khoảng

[Diem] Between 0 and 10 [Ngay] between #01/10/1998# And #21/10/1998# Like Hao hao giống Biểu thức sử dụng toán tử Like thường sử dụng những

Trang 4

And Và Tất cả điều kiện đúng thì kết quảnhận GT đúng

Or Hoặc Chỉ cần 1 điều kiện đúng thì kết quả nhận GTđúng Xor Loại trừ A Xor B: A, B khác nhau thì đúng

Muốn truy cập đến một đối tượng thì ta dùng toán tử: !

Ví dụ: [Form]![Nhap DSNV]![MANV]: truy cập đến Object MANV của Form Nhap DSNV

Muốn truy xuất tới một thuộc tính của Object ta dùng dấu chấm ‘.’

Ví dụ: [MANV].Visible : thuộc tính Visible của đối tượng MANV

Các dấu rào :

”…” : Rào cho giá trị chuỗi

[…] : Rào tên biến (tên Control)

#….# : Rào giá trị ngày Ví dụ : Ngaysinh = #11/02/71#

BÀI TẬP THỰC HÀNH

Dựa trên cơ sở dữ liệu bán hàng

1 Thiết kế một query có tên QBT1 liệt kê danh sách các đơn đặt hàng được lập ra trong tháng 2 năm 1992

2 Thiết kế một query có tên QBT2 liệt kê danh sách các đơn đặt hàng được lập cho khách hàng

có mã là AGROMAS

3 Thiết kế một query có tên QBT3 thể hiện danh sách các đơn đặt hàng do nhân viên có mã số

là 4 lập ra

4 Thiết kế một query có tên QBT4 liệt kê danh sách khách hàng ở cần thơ

5 Thiết kế một query có tên QBT5 liệt kê danh sách các đơn đặt hàng của tất cả các khách hàng

ở cần thơ

Thiết kế một query có tên QBT6 liệt kê danh sách các đơn đặt hàng đặt mua mặt hàng rượu

Trang 5

7 Thiết kế một query có tên QBT7 liệt kê danh sách các đơn đặt hàng có ngày lập đơn đặt hàng

và ngày nhận hàng cách nhau không quá 60 ngày

8 Thiết kế một query có tên QBT8 liệt kê danh sách các đơn đặt hàng đặt mua mặt hàng rượu hoặc bơ

9 Thiết kế một query có tên QBT9 liệt kê danh sách các khách hàng có 2 ký tự cuối của mã KH

là :”CO” ở thành phố Nha Trang

5.2 Thiết kế QUERY

5.2.1 QUERY đơn (SELECT QUERY )

 Dòng Field: chứa tên cột của bảng hoặc một biểu thức tính toán

 Dòng Table : chứa tên bảng Đễ trống khi cột chứa biểu thức tính toán

 Dòng Show : quyết định các field nào hiển thị trong bảng kết quả

 Dòng Short :Chỉ định thứ tự sắp xếp các Record kết quả theo nguyên tắc thứ tự sắp xếp các field từ trái sang phải

 Dòng Criteria: chỉ định các tiêu chuẩn lựa chọn của Query

 Dòng Or :d ùng kết hợp các phép tuyển Logic trong lựa chọn

 Dòng Sub Total: Dùng để nhóm các dòng trong kết quả Query

- Sefl Join : là kiểu liên kết một bảng dữ liệu với chính nó (Trong Query ta phải thêm một bảng vào 2 lần) trong đó một mẫu tin của bảng dữ liệu sẽ liên kết với những mẫu tin của chính bảng này Khi ấy, tất cả các mẫu tin của bảng mà các giá trị của vùng liên kết bằng nhau đều được đưa vào kết quả của Query

- Chú ý: nếu ta chọn 2 Table tham gia vào Query mà không khai báo mối quan hệ giữa chúng, rồi chọn các field từ 2 bảng đưa vào vùng lưới Access sẽ sẽ liên kết dữ liệu một cách không có ý nghĩa

ta nhận được kết quả sai Cụ thể Access sẽ lấy tích Decard của 2 bảng này làm kết quả cho Query

5.2.2 Lập tiêu chuẩn lựa chọn trong query

1) Dùng kiểu Text làm tiêu chuẩn chọn lựa

ShipCity “London” Or “Hedge End” Trình bày các đơn hàng đến London hoặc Hedge End

ShippedDate Between #1/5/95# and

#1/10/65#

Trình bày các đơn hàng vận chuyển trong những ngày từ 1/5 đến 1/10 năm 95

ShipCountry In(“Canada”,”UK”) Trình bày các đơn hàng đến Canada hoặc UK

ShipCountry Not “USA” Các đơn hàng đến những nước khác Mỹ

ShipName Like “S*” Các đơn hàng chuyển đến khách hàng có tên bắt đầu là S

CompanyName >=”N” Các đơn hàng đến công ty có tên bắt đầu từ N -> Z

OrderID Right([OrderID,2])=”99” Các đơn hàng có mã kết thúc là 99

CompanyName Len([CompanyName])>Val(3

0)

Các đơn hàng đến công ty có tên dài hơn 30 kí tự

Trang 6

2) Dùng biểu thức tính toán kiểu ngày làm tiêu chuẩn lựa chọn :

RequiredDate Between Date() And

DateAdd(“m”,3,Date())

Trình bày các đơn hàng yêu cầu trong khoảng ngày hôm nay đến 3 tháng sau OrderDate <Date()-30 Các đơn hàng trước 30 ngày kể từ ngày

hôm nay OrderDate Year([OrderDate])=1996 Trình bày các đơn hàng trong năm 1996 OrderDate Datepart(“q”,[ OrderDate])=4 Các đơn hàng trong quý 4

OrderDate DateSerial(Year([OrderDate]),Month(

[OrderDate])+1,1)-1

Các đơn hàng đặt trong ngày cuối của mỗi tháng

OrderDate Year([OrderDate])=year(Now()) And

Month ([OrderDate]) = Month(Now())

Các đơn hàng trong năm và tháng hiện hành

3) Biểu thức sử dụng Field trống (Null,””) làm tiêu chuẩn lựa chọn

Field Expresstion Decription

ShipRegion IS NULL Các đơn hàng đến vùng có mã trống

ShipRegion Is Not Null Các đơn hàng đến những vùng khác trống

Fax “” Các đơn hàng của khách hàng không có máy Fax

4) Dùng một phần Field làm tiêu chuẩn chọn lựa

ShipName Like “S*” Đơn hàng chuyển đến khách hàng có tên bắt

đầu là S ShipName Like “*Imports” Đơn hàng chuyển đến khách hàng có tên kết

thúc là vtừ Imports ShipName Like “[A-D]*” Đơn hàng chuyển đến khách hàng có tên bắt

đầu từ A-D ShipName Like “*ar*” Đơn hàng chuyển đến khách hàng có tên chứa

2 ký tự …ar…

ShipName Like “Maison Dewe?” Đơn hàng chuyển đến khách hàng có tên mà

phần đầu là Maison phần thứ 2 có 5 kí tự mà kí

tự thứ 5 không biết

5) Dùng kết quả các hàm tập hợp trên vùng làm tiêu chuẩn lựa chọn

Freight >Davg(“[Freight]”, “Orders”) Tìm đơn hàng có phí chuyên chở

lớn hơn giá trị trung bình của chúng

Quatity >Daverage(“[Quatity]”, “OrderDetail”) Tìm các đơn hàng có số lượng lớn

hơn giá trị trung bình của chúng

Trang 7

6) Dùng SubQuery làm tiêu chuẩn lựa chọn

UnitPrice (SELECT [UnitPrice] FROM

[Product]WHERE [ProductName]=”Aniseed Syrup”)

Tìm những sản phẩm có đơn giá = đơn giá sản phẩm tên là Aniseed Syrup

UnitPrice >(SELECT [UnitPrice] FROM

Tìm cácđơn hàng có giá trị lớn hơn giá trị trung bình

7) Dùng nhiều tiêu chuẩn lựa chọn trong Query

- Một Field dùng Or: Lập danh sách các khách hàng ở vùng SP hoặc RJ

- Một Field dùng And: lập danh sách khách hàng có tên bắt đầu là “The” và có từ “Box”

Trang 8

- Hai Field dùng Or

- Hai Field dùng Or

- Ba Field dùng And và Or:

5.2.3 Sử dụng Field tính toán trong query: Nhập biểu thức tính toán vào vào ô Field trong query

1) Sử dụng biểu thức Text làm Field tính toán

Trang 9

Biểu thức Mô tả

Fullname:[Firstname] &”” & [Lastname] Thêm cột Fullname là sự kết hợp giữa 2 cột

FirstName và Last Name cách nhau 1 khoảng trống Address2: [City]&””&[Region] :

ProductInitial: Left([ProductName],1) Tạo cột mới tên: ProductInitial lấy 1 ký tự từ

cột Productname TypeCode: Right([AssetCode], 2) :

- Avg: tính giá trị trung bình

- Count: Đếm số mẫu tin

- First : Giá trị của vùng thuộc mẫu tin đầu tiên trong bảng dữ liệu

- Last : Giá trị của vùng thuộc mẫu tin cuối trong bảng dữ liệu

- Max : tính giá trị lớn nhất của những giá trị thuộc một vùng dữ liệu kiểu số

- Min : tính giá trị nhỏ nhất của những giá trị thuộc một vùng dữ liệu kiểu số

- StdDev: tính độ lệch chuẩn của những giá trị thuộc một vùng dữ liệu kiểu số

Ngoài ra , khi cần có thể chọn Group By, Where, Expression

Table OrderDatails OrderDetails

Trang 10

Nhóm nhiều cấp :Tính tổng số lượng và sản p[hẩm mà khách hàng đã mua đối với từng chủng loại sản phẩm

Field CatergoryID ProductID Quatity SUMOFPRICE:[UnitPrice]*[Quatity]

Table Products OrderDatails OrderDetails

Lưu ý :thứ tự thực hiện phép nhóm là từ trái sang phải

c) Tiêu chuẩn lựa chọn trong Group By

Tương tự như select query ta có thể lập điều kiện chọn lựa đối với vùng dữ liệu để lựa

chọn và lọc ra các mẫu tin thoả điều kiện yêu cầu trong ô Criteria

Ví dụ : cho biết mỗi khách hàng đặt mua bao nhiêu sản phẩm có chủng loại 4 OR 5

d Lập tiêu chuẩn giới hạn những mẫu tin trước khi tính tổng

- Tính tổng trước, giới hạn mẫu tin sau

Trình bày những mẫu tin mà số lượng > 950 và giá trị của sản phẩm thuộc từng chủng loại khác 4 và 5 mà mỗi khách hàng đã đặt mua

- Giới hạn mẫu tin sau, Tính tổng sau: sử dụng mục chọn Where

Trang 11

BÀI TẬP THỰC HÀNH: SELECT QUERY

10 Thiết kế query có tên QBT10 để liệt kê danh sách các đơn đặt hàng được lập ra trong

13 Thiết kế query có tên QBT13 hiển thị thông tin chi tiết về mỗi đơn đặt hàng bao gồm

mã hàng :mã đơn đặt hàng, tên các mặt hàng trong đơn đặt hàng , đơn giá, số lượng thành tiền, số ngày, tổng số tiền trả trước, tổng số tiền còn lại, biết rằng :

Thanhtien: ([soluong]*[dongia]*(1-[chietkhau])/100)*100

Số ngày: Ngày lập ĐĐH đến ngày nhận hàng

Tổng số tiền trả trước được tính như sau :

- Nếu số ngày < 20: tổng số tiền trả trước bằng 20 % thành tiền

- Nếu số ngày < 30: tổng số tiền trả trước bằng 30% thành tiền

- Nếu số ngày < 40: tổng số tiền trả trước bằng 40% thành tiền

Tổng số tiền còn lại là số tiền phải trả nhưng giảm đi 5 %

Sắp thứ tự tăng dần theo mã đơn đặt hàng

14 Thiết kế query có tên QBT14 liệt kê những đơn đặt hàng đã lập cho các khách hàng tại cần thơ có mặt hàng là rượu và có số lượng > 100

15 Thiết kế query có tên QBT15 liệt kê những đơn đặt hàng đã lập cho các mặt hàng là gia vị trong năm 1992 với số tiền lớn nhất

16 Thiết kế query có tên QBT16 :cho biết các khách hàng đã đặt bao nhiêu đơn đặt hàng, tổng số tiền của những đơn đặt hàng đó

Trang 12

17 Thiết kế query có tên QBT17:tính tổng số tiền của các đơn đặt hàng mỗi tháng

18 Thiết kế query có tên QBT18:cho biết mỗi khách hàng có bao nhiêu đơn đặt hàng có

5.3.1 Query có thông số (PARAMETER QUERY) : Một Parameter Query trình bày một hay

nhiều hộp thoại yêu cầu nhập thông số mỗi lần chạy

Để tạo một Query thông số ta làm như sau:

- Tạo Query select

- Trong cô Criteria của các Field cần sử dụng thông số, gõ vào dòng nhắc nhở bên trong cặp ngoặc vuông [] Access sẽ trình bày dòng nhắc xnhở trước khi chạy và một hộp Text Box để nhập thông số Text trong dòng nhắc phải khác với tên Field nhưng có thể chứa tên Field

Chú ý : Ta phải khai báo kiểu của thông số trong hộp thoại thông số bằng cách chọn Query -> Parameter

Ví dụ :

Cách sử dụng Parameter trong SQL

SELECT Orders.OrderDate

FROM Orders

WHERE Orders.OrderDate Between [NHAP NGAY BAT DAU:]

And [NHAP NGAY KET THUC:];

5.3.2 CROSSTAB QUERY : CrossTab Query tính tổng, trung bình, số lượng hoặc các kiểu

tổng kết dữ liệu khác bằng cách nhóm hai kiểu thông tin : một theo chiều dọc ở cạnh trái theo chiều đứng Thông tin còn lại theo chiều ngang

Tạo CrossTab Query như sau :

Trang 13

- Xác địnhCác Field nào mà giá trị sẽ là tiêu đề cột

- Xác định các Field nào mà giá trị sẽ là tiêu đề dòng

- Các Field chxứa giá trị dùng đểthống kê : count, sum, avg., …

Với ví dụ này, trình tự thực hiện như sau:

- Tạo Query thống kê tổng số tiền bán được của mổi sản phẩm do mỗi nhân viên lập

- Lưu lại Query trên

- Tạo một Query mới , vào Query -> CrossTab Query Nguồn dữ liệu của CrossTab Query là Query thống kê đã tạo

- Xác định dòng , cột, value hiển thị trong CrossTab Query

Trang 14

- Click Run để xem kết quả vừa tạo

5.3.3 SUB QUERY

1) Sub Query trả về giá trị đơn

- Có thể đặt Sub Query bất kỳ nơi nào đặt biểu thức

- Trong mệnh đề Where dùng Sub Query với toán tử bằng

- Nếu Sub Query trả về nhiều hơn một giá trị thì sẽ nhận lỗi

Ví dụ : tìm tất cả các khách hàng có hoá đơn vào ngày gần nhất

Cú Pháp SQL:

SELECT Orders.OrderID, Orders.CustomerID, Orders.OrderDate

FROM Orders

WHERE Orders.OrderDate = (select max(orderDate) from Orders);

2) Sub Query trảvề danh sách các giá trị

- Trong mệnh đề Where dùng toán tử IN với Sub Query

5.3.4 MAKE TABLE QUERY

Trang 15

1) Công dụng :

- Tạo một bảng để xuất (Export) đến một Database khác của Access

- Tạo một báo cáo dữ liệu vào một thời điểm nhất định

- Tạo một bản sao lưu dự phòng

- Tạo một bảng để lưu trữ các Record khác

- Tăng tốc độ thực hiện của From, Report

2) Cách tạo:

- Tạo một select Query

- Trong chế độ thiết kế chọn Query -> Make Table Query

- Nhập tên bảng muốn tạo trong hộp thoại Table Name

- Chọn Current Database nếu muốn lưu bảng mới tạo vào CSDL hiện hành hoặc Another và tên của Database muốn đặt bảng vào đó

- Sau khi hoàn chỉnh Query có thể xem trước bảng trước khi tạo nó bằng cách Click vziew Button trên thanh Toobar

- Để bắt đầu tạo bảng click Run trên thanh Toolbar

Ghi chú : Dữ liệu trên bảng mới tạokhông thừa hưởng các tính chất của Field hay khoá

chính trên bảng củ

5.3.5 UPDATE QUERY: Thay đổi một nhóm các Record trong một hay nhiều bảng đang tồn

tại

Cách tạo:

Trang 16

- Tạo 1 Query đơn, chọn các bảng hay Query chứa nhiều dòng cần cập nhật và chứa các Field dùng để chỉ định tiêu chuẩn

- Trong chế độ thiết kế chọn Query -> Update Query

- Kéo các Field cần thiết để xác lập điều kiện vào lưới thiết kế

- Điền các tiêu chuẩn lựa chọn trong dòng Criteria

- Trong ô Update To của các Field muốn cập nhật, nhập biểu thức hay giá trị dùng để thay đối các Field

- Sau khi hoàn chỉnh Query ta có thể xem trước bảng bằng cách click vào View Button trên Toolbar

- Để bắt đầu tạo bảng click Ru n trên Toolbar

Ví dụ: tạo Update Query tăng sản phẩm có mã là 4 lên 10%

5.3.6 DELETE QUERY : Xoá các mẫu tin từ một hoặc nhiều bảng

Cách tạo:xoá dòng từ một hoặc nhiều bảng có quan hê(

- Tạo 1 Query đơn, chọn các bảng hay Query chứa nhiều dòng cần cập nhật và chứa các Field dùng để chỉ định tiêu chuẩn

- Trong chế độ thiết kế chọn Query -> Delete Query

- Đối với các bảng cần xoá record trong chúng Kéo dấu * vào lưới thiết kếtừ From sẽ xuất hiện trong ô Delete dưới các Field này

- Kéo các Field dùng làm tiêu chuẩn thiết kế, từ Where sẽ xuất hiện trong ô Delete dưới những ô này

- Điền các tiêu chuẩn lựa chọn trong dòng Criteria

- Sau khi hoàn chỉnh Query ta có thể xem trước bảng bằng cách click vào View Button trên Toolbar

- Để bắt đầu tạo bảng click Ru n trên Toolbar

Trang 17

Ghi chú :

- Nếu ta thực hiện 1 Delete Query trên 1 bảng bên 1 trong mối quan hệ 1-n và tùy

chọn Casede Delete Related Record có hiệu lực, Access sẽ xoá luôn các dòng của các

bảng có quan hệ bên nhiều

- Nếu cần đính kèm cả bảng bên nhiều theo cùng với bảng bên một , để thêm cột tiêu chuẩn, phải thi hành Query hai lần vì Query không thể xoá 2 bảng cùng lúc

Đầu tiên thiết kế Query xoá các Record trong bảng bên nhiều

Gỏ bỏ các Fiel List nở bảng nhiều trong lưới thiết kế, saqu đó thi hành Query lần thứ 2 xoá các Record trong bảng bên một

Ví dụ: tạo Delete Query xoá các đơn hàng lập từ năm 94 từ bảng Orders94

5.3.7 UNION QUERY

1 Tổ hợp các Field từ 2 hay nhiều bảng vào một Field

Ví dụ: Union Query sau sẽ trả về tên công ty thành phố từ hai bảng Nhà cung cấp và

khách hàng

2 Cách tạo 1 Union query:

- Tạo một select Query

- Không thyêm bảng vào Query , click New để đóng hộp thoại

- Chọn query -> SQL Specific -> Union

- Nhập các lệnh SQl nối nhau bằng toán tử UNION nếu ta không lấy các dòng trùng nhau từ hai bảng này Ngược lại, lấy các dòng trùng nhau từ hai bảng chọn UNION ALL

- Nếu cần chỉ ra trật tự sắp xếp trong 1 Unuio Query , thêm mệnh đề Order By vào cuối củalệnh SQL sau cùng Trong mệnh đề nàyxác định tên field cần sắp xếp, tên Field này phải có mặt trong lệnh SQL đầu tiên

- Click nút lệnh View trên Toolbar để xem kết quả

Trang 18

-

1) Sắp xếp trong Union Query

SELECT City, CompanyName, ContactName, "Customers" AS [Relationship]

21 Tính tổng số tiền của các đơn đặt hàng mỗi tháng

22 Cho biết mỗi khách hàng có bao nhiêu đơn đặt hàng

23 Cho biết mỗi khách hàng có bao nhiêu đơn đặt hàng > 500000

24 Hãy cho biết những khách hàng có số tiền mua lớn hơn 1.000.000

25 Tính giá trị hàng hoá của hoá đơn mua hàng có mã hoá đơn là 1

26 Cho biết mỗi khách hàng đã đặt mua bao nhiêu hoá đơn và tổng tiền của các hoá đơn đó

27 Tính tổng số tiền của các hoá đơn mổi tháng trong năm 99

28 Hãy cho biết mặt hàng có giá cao nhất

29 Hãy cho biết mặt hàng có giá thấp nhất

30 Cho biết mỗi nhân viên đã lập bao nhiêu hoá đơn mỗi ngày

Trang 19

31 Cho biết mỗi thành phố có bao nhiêu khách hàng

32 Hãy cho biết tổng doanh thu trong mỗi năm

33 Cho biết mỗi năm có bao nhiêu hoá đơn và tổng doanh thu trên hoá đơn đó

Thiết kế Parameter Query thực hiện các yêu cầu sau :

34 Tham khảo các hoá đơ.n mua hàng của khách hàng nào đó đã đặt hàng cho công ty Thông số yêu cầu [HAY CHO BIET MA KHACH HANG ?]

35 THAM khảo hoá đơn mua hàng trong một thời gian nào đó Thông số yêu cầu: [NHAP NGAY DAU:], [NHAP NGAY CUOI]

Thiết kế Query CrossTab thực hiện các yêu cầu sau:

36 Cho biết tổng số tiền mua mỗi sản phẩm của mỗi khách hàng bao gồm các thông tinsau: MAKH, tên mỗi mặt hàng , mổi sản phẩm trình bày thành một cột

37 Thống kê những sản phẩm đã bán cho những khách hàng tại thành phố HCM gồm các thông tin sau : số hoá đơn lập cho từng sản phẩm, tổng số tiền thu được, t63ng số tiền thu trong từng quý Mỗi quý trình bày 1 cột

38 Thống kê số liệu cho từng sản phẩm đã bán bao gồm các thông tin sau:

- tổng số hoá đơn đã lập cho mỗi sản phẩm

- tổng số lượng bán ra

- tổng số tiền thu được

Thiết kế Query vấn tin hành động (Make Table Query ) thực hiện các yêu cầu sau:

39 thiết kế Query tạo bảng chứa các dữ liệu MAHD, MAKH, NGAYHD, DONGIA của các hoá đơn trong năm 99 từ bảng hoá đơn

40 thiết kế Query thực hiện lư udanh sách của các khách hàng

41 thực hiện lưu danh sách của sản phẩm có mã chủng loại là 1

42 thực hiện tạo bảng lưu những hoá đơn đã lập trong năm 99

Thiết kế Query vấn tin xoá dữ liệu (DeleteTable Query ) thực hiện các yêu cầu sau:

Lưu ý: trước khi thực hiện Delete Query trên bảng nào , hãy dùng Query Make table tạo

ra các bảng dự phòng đó

43 thiết kế Query xoá những hoá đơn lập vào năm 2000

44 thiết kế Query xoá những sản phẩm mà công ty ngưng cung cấp

Thiết kế Query vấn tin Nối dữ liệu (Append Table Query ) thực hiện các yêu cầu sau:

45 nối vào bảng đã tạo trong câu 42 những hoá đơn trong năm 2000 lấy từ bảng hoá đơn

Thiết kế Query vấn tin cập nhật dữ liệu (UpdateTable Query ) thực hiện các yêu cầu sau:

46 nâng giá cho những sản phẩm có mã là 1 đã tạo trong bài tập 41 lên 10%

Trang 20

BÀI 6 THIẾT KẾ CƠ SỞ DỮ LIỆU VỚI CÁC DẠNG CHUẨN Mã bài : ITPRG3_02.6

Giới thiệu :

Mục tiêu thực hiện:

Học xong bài này học viên sẽ có khả năng:

- Mô tả được bốn vấn đề bất thường về dữ liệu

- Phân rã lược đồ bao gồm: nối không mất thông tin và duy trì các phụ thuộc

- Định nghĩa được chính xác phụ thuộc hàm, bao đóng

- Biết cách áp dụng các luật của hệ tiên đề Armstrong để tìm các phụ thuộc hàm được suy

ra logic từ tập các phụ thuộc hàm đã cho

- Biết cách áp dụng thuật toán bao đóng để tìm bao đóng của tập các thuộc tính đã cho

- Phát biểu và giải thích các dạng chuẩn 1NF, 2NF, 3NF và BCNF

- Dùng các dạng chuẩn để phân rã một lược đồ quan hệ thành các lược đồ con ở các dạng chuẩn

- Phân tích các yêu cầu nối không mất thông tin và duy trì các phụ thuộc trong quá trình chuẩn hóa bằng sự phân rã

Nội dung chính:

6.1 Dạng chuẩn của lược đồ quan hệ (normal forms for relation schemes)

6.2 Phép tách kết nối bảo toàn

6.2.1 Phép tách kết nối bảo toàn thông tin (lossless-join decomposition)

6.2.2 Phép tách bảo toàn phụ thuộc hàm

6.3 Thiết kế csdl bằng cách phân rã

6.3.1 Phân rã thành dạng chuẩn BC (hay chuẩn 3) bảo toàn thông tin

6.3.2 Phân rã thành dạng chuẩn 3 vừa bảo toàn thông tin vừa bảo toàn phụ thuộc hàm

6.1 Dạng chuẩn của lược đồ quan hệ (normal forms for relation schemes)

Trong thực tế, một ứng dụng cụ thể có thể được thiết kế thành nhiều lược đồ cơ sở dữ liệu khác nhau, và tất nhiên chất lượng thiết kế của các lược đồ CSDL này cũng khác nhau Chất lượng thiết kế của một lược đồ CSDL có thể được đánh giá dựa trên nhiều tiêu chuẩn trong

đó sự trùng lắp thông tin và chi phí kiểm tra các ràng buộc toàn vẹn là hai tiêu chuẩn quan trọng

Sau đây là một số tiêu chuẩn để đánh giá độ tốt/xấu của một lược đồ quan hệ Trước tiên ta tìm hiểu một số khái niệm liên quan:

6.1.1 Định nghĩa các dạng chuẩn

a) Dạng Chuẩn Một (First Normal Form)

Một lược đồ quan hệ Q ở dạng chuẩn 1 nếu toàn bộ các thuộc tính của mọi bộ đều mang giá trị đơn

Ví dụ 1: Xét quan hệ

Trang 21

MASV HOVATEN KHOA TENMONHOC DIEMT

HI

99023 NGUYENTHITHU CONG NGHE THONG

TIN

KY THUAT LAP TRINH

6

Quan hệ này không đạt chuẩn 1 vì các thuộc tính TENMONHOC, DIEMTHI của bộ thứ nhất không mang giá trị đơn (chẳng hạn sinh viên NGUYEN THI THU có thuộc tính TENMONHOC là KY THUAT LAP TRINH, TOAN ROI RAC, CO SO DU LIEU)

Ta hoàn toàn có thể đưa quan hệ trên về dạng chuẩn 1 như sau:

99023 NGUYENTHITHU CONG NGHE THONG

TIN

99023 NGUYENTHITHU CONG NGHE THONG

TIN

99023 NGUYENTHITHU CONG NGHE THONG

TIN

Chú ý ràng khi xét các dạng chuẩn, nếu ta không nói gì thêm, ta hiểu dạng chuẩn đang xét ít nhất là đạt dạng chuẩn 1

b) Dạng Chuẩn 2 (Second Normal Form)

Một lược đồ quan hệ Q ở dạng chuẩn 2 nếu Q đạt chuẩn 1 và mọi thuộc tính không khóa của Q đều phụ thuộc đầy đủ vào khóa

Thuật toán kiểm tra dạng chuẩn 2

Vào: lược đồ quan hệ Q, tập phụ thuộc hàm F

Ra: khẳng định Q đạt chuẩn 2 hay không đạt chuẩn 2

Bước 1: Tìm tất cả khóa của Q

Bước 2: Với mỗi khóa K, tìm bao đóng của tất cả tập con thật sự S của K

Bước 3: Nếu có bao đóng S + chứa thuộc tính không khóa thì Q không đạt

chuẩn 2

Ngược lại thì Q đạt chuẩn 2

Ví dụ 2: Cho lược đồ quan hệ Q(A,B,C,D) và tập phụ thuộc hàm

F={ABC; BD; BCA} Hỏi Q có đạt chuẩn 2 không?

Giải:

TN={B}, TG={AC}

Trang 22

X i (TN  X i ) (TN X i ) + Siêu khóa khóa

Khóa là K1=AB và K2=BC Ta thấy BK1, BD,D là thuộc tính không khóa thuộc tính không khóa không phụ thuộc đầy đủ vào khóa  Q không đạt chuẩn 2

Ví dụ 3: Quan hệ sau đạt chuẩn 2

Trang 23

TN={ACB} TG={E}

X i (TN  X i ) (TN X i ) + Siêu khóa khóa

 khóa của Q là K = {ABC}.CK, CD, D là thuộc tính không khóa D phụ thuộc không đầy đủ vào khóa nên Q không đạt chuẩn 2

c) Dạng Chuẩn 3 (Third Normal Form)

Thuộc tính phụ thuộc bắc cầu

Q là lược đồ quan hệ, X,Y là hai tập con của Q+, A là một thuộc tính

Nói rằng A phụ thuộc bắc cầu vào X nếu cả ba điều sau thỏa:

Hoặc X là siêu khóa

Hoặc A là thuộc tính khóa

Ta chứng minh hai định nghĩa tương đương bằng cách:

Từ định nghĩa 1  không có phụ thuộc bắc cầu vào một khóa bất kỳ của Q Thật vậy: Giả sử có phụ thuộc bắc cầu vào khóa nghĩa là có K  Y,Y  A,Y K và A  KY Y  A là một phụ thuộc hàm nên theo định nghĩa 1 có hai trường hợp xảy ra cho Y:

+ Y là siêu khóa  YK điều này mâu thuẫn với Y K

+ Y không là siêu khóa  A là thuộc tính khóa  điều này trái với giả thiết A  KY

Từ định nghĩa 2  nếu XAF+ với AX thì X là siêu khóa hoặc A là thuộc tính khóa Nếu XAF+ với AX có X không là siêu khóa và A không là thuộc tính khóa thì dẫn đến một số điều sau:

A không là thuộc tính khóa  A  K

X không là siêu khóa  X K

Tóm lại ta có KX, XA,X K và A  KX 

A phụ thuộc bắc cầu vào K điều này mâu thuẫn với định nghĩa 2

Trang 24

Hệ quả 1: Nếu Q đạt chuẩn 3 thì Q đạt chuẩn 2

Hệ quả 2: Nếu Q không có thuộc tính không khóa thì Q đạt chuẩn 3

Chứng minh:

Hệ quả 1: Giả sử Q đạt dạng chuẩn 3 và có thuộc tính không khóa A không phụ thuộc hàm đầy đủ vào khóa K  K’ K sao cho K’A như vậy ta có KK’,K’A,K’ K, A  KK’ Q có phụ thuộc bắc cầu

Hệ quả 2: mọi phụ thuộc hàm trong Q đều có vế phải là thuộc tính khóa  Q đạt dạng chuẩn

3

Định lý:

Q là lược đồ quan hệ

F là tập các phụ thuộc hàm có vế phải một thuộc tính

Q đạt chuẩn 3 nếu và chỉ nếu mọi phụ thuộc hàm XAF với AX đều có

Hoặc X là siêu khóa

Hoặc A là thuộc tính khóa

Giả sử có phụ thuộc hàm XAF+ với AX sao cho X không là siêu khóa và A không là thuộc tính khóa sẽ dẫn đến A  X+  X  {các thuộc tính khóa} điều này mâu thuẫn với A  K.Trước khi chứng minh A  X+  X  {các thuộc tính khóa} ta có nhận xét sau:

X không là siêu khóa  X+ cũng không là siêu khóa Theo thuật toán tìm bao đóng, X+ được hình thành từ các Xi  ở mỗi bước Xi cũng không là siêu khóa

Bước cơ sở: X0 = X  X0  X  {các thuộc tính khóa}

Bước qui nạp: giả sử có Xi-1  X  {các thuộc tính khóa} Bao đóng Xi được hình thành do

có fj = Xj  Yj để Xi-1 Xj và Xi= Xi-1 Yj  fj = Xj  Yj là phụ thuộc hàm có Xj không là siêu khóa  fj = Xj  Yj là phụ thuộc hàm có Yj là thuộc tính khóa  Xi= Xi-1 Yj  X  {các thuộc tính khóa}

Qua chứng minh trên  AX+  X  {các thuộc tính khóa} A X{các thuộc tính khóa}

 A{các thuộc tính khóa} điều này nghịch lý với điều A  K

Thuật toán kiểm tra dạng chuẩn 3

Vào: lược đồ quan hệ Q, tập phụ thuộc hàm F

Ra: khẳng định Q đạt chuẩn 3 hay không đạt chuẩn 3

Bước 1: Tìm tất cả khóa của Q

Bước 2: Từ F tạo tập phụ thuộc hàm tương đương F 1tt có vế phải một thuộc tính

Ngày đăng: 18/01/2022, 09:30

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
4. Nguyễn An Tế, Giáo trình Nhập môn Cơ sở dữ liệu, Khoa Công nghệ Thông tin, Đại học KHTN, Đại học quốc gia TP.HCM 1996. Chương 1 5. Đỗ Trung Tuấn, Cơ sở dữ liệu (DataBase), NXB Giáo dục Hà nội, 1998 Sách, tạp chí
Tiêu đề: Giáo trình Nhập môn Cơ sở dữ liệu", Khoa Công nghệ Thông tin, Đại học KHTN, Đại học quốc gia TP.HCM 1996. Chương 1 5. Đỗ Trung Tuấn, "Cơ sở dữ liệu (DataBase
Nhà XB: NXB Giáo dục Hà nội
6. Lê Tiến Vương. Nhập môn cơ sở dữ liệu. NXB Thống kê Hà nội, 2000. Tái bản lần 5 Sách, tạp chí
Tiêu đề: Nhập môn cơ sở dữ liệu
Nhà XB: NXB Thống kê Hà nội
1. Giáo trình SQL Server – Trần Nguyên Phong – Trường Đại học Khoa học Huế Khác
2. Nhập môn cơ sở dữ liệu - Lê Tiến Vương - NXB Thống kê Hà nội, 2000. Tái bản lần 5 Khác
3. ASP.NET- Kỹ thuật và ứng dụng – Nhà xuất bản thống kê 2002 Khác

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm