Bai tap hp4 - sql server 2000

22
TRUNG TAÂM TIN HOÏC - ÑAÏI HOÏC KHOA HOÏC TÖÏ NHIEÂN TP. HCM 227 Nguyeãn Vaên Cöø – Quaän 5 – Tp. Hoà Chí Minh Tel: 8351056 – Fax 8324466 – Email: [email protected] Maõ taøi lieäu: DT_NCM_LT_BT_SQLSERVER Phieân baûn 1.1 – Thaùng 06/04 BAØI TAÄP CHÖÔNG TRÌNH KYÕ THUAÄT VIEÂN NGAØNH LAÄP TRÌNH Hoïc phaàn 4 SQL SERVER

Transcript of Bai tap hp4 - sql server 2000

Page 1: Bai tap   hp4 - sql server 2000

TRUNG TAÂM TIN HOÏC - ÑAÏI HOÏC KHOA HOÏC TÖÏ NHIEÂN TP. HCM

227 Nguyeãn Vaên Cöø – Quaän 5 – Tp. Hoà Chí Minh Tel: 8351056 – Fax 8324466 – Email: [email protected]

Maõ taøi lieäu: DT_NCM_LT_BT_SQLSERVER Phieân baûn 1.1 – Thaùng 06/04

BAØI TAÄP

CHÖÔNG TRÌNH KYÕ THUAÄT VIEÂN

NGAØNH LAÄP TRÌNH

Hoïc phaàn 4

SQL SERVER

Page 2: Bai tap   hp4 - sql server 2000

Baøi taäp

Hoïc phaàn 4 – SQL Server 2000 Trang 1/21

BAØI 1: TOÅNG QUAN VEÀ MICROSOFT SQL SERVER 1.1. Söû duïng tieän ích Client NetWork Utility ñeå ñònh nghóa caáu hình noái keát töø moät maùy traïm vaøo

maùy chuû SQL Server vôùi caùc thoâng tin veà maùy chuû nhö sau:

Teân maùy chuû: SQL_SVR

Ñòa chæ IP: 127.0.0.1

1.2. Söû duïng tieän ích EnterPrise Manager taïi maùy traïm ñeå ñaêng kyù quaûn trò maùy chuû SQL Server SQL_SVR. Xem xeùt caáu truùc vaø döõ lieäu cuûa caùc baûng beân trong cô sôû döõ lieäu NorthWind.

1.3. Söû duïng tieän ích Query Analyzer taïi maùy traïm ñeå thöïc hieän moät vaøi caâu leänh truy vaán choïn löïa (SELECT FROM) nhaèm ñeå xem döõ lieäu cuûa caùc baûng beân trong cô sôû döõ lieäu NorthWind.

1.4. Caøi ñaët SQL Server 2000

Baøi taäp naøy ñöôïc laøm treân maùy ñôn (taïi nhaø) hay caùc maùy tính trong phoøng thöïc haønh vôùi ñieàu kieän cho pheùp.

Chuaån bò:

Xaùc ñònh phieân baûn heä ñieàu haønh Windows cuûa maùy

Xaùc ñònh teân maùy

Xaùc ñònh ñòa chæ IP cuûa maùy (neáu maùy naèm trong maïng LAN)

Xaùc ñònh oå ñóa vaø thö muïc seõ caøi ñaët SQL Server, dung löôïng ñóa troáng

Ñóa SQL Server 2000 phieân baûn Personal

Thöïc hieän

Login vaøo heä thoáng vôùi quyeàn administrator ñeå coù theå thöïc hieän caøi ñaët

Thöïc hieän caøi ñaët SQL Server 2000 theo höôùng daãn trong giaùo trình

Sau khi caøi ñaët thaønh coâng, thöïc hieän laïi caùc baøi taäp 1.1 – 1.3

Page 3: Bai tap   hp4 - sql server 2000

Baøi taäp

Hoïc phaàn 4 – SQL Server 2000 Trang 2/21

BAØI 2: CAÙC ÑOÁI TÖÔÏNG TRONG CÔ SÔÛ DÖÕ LIEÄU 2.1. Baèng coâng cuï Enterprise Manager, taïo môùi cô sôû döõ lieäu coù teân QLBanHang (Quaûn lyù baùn haøng)

coù kích thöôùc ñöôïc moâ taû nhö sau:

a. Data File: Kích thöôùc taïo laäp 50MB; moãi laàn taêng 10MB; giôùi haïn kích thöôùc taäp tin khoâng taêng hôn 200MB.

b. Log File: Kích thöôùc taïo laäp 10MB; moãi laàn taêng 5MB; khoâng giôùi haïn vieäc taêng kích thöôùc taäp tin.

2.2. Söû duïng coâng cuï Enteprise Manager ñeå taïo caáu truùc caùc baûng coù moâ taû nhö beân döôùi trong cô sôû döõ lieäu quaûn lyù baùn haøng.

Chuù yù: Caùc coät in ñaäm vaø gaïch döôùi duøng ñeå tham khaûo trong caùc baøi taäp sau, khi baïn caàn xem caáu truùc baûng vaø xaùc ñònh coät laøm khoaù chính. Trong baøi taäp naøy, baïn khoâng caàn thieát phaûi taïo khoaù chính cho baûng.

Danh muïc Vaät tö (VATTU)

Teân coät YÙ nghóa Kieåu Ñoä roäng MaVTu Maõ vaät tö Char 4 TenVTu Teân vaät tö VarChar 100 DvTinh Ñôn vò tính VarChar 10 PhanTram Tyû leä phaàn traêm Real

Danh muïc Nhaø cung caáp (NHACC)

Teân coät YÙ nghóa Kieåu Ñoä roäng MaNhaCc Maõ nhaø cung caáp Char 3

TenNhaCc Teân nhaø cung caáp VarChar 100 DiaChi Ñòa chæ Varchar 200 DienThoai Ñieän thoaïi Varchar 20

Ñôn ñaët haøng (DONDH)

Teân coät YÙ nghóa Kieåu Ñoä roäng SoDh Soá ñôn ñaët haøng Char 4

NgayDh Ngaøy ñaët haøng, ngaøy DateTime MaNhaCc Maõ nhaø cung caáp Char 3

Chi tieát Ñôn ñaët haøng (CTDONDH)

Teân coät YÙ nghóa Kieåu Ñoä roäng SoDh Soá ñôn ñaët haøng Char 4

MaVTu Maõ vaät tö Char 4

SlDat Soá löôïng ñaët haøng Int

Page 4: Bai tap   hp4 - sql server 2000

Baøi taäp

Hoïc phaàn 4 – SQL Server 2000 Trang 3/21

Phieáu nhaäp haøng (PNHAP)

Teân coät YÙ nghóa Kieåu Ñoä roäng SoPn Soá phieáu nhaäp haøng Char 4

NgayNhap Ngaøy nhaäp haøng Datetime SoDh Soá ñôn ñaët haøng Char 4

Chi tieát nhaäp haøng (CTPNHAP)

Teân coät YÙ nghóa Kieåu Ñoä roäng SoPn Soá phieáu nhaäp haøng Char 4

MaVTu Maõ vaät tö Char 4 SlNhap Soá löôïng nhaäp haøng Int DgNhap Ñôn giaù nhaäp haøng Money

Phieáu xuaát haøng (PXUAT)

Teân coät YÙ nghóa Kieåu Ñoä roäng SoPx Soá phieáu xuaát Char 4

NgayXuat Ngaøy xuaát haøng Datetime TenKh Teân khaùch haøng Varchar 100

Chi tieát xuaát haøng (CTPXUAT)

Teân coät YÙ nghóa Kieåu Ñoä roäng SoPx Soá phieáu xuaát Char 4

MaVTu Maõ vaät tö Char 4

SlXuat Soá löôïng xuaát haøng Int DgXuat Ñôn giaù xuaát haøng Money

Toàn kho (TONKHO)

Teân coät YÙ nghóa Kieåu Ñoä roäng NamThang Naêm thaùng Char 6

MaVTu Maõ vaät tö Char 4 SLDau Soá löôïng toàn ñaàu kyø Int TongSLN Toång soá löôïng nhaäp trong kyø Int TongSLX Toång soá löôïng xuaát trong kyø Int SLCuoi Soá löôïng toàn cuoái kyø Int

Page 5: Bai tap   hp4 - sql server 2000

Baøi taäp

Hoïc phaàn 4 – SQL Server 2000 Trang 4/21

2.3. Söû duïng caùc caâu leänh INSERT INTO VALUES ñeå theâm döõ lieäu maãu vaøo caùc baûng.

Baûng NHACC

Mancc Tennhacc Diachi Dienthoai C01 Leâ Minh Trí 54 Haäu Giang Q6 HCM 8781024 C02 Traàn Minh Thaïch 145 Huøng Vöông Myõ Tho 7698154 C03 Hoàng Phöông 154/85 Leâ Lai Q1 HCM 9600125 C04 Nhaät Thaéng 198/40 Höông Loä 14 QTB HCM 8757757 C05 Löu Nguyeät Queá 178 Nguyeãn Vaên Luoâng Ñaø Laït 7964251 C07 Cao Minh Trung 125 Leâ Quang Sung Nha Trang Chöa coù

Baûng VATTU

Mavtu Tenvtu DvTinh Phantram DD01 Ñaàu DVD Hitachi 1 ñóa Boä 40DD02 Ñaàu DVD Hitachi 3 ñóa Boä 40TL15 Tuû laïnh Sanyo 150 lit Caùi 25TL90 Tuû laïnh Sanyo 90 lit Caùi 20TV14 Tivi Sony 14 inches Caùi 15TV21 Tivi Sony 21 inches Caùi 10TV29 Tivi Sony 29 inches Caùi 10VD01 Ñaàu VCD Sony 1 ñóa Boä 30VD02 Ñaàu VCD Sony 3 ñóa Boä 30

Baûng DONDH

Sodh Ngaydh Manhacc D001 01/15/2002 C03 D002 01/30/2002 C01 D003 02/10/2002 C02 D004 02/17/2002 C05 D005 03/01/2002 C02 D006 03/12/2002 C05

Baûng PNHAP Sopn Ngaynhap Sodh

N001 01/17/2002 D001 N002 01/20/2002 D001 N003 01/31/2002 D002 N004 02/15/2002 D003

Page 6: Bai tap   hp4 - sql server 2000

Baøi taäp

Hoïc phaàn 4 – SQL Server 2000 Trang 5/21

Baûng CTDONDH Sodh Mavtu SlDat

D001 DD01 10D001 DD02 15D002 VD02 30D003 TV14 10D003 TV29 20D004 TL90 10D005 TV14 10D005 TV29 20D006 TV14 10D006 TV29 20D006 VD01 20

Baûng CTPXUAT

Sopx Mavtu SlXuat DgXuat X001 DD01 2 3,500,000X002 DD01 1 3,500,000X002 DD02 5 4,900,000X003 DD01 3 3,500,000X003 DD02 2 4,900,000X003 VD02 10 3,250,000

Baûng PXUAT

Sopx Ngayxuat Tenkh X001 01/17/2002 Nguyeãn Ngoïc Phöông Nhi X002 01/25/2002 Nguyeãn Hoàng Phöông X003 01/31/2002 Nguyeãn Tuaán Tuù

Baûng TONKHO

Namthang Mavtu SLDau TongSLN TongSLX SLCuoi 200201 DD01 0 10 6 4200201 DD02 0 15 7 8200201 VD02 0 30 10 20200202 DD01 4 0 0 4200202 DD02 8 0 0 8200202 VD02 20 0 0 20200202 TV14 5 0 0 5200202 TV29 12 0 0 12

Baûng CTPNHAP Sopn Mavtu SlNhap DgNhap N001 DD01 8 2,500,000 N001 DD02 10 3,500,000 N002 DD01 2 2,500,000 N002 DD02 5 3,500,000 N003 VD02 30 2,500,000 N004 TV14 5 2,500,000 N004 TV29 12 3,500,000

Page 7: Bai tap   hp4 - sql server 2000

Baøi taäp

Hoïc phaàn 4 – SQL Server 2000 Trang 6/21

2.4. Import/Export döõ lieäu

a. Söû duïng Export wizard ñeå xuaát caùc baûng vaø döõ lieäu vöøa nhaäp

− Sang moät SQL Server database khaùc teân laø QLBanHang_Backup (chuù yù: baïn phaûi taïo môùi database ñích tröôùc)

− Sang moät MS Access database (chuù yù: baïn phaûi taïo môùi file QLBanHang.mdb tröôùc)

b. Xoaù caùc baûng trong database QLBanHang_Backup. Söû duïng Import wizard ñeå nhaäp caùc baûng döõ lieäu töø MS Acceess database QLBanHang.mdb vaøo database QLBangHang_Backup

2.5. Backup/Restore database

a. Söû duïng chöùc naêng Backup Database ñeå thöïc hieän backuup toaøn boä database QLBanHang thaønh file QLBanHang.bak. (Chuù yù: neáu ñang laøm vieäc treân maïng, baïn coù theå chæ ñöôøng daãn maïng tôùi moät thö muïc shared treân maùy cuûa baïn)

b. (Chæ thöïc hieän yeâu caàu naøy sau khi baïn ñaõ backup döõ lieäu thaønh coâng) Xoaù caùc baûng ñaõ taïo ra trong database QLBanHang. Söû duïng chöùc naêng Restore ñeå phuïc hoài döõ lieäu töø file QLBanHang.bak.

2.6. Backup döõ lieäu ra file text

a. Söû duïng leänh command line bcp ñeå xuaát döõ lieäu ra file text vaø nhaäp döõ lieäu töø file text vaøo baûng

− Cuù phaùp: bcp <table|query> <in|out|queryout> <datafile> –S<SQL Server> -U<user> -P<password>

b. Trong Query Analyzer, söû duïng caâu leänh BULK INSERT ñeå nhaäp döõ lieäu vaøo baûng töø moät file text ñaõ taïo baèng leänh bcp.

− Cuù phaùp: BULK INSERT <table> FROM <file>

2.7. Trong cô sôû döõ lieäu quaûn lyù baùn haøng, xaây döïng caùc view nhö sau:

a. Taïo view coù teân vw_DMVT bao goàm caùc thoâng tin sau: maõ vaät tö, teân vaät tö. View naøy duøng ñeå lieät keâ danh saùch caùc vaät tö hieän coù trong baûng VATTU.

b. Taïo view coù teân vw_DonDH_TongSLDatNhap bao goàm caùc thoâng tin sau: soá ñaët haøng, toång soá löôïng ñaët, toång soá löôïng nhaäp. View naøy ñöôïc duøng ñeå thoáng keâ nhöõng ñôn ñaët haøng naøo ñaõ ñöôïc nhaäp haøng ñaày ñuû.

c. Taïo view coù teân vw_DonDH_DaNhapDu bao goàm caùc thoâng tin sau: soá ñaët haøng, ñaõ nhaäp ñuû trong ñoù coät ñaõ nhaäp ñuû seõ coù 2 giaù trò laø “Ñaõ nhaäp ñuû” neáu ñôn ñaët haøng ñoù ñaõ nhaäp ñuû hoaëc “Chöa nhaäp ñuû” neáu ñôn ñaët haøng ñoù chöa nhaäp ñuû.

d. Taïo view coù teân vw_TongNhap bao goàm caùc thoâng tin sau: naêm thaùng, maõ vaät tö, toång soá löôïng nhaäp. View naøy duøng ñeå thoáng keâ soá löôïng nhaäp cuûa caùc vaät tö trong töøng naêm thaùng töông öùng. Chuù yù: khoâng söû duïng baûng TONKHO.

Page 8: Bai tap   hp4 - sql server 2000

Baøi taäp

Hoïc phaàn 4 – SQL Server 2000 Trang 7/21

e. Taïo view coù teân vw_TongXuat bao goàm caùc thoâng tin sau: naêm thaùng, maõ vaät tö, toång soá löôïng xuaát. View naøy duøng ñeå thoáng keâ soá löôïng xuaát cuûa vaät tö trong töøng naêm thaùng töông öùng. Chuù yù: khoâng söû duïng baûng TONKHO.

f. Taïo view coù teân vw_DonDH_MaVTu_TongSLNhap bao goàm caùc thoâng tin sau: soá ñaët haøng, ngaøy ñaët haøng, maõ vaät tö, teân vaät tö, soá löôïng ñaët, toång soá löôïng ñaõ nhaäp haøng

2.8. Keát hôïp caùc view ôû caâu 1, thöïc hieän caùc truy vaán choïn löïa traû lôøi caùc caâu hoûi sau:

a. Cho bieát danh saùch caùc phieáu ñaët haøng chöa ñöôïc nhaäp haøng.

b. Cho bieát danh saùch caùc maët haøng chöa ñöôïc ñaët haøng bao giôø.

c. Cho bieát nhaø cung caáp naøo coù nhieàu ñôn ñaët haøng nhaát.

d. Cho bieát vaät tö naøo coù toång soá löôïng xuaát baùn laø nhieàu nhaát.

e. Cho bieát ñôn ñaët haøng naøo coù nhieàu maët haøng nhaát.

f. Cho bieát tình hình nhaäp xuaát cuûa vaät tö thoâng tin goàm: naêm thaùng, maõ vaät tö, teân vaät tö, toång soá löôïng nhaäp, toång soá löôïng xuaát.

g. Cho bieát tình hình ñaët vaø nhaäp haøng: ñôn ñaët haøng, maõ vaät tö, soá löôïng ñaët, toång soá löôïng nhaäp.

h. Thoâng keâ tình hình ñaët haøng trong töøng ngaøy: ngaøy ñaët haøng, maõ vaät tö, teân vaät tö, toång soá löôïng ñaët haøng.

i. Thoáng keâ tình hình nhaäp haøng töông töï tình hình ñaët haøng.

j. Thoáng keâ nhöõng ñôn ñaët haøng naøo chöa ñöôïc nhaäp ñuû soá löôïng haøng.

2.9. Xaây döïng öùng duïng vôùi VB & SQL Server

a. Taïo view vw_CTDONDH duøng ñeå lieät keâ caùc chi tieát ñaët haøng cuûa moät ñôn ñaët haøng. Thoâng tin goàm: Soá ñaët haøng, Maõ vaät tö (töø baûng CTDonDH), Soá löôïng ñaët, Teân vaät tö

b. Taïo view vw_CTPNHAP duøng ñeå lieät keâ caùc chi tieát nhaäp haøng cuûa moät phieáu nhaäp. Thoâng tin goàm: Soá phieáu nhaäp, Maõ vaät tö (töø baûng CTPNHAP), Soá löôïng nhaäp, Ñôn giaù nhaäp.

c. Taïo view vw_CTPXUAT duøng ñeå lieät keâ caùc chi tieát xuaát haøng cuûa moät phieáu xuaát. Thoâng tin goàm: Soá phieáu xuaát, Maõ vaät tö (töø baûng CTPXUAT), Soá löôïng xuaát, Ñôn giaù xuaát.

2.10. Tìm hieåu caùc raøng buoäc döõ lieäu vaø tính toaøn veïn cuûa döõ lieäu

Boå sung theâm caùc döõ lieäu môùi vaøo trong caùc baûng baèng coâng cuï Enterprise Manager. Baïn coù theå nhaäp döõ lieäu do mình töï choïn, khi nhaäp haõy chuù yù ñeán ñeán tính chaát hôïp lyù cuûa döõ lieäu:

Xaùc ñònh moái quan heä cha, con giöõa caùc baûng. Kieåm tra xem baïn coù nhaäp döõ lieäu khoâng hôïp lyù: chæ coù ôû baûng con maø khoâng coù ôû baûng cha hay khoâng. Vd:

Baïn coù nhaäp chi tieát ñôn ñaët haøng naøo maø SoDH khoâng coù trong baûng DONDH khoâng?

Baïn coù nhaäp vaøo chi tieát phieáu nhaäp moät vaät tö maø trong chi tieát ñôn ñaët haøng cuûa phieáu ñoù khoâng ñaët hay khoâng?

Baïn coù nhaäp chi tieát phieáu xuaát naøo maø soá löôïng vaät tö xuaát cuûa moät vaät tö lôùn hôn soá löôïng toàn trong baûng TONKHO cuûa vaät tö ñoù trong cuøng naêm thaùng xuaát hay khoâng?

Page 9: Bai tap   hp4 - sql server 2000

Baøi taäp

Hoïc phaàn 4 – SQL Server 2000 Trang 8/21

BAØI 3: CAÙC RAØNG BUOÄC TOAØN VEÏN DÖÕ LIEÄU 3.1. Söû duïng coâng cuï Enterprise Manager ñeå theâm caùc raøng buoäc sau vaøo caùc baûng trong cô sôû döõ

lieäu QLBanHang.

Chuù yù: Neáu nhö döõ lieäu nhaäp vaøo caùc baûng trong baøi 2.3 vaø 2.10 thì moät soá raøng buoäc seõ khoâng taïo ñöôïc. Khi ñoù, thöïc hieän caùc böôùc sau:

Xaùc ñònh doøng döõ lieäu nhaäp sai döïa vaøo yù nghóa cuûa raøng buoäc maø baïn ñang taïo. Vd: neáu baïn ñang taïo raøng buoäc mieàn giaù trò (CHECK) 0 <= PhanTram <= 100 nhöng khoâng thaønh coâng thì chaéc chaén döõ lieäu chæ coù theå nhaäp sai trong baûng VATTU, coät PhanTram.

Söûa laïi döõ lieäu nhaäp

Thöïc hieän laïi vieäc taïo raøng buoäc

Danh muïc Vaät tö (VATTU)

MaVTu laø khoaù chính

Teân vaät tö phaûi duy nhaát, khoâng truøng.

Giaù trò maëc ñònh cho coät ñôn vò tính laø “”

0 <= PhanTram <= 100

Danh muïc Nhaø cung caáp (NHACC)

MaNhaCC laø khoaù chính

Teân nhaø cung caáp vaø ñòa chæ nhaø cung caáp phaûi duy nhaát, khoâng truøng.

Giaù trò maëc ñònh cho coät ñieän thoaïi laø “Chöa coù”.

Ñôn ñaët haøng (DONDH)

SoDH laø khoaù chính

Giaù trò maëc ñònh cho coät ngaøy ñaët haøng laø ngaøy hieän haønh. Duøng haøm Getdate()

Chi tieát Ñôn ñaët haøng (CTDONDH)

SoDH, MaVTu laø khoaù chính

SlDat > 0.

Chi tieát nhaäp haøng (CTPNHAP)

SoPN, MaVTu laø khoaù chính

SlNhap > 0

DgNhap > 0

Chi tieát xuaát haøng (CTPXUAT)

SoPX, MaVTu laø khoaù chính

SlXuat > 0

DgXuat > 0

Page 10: Bai tap   hp4 - sql server 2000

Baøi taäp

Hoïc phaàn 4 – SQL Server 2000 Trang 9/21

Toàn kho (TONKHO)

NamThang, MaVTu laø khoaù chính

SLDau >= 0

TongSLN >= 0

TongSLX >= 0

Giaù trò maëc ñònh cho caùc coät SLDau, TongSLN, TongSLX laø 0

Trong thuoäc tính Formula cuûa coät SLCuoi: SLDau + TongSLN - TongSLX

3.2. Söû duïng coâng cuï Enterprise Manager ñeå theâm vaøo caùc kieåm tra raøng buoäc veà khoùa ngoaïi cho caùc baûng nhö sau:

Stt Baûng Coät Baûng tham chieáu 1 DONDH MaNhaCc NHACC 2 CTDONDH MaVTu VATTU 3 CTDONDH SoDh DONDH 4 PNHAP SoDh DONDH 5 CTPNHAP MaVTu VATTU 6 CTPNHAP SoPn PNHAP 7 CTPXUAT MaVTu VATTU 8 CTPXUAT SoPX PXUAT 9 TONKHO MaVTu VATTU

Chuù yù: Taát caû caùc moái lieân keát khoaù ngoaïi ñeàu coù giaù trò CASCADE cho caùc söï kieän ON UPDATE vaø ON DELETE

Page 11: Bai tap   hp4 - sql server 2000

Baøi taäp

Hoïc phaàn 4 – SQL Server 2000 Trang 10/21

3.3. Phaùt sinh script

a. Söû duïng chöùc naêng Generate Script cuûa coâng cuï Enterprise Manager ñeå phaùt sinh toaøn boä ñoaïn script duøng ñeå taïo caùc baûng vaø raøng buoäc ñaõ laøm.

b. Löu script vöøa phaùt sinh thaønh qlbanhang.sql

3.4. Taïo baûng vaø raøng buoäc baèng caâu leänh (script)

a. Xoaù caùc baûng vaø raøng buoäc vöøa taïo. Chuù yù ñeán caùc raøng buoäc khoaù ngoaïi giöõa caùc baûng ñeå xaùc ñònh thöù töï caùc baûng seõ bò xoaù.

b. Söû duïng coâng cuï Query Analyzer, vieát caùc caâu leänh taïo baûng cuûa baøi taäp 2 vaø caùc raøng buoäc khoaù ngoaïi cuûa baøi taäp 3. Baïn coù theå choïn moät trong hai caùch thöïc hieän:

− Taïo caùc baûng tröôùc, sau ñoù söû duïng caâu leänh ALTER TABLE ADD CONSTRAINT ñeå taïo caùc raøng buoäc

− Taïo caùc baûng keát hôïp vôùi caùc raøng buoäc

− Baïn coù theå tham khaûo laïi file script ñaõ löu qlbanhang.sql ñeå kieåm tra caâu leänh cuûa mình vaø taäp caùch ñoïc hieåu ñoaïn script do Enterprise Manager phaùt sinh ra.

3.5. Hieåu roõ khaùi nieäm cuûa baûng aûo

Trong tröôøng hôïp döõ lieäu nhaäp ôû caùc baøi 2.3, 2.10 khoâng hôïp lyù vaø baïn ñaõ söûa laïi ñeå coù theå taïo caùc raøng buoäc toaøn veïn, söû duïng caâu leänh SELECT ñeå ñoïc döõ lieäu töø caùc baûng aûo (view) ñeå xem döõ lieäu môùi coù phaûn aùnh ñuùng trong caùc baûng aûo hay khoâng.

Page 12: Bai tap   hp4 - sql server 2000

Baøi taäp

Hoïc phaàn 4 – SQL Server 2000 Trang 11/21

3.6. Thieát laäp moâ hình quan heä döõ lieäu (diagram) cuûa cô sôû döõ lieäu quaûn lyù baùn haøng nhö beân döôùi.

Page 13: Bai tap   hp4 - sql server 2000

Baøi taäp

Hoïc phaàn 4 – SQL Server 2000 Trang 12/21

BAØI 4: LAÄP TRÌNH VÔÙI CÔ SÔÛ DÖÕ LIEÄU 4.1. Trong cô sôû döõ lieäu quaûn lyù baùn haøng, thöïc hieän caùc truy vaán sau ñaây:

a. Hieån thò danh saùch caùc vaät tö trong baûng VATTU saép xeáp theo thöù töï teân vaät tö giaûm daàn.

b. Hieån thò danh saùch caùc nhaø cung caáp trong baûng NHACC coù coät ñòa chæ ôû quaän 1 HCM, saép xeáp döõ lieäu theo hoï teân taêng daàn.

c. Hieån thò danh saùch caùc thoâng tin trong baûng CTPNHAP coù theâm coät thaønh tieàn bieát raèng Thaønh tieàn=SLNhap*DgNhap.

d. Hieån thò danh saùch caùc maõ nhaø cung caáp, teân nhaø cung caáp khoâng truøng laép döõ lieäu ñaõ ñaët haøng trong baûng DONDH.

e. Hieån thò danh saùch caùc ñôn ñaët haøng gaàn ñaây nhaát trong baûng DONDH.

f. Hieån thò danh saùch caùc phieáu xuaát haøng goàm coù caùc coät: soá phieáu xuaát vaø toång trò giaù. Trong ñoù saép xeáp theo thöù töï toång trò giaù giaûm daàn.

g. Hieån thò danh saùch caùc vaät tö vaø toång soá löôïng xuaát baùn (söû duïng caùc moái lieân keát INNER, LEFT, RIGHT JOIN giöõa hai baûng VATTU vaø CTPXUAT ñeå xem caùc keát quaû coù khaùc nhau gì khoâng?)

h. Xoùa chi tieát caùc vaät tö trong baûng CTDONDH coù ngaøy ñaët haøng laø 15/01/2002.

i. Xoùa toaøn boä caùc doøng döõ lieäu trong baûng CTPXUAT.

j. Söû duïng laïi taäp tin taäp tin chöùa caùc leänh theâm döõ lieäu INSERT INTO tröôùc ñaây ñeå cheøn laïi caùc döõ lieäu ñaõ bò xoùa trong baûng CTDONDH vaø CTPXUAT.

k. Söû duïng meänh ñeà UNION keát hôïp döõ lieäu töø hai truy vaán thaønh 1 coù daïng nhö beân döôùi:

Soá_NX Ngaøy_NX Teân vaät tö SL Nhaäp SL Xuaát

l. Söû duïng meänh ñeà COMPUTE BY vaø caùc haøm tính toaùn ñeå thoáng keâ nhoùm döõ lieäu.

− Hieån thò caùc thoâng tin trong baûng CTPXUAT vaø boå sung theâm coät thaønh tieàn, sao cho coù thoáng keâ doøng toång coäng soá tieàn ôû töøng phieáu xuaát.

− Hieån thò caùc thoâng tin: maõ vaät tö, soá nhaäp haøng, soá löôïng nhaäp, ñôn giaù nhaäp trong baûng CTPNHAP vaø thoáng keâ doøng toång coäng soá löôïng, giaù thaáp nhaát, giaù cao nhaát ôû töøng vaät tö.

4.2. Söû duïng cuù phaùp IF beân döôùi ñeå thöïc hieän caùc yeâu caàu sau:

a. Cho bieát ñôn giaù xuaát trung bình cuûa haøng hoùa “Ñaàu DVD Hitachi 1 ñóa” trong baûng CTPXUAT hieän giôø laø bao nhieâu? Neáu lôùn hôn 3,800,000 thì in ra “khoâng neân thay ñoåi giaù baùn”, ngöôïc laïi in ra “ñaõ ñeán luùc taêng giaù baùn”.

Page 14: Bai tap   hp4 - sql server 2000

Baøi taäp

Hoïc phaàn 4 – SQL Server 2000 Trang 13/21

b. Söû duïng haøm DATENAME ñeå tính xem coù ñôn ñaët haøng naøo ñaõ ñöôïc laäp vaøo ngaøy chuû nhaät khoâng? Neáu coù thì in ra danh saùch caùc ñôn ñaët haøng ñoù, ngöôïc laïi thì in ra chuoãi caùc “Ngaøy laäp caùc ñôn ñaët haøng ñeàu laø hôïp leä”

c. Haõy cho bieát ñaõ coù bao nhieâu soá nhaäp haøng cho ñôn ñaët haøng D001, neáu coù thì in ra “Coù xx soá phieáu nhaäp haøng cho ñôn ñaët haøng D001”, ngöôïc laïi thì in ra “Chöa coù nhaäp haøng naøo cho D001”

4.3. Söû duïng cuù phaùp WHILE beân döôùi ñeå thöïc hieän caùc yeâu caàu sau:

a. Taïo moät baûng teân VATTU_Temp coù caáu truùc vaø döõ lieäu döïa vaøo baûng VATTU (chæ laáy hai coät: MAVTU, TENVTU vaø boû ñi caùc constraint lieân quan). Sau ñoù söû duïng WHILE vieát ñoaïn chöông trình duøng ñeå xoùa töøng doøng döõ lieäu trong baûng VATTU_Temp vôùi ñieàu kieän caâu leänh beân trong voøng laëp khi moãi laàn thöïc hieän chæ ñöôïc pheùp xoùa moät doøng döõ lieäu trong baûng VATTU_Temp. Trong khi xoùa neân thoâng baùo ra maøn hình noäi dung “Ñang xoùa vaät tö ” + Teân vaät tö.

b. Trong baûng VATTU_Temp boå sung theâm hai coät môùi: SOPX CHAR(4), DGXUAT FLOAT. Kieåm tra ñôn giaù trung bình cuûa vaät tö DD01 trong baûng CTPXUAT, neáu ñôn giaù trung bình vaãn coøn <3,500,000 thì taêng ñôn giaù leân 5% cho caùc vaät tö DD01 chæ coù ñôn giaù xuaát <3,000,000. Keát thuùc voøng laëp cho bieát ñaõ thöïc hieän vieäc taêng bao nhieâu laàn trong voøng laëp. Trong moãi laàn taêng ñôn giaù phaûi cheøn theâm doøng döõ lieäu vaøo baûng VATTU_Temp ñaõ taêng töø döõ lieäu cuûa caùc baûng CTXUAT vaø VATTU (ñeå laáy coät TENVTU) nhaèm löu laïi caùc giaù trò trong quaù trình taêng ñôn giaù.

4.4. Söû duïng cuù phaùp CASE loàng vaøo caùc leänh truy vaán caàn thieát trong caùc yeâu caàu sau:

a. Lieät keâ danh saùch caùc ñôn ñaët haøng trong baûng DONDH boå sung theâm coät hieån thò thöù trong tuaàn (baèng tieáng Vieät) cuûa ngaøy ñaët haøng.

b. Giaûm ñôn giaù cuûa caùc haøng hoùa baùn ra trong thaùng 01/2002 theo qui taéc nhö sau :

− Khoâng giaûm neáu soá löôïng < 4.

− Giaûm 5% neáu soá löôïng >= 4 vaø soá löôïng < 10.

− Giaûm 10% neáu soá löôïng >= 10 vaø soá löôïng <= 20.

− Giaûm 20% neáu soá löôïng > 20.

Page 15: Bai tap   hp4 - sql server 2000

Baøi taäp

Hoïc phaàn 4 – SQL Server 2000 Trang 14/21

BAØI 5: THUÛ TUÏC NOÄI TAÏI 5.1. Trong cô sôû döõ lieäu quaûn lyù baùn haøng, taïo caùc thuû tuïc noäi taïi tính toaùn vôùi caùc yeâu caàu sau.

a. Xaây döïng thuû tuïc tính soá löôïng ñaët haøng vôùi teân spud_DONDH_TinhSLDat goàm coù 2 tham soá vaøo laø: Soá ñaët haøng vaø Maõ vaät tö, 1 tham soá ra laø: Soá löôïng ñaët haøng cuûa moät vaät tö trong moät soá ñaët haøng.

b. Xaây döïng thuû tuïc tính toång soá löôïng ñaõ nhaäp haøng vôùi teân spud_PNHAP_TinhTongSLNHang goàm coù 2 tham soá vaøo laø: Soá ñaët haøng vaø Maõ vaät tö, 1 tham soá ra laø: Toång soá löôïng ñaõ nhaäp haøng cuûa moät vaät tö trong moät soá ñaët haøng.

c. Xaây döïng thuû tuïc tính soá löôïng toàn kho cuoái kyø cuûa moät vaät tö vôùi teân spud_TONKHO_TinhTonCuoi goàm coù 2 tham soá vaøo laø: Naêm thaùng vaø Maõ vaät tö, 1 tham soá ra laø: Soá löôïng cuoái kyø cuûa moät vaät tö trong naêm thaùng truyeàn vaøo.

5.2. Trong cô sôû döõ lieäu quaûn lyù baùn haøng, taïo caùc thuû tuïc noäi taïi caäp nhaät döõ lieäu trong baûng VATTU. Caùc thuû tuïc naøy coù kieåm tra caùc raøng buoäc döõ lieäu vaø thoâng baùo ra caùc loãi roõ raøng khi döõ lieäu vi phaïm caùc raøng buoäc.

a. Xaây döïng thuû tuïc theâm môùi döõ lieäu vaøo baûng VATTU vôùi teân spud_VATTU_Them goàm coù 4 tham soá vaøo chính laø giaù trò theâm môùi cho caùc coät trong baûng VATTU: maõ vaät tö, teân vaät tö, ñôn vò tính vaø phaàn traêm. Trong ñoù caàn kieåm tra caùc raøng buoäc döõ lieäu phaûi hôïp leä tröôùc khi thöïc hieän leänh INSERT INTO ñeå theâm döõ lieäu vaøo baûng VATTU.

− Maõ vaät tö phaûi duy nhaát.

b. Xaây döïng thuû tuïc xoùa moät vaät tö coù trong baûng VATTU vôùi teân spud_VATTU_Xoa goàm coù 1 tham soá vaøo chính laø maõ vaät tö caàn xoùa. Trong ñoù caàn kieåm tra raøng buoäc döõ lieäu tröôùc khi thöïc hieän leänh DELETE ñeå xoùa döõ lieäu trong baûng VATTU.

− Maõ vaät tö phaûi chöa coù trong baûng CTDONDH

− Maõ vaät tö phaûi chöa coù trong baûng CTPXUAT

− Maõ vaät tö phaûi chöa coù trong baûng TONKHO

c. Xaây döïng thuû tuïc söûa ñoåi vaät tö trong baûng VATTU vôùi teân spud_VATTU_Sua goàm coù 4 tham soá vaøo chính laø giaù trò caàn thay ñoåi cuûa caùc coät trong baûng VATTU: maõ vaät tö, teân vaät tö, ñôn vò tính vaø phaàn traêm. Trong thuû tuïc chæ thöïc hieän leänh UPDATE SET ñeå caäp nhaät döõ lieäu vaøo baûng VATTU vôùi caùc giaù trò töông öùng.

5.3. Trong cô sôû döõ lieäu quaûn lyù baùn haøng, taïo caùc thuû tuïc noäi taïi lieät keâ döõ lieäu vôùi caùc yeâu caàu sau.

a. Xaây döïng thuû tuïc lieät keâ caùc coät döõ lieäu trong baûng VATTU vôùi teân spud_VATTU_BcaoDanhSach, thuû tuïc naøy khoâng coù tham soá naøo. Haønh ñoäng duy nhaát trong thuû tuïc naøy ñôn giaûn chæ laø moät caâu leänh truy vaán SELECT * FROM VATTU coù saép xeáp theo thöù töï teân vaät tö taêng daàn.

b. Xaây döïng thuû tuïc lieät keâ caùc coät döõ lieäu trong baûng TONKHO coù theå hieän theâm coät TENVTU trong baûng VATTU vôùi teân spud_TONKHO_BcaoTonkho goàm coù 1 tham soá vaøo laø: Naêm thaùng muoán loïc döõ lieäu.

Page 16: Bai tap   hp4 - sql server 2000

Baøi taäp

Hoïc phaàn 4 – SQL Server 2000 Trang 15/21

c. Xaây döïng thuû tuïc lieät keâ caùc coät döõ lieäu trong hai baûng döõ lieäu PXUAT vaø CTXUAT coù theå hieän theâm moät coät TENVTU trong baûng VATTU vôùi teân laø spud_PXUAT_BcaoPxuat goàm coù 1 tham soá vaøo laø: Soá phieáu xuaát muoán loïc döõ lieäu coù giaù trò maëc ñònh laø NULL. Tuy nhieân neáu luùc goïi thöïc hieän thuû tuïc maø khoâng truyeàn giaù trò soá phieáu xuaát vaøo thì xem nhö khoâng loïc gì caû, khi ñoù thuû tuïc seõ lieät keâ taát caû caùc phieáu xuaát ñang coù trong baûng PXUAT.

5.4. Trong cô sôû döõ lieäu quaûn lyù baùn haøng, taïo caùc thuû tuïc noäi taïi duøng cho vieäc caäp nhaät döõ lieäu trong baûng DONDH, CTDONDH ñeå veà sau söû duïng trong maøn hình ñôn ñaët haøng. Caùc thuû tuïc naøy coù kieåm tra caùc raøng buoäc döõ lieäu vaø thoâng baùo ra caùc loãi roõ raøng khi döõ lieäu vi phaïm caùc raøng buoäc.

a. Xaây döïng thuû tuïc theâm môùi döõ lieäu vaøo baûng DONDH vôùi teân spud_DONDH_Them goàm coù 3 tham soá vaøo chính laø giaù trò theâm môùi cho caùc coät trong baûng DONDH: soá ñaët haøng, maõ nhaø cung caáp vaø ngaøy ñaët haøng. Trong ñoù caàn kieåm tra caùc raøng buoäc döõ lieäu phaûi hôïp leä tröôùc khi thöïc hieän leänh INSERT INTO ñeå theâm döõ lieäu vaøo baûng DONDH.

− Soá ñaët haøng phaûi duy nhaát

− Maõ nhaø cung caáp phaûi coù beân baûng NHACC

− Ngaøy ñaët haøng coù theå khoâng truyeàn vaøo (optional), khi ñoù seõ laáy giaù trò maëc ñònh cuûa ngaøy hieän haønh

b. Xaây döïng thuû tuïc xoùa DONDH vôùi teân spud_DONDH_Xoa goàm coù 1 tham soá vaøo chính laø soá ñaët haøng caàn xoùa. Tuy nhieân neáu raøng buoäc döõ lieäu hôïp leä thì xoùa töï ñoäng luoân caùc doøng döõ lieäu lieân quan beân baûng CTDONDH. Trong ñoù caàn kieåm tra raøng buoäc döõ lieäu tröôùc khi thöïc hieän leänh DELETE ñeå xoùa döõ lieäu trong baûng DONDH.

− Soá ñaët haøng chöa coù trong baûng PNHAP

c. Xaây döïng thuû tuïc söûa ñoåi döõ lieäu trong baûng DONDH vôùi teân spud_DONDH_Sua goàm coù 3 tham soá vaøo chính laø giaù trò caàn thay ñoåi cuûa caùc coät trong baûng DONDH: soá ñaët haøng, maõ nhaø cung caáp vaø ngaøy ñaët haøng. Trong ñoù caàn kieåm tra caùc raøng buoäc döõ lieäu phaûi hôïp leä tröôùc khi thöïc hieän leänh UPDATE SET ñeå caäp nhaät döõ lieäu vaøo baûng DONDH.

− Maõ nhaø cung caáp phaûi coù beân baûng NHACC

− Ngaøy ñaët haøng phaûi tröôùc ngaøy nhaäp haøng (neáu ñôn ñaët haøng ñaõ ñöôïc nhaäp veà roài)

d. Xaây döïng thuû tuïc theâm môùi döõ lieäu vaøo baûng CTDONDH vôùi teân spud_ CTDONDH_Them goàm coù 3 tham soá vaøo chính laø giaù trò theâm môùi cho caùc coät trong baûng CTDONDH: soá ñaët haøng, maõ vaät tö vaø soá löôïng ñaët haøng. Trong ñoù caàn kieåm tra caùc raøng buoäc döõ lieäu phaûi hôïp leä tröôùc khi thöïc hieän leänh INSERT INTO ñeå theâm döõ lieäu vaøo baûng CTDONDH.

− Soá ñaët haøng phaûi coù beân baûng DONDH

− Maõ vaät tö phaûi coù beân baûng VATTU

− Soá ñaët haøng vaø maõ vaät tö phaûi duy nhaát trong baûng CTDONDH

e. Xaây döïng thuû tuïc xoùa CTDONDH vôùi teân spud_ CTDONDH_Xoa goàm coù 2 tham soá vaøo chính laø soá ñaët haøng vaø maõ vaät tö caàn xoùa. Trong ñoù caàn kieåm tra raøng buoäc döõ lieäu tröôùc khi thöïc hieän leänh DELETE ñeå xoùa döõ lieäu trong baûng CTDONDH.

− Soá ñaët haøng vaø maõ vaät tö naøy chöa ñöôïc nhaäp haøng trong caùc baûng lieân quan PNHAP vaø CTPNHAP

Page 17: Bai tap   hp4 - sql server 2000

Baøi taäp

Hoïc phaàn 4 – SQL Server 2000 Trang 16/21

f. Xaây döïng thuû tuïc söûa ñoåi döõ lieäu trong baûng CTDONDH vôùi teân spud_ CTDONDH_Sua goàm coù 3 tham soá vaøo chính laø giaù trò caàn thay ñoåi cuûa caùc coät trong baûng CTDONDH: soá ñaët haøng, maõ vaät tö vaø soá löôïng ñaët haøng. Trong ñoù caàn kieåm tra caùc raøng buoäc döõ lieäu phaûi hôïp leä tröôùc khi thöïc hieän leänh UPDATE SET ñeå caäp nhaät döõ lieäu vaøo baûng CTDONDH.

− Soá ñaët haøng vaø maõ vaät tö phaûi coù beân baûng CTDONDH.

− Soá löôïng ñaët môùi phaûi >= toång soá löôïng ñaõ nhaäp haøng (neáu ñaõ coù nhaäp haøng).

5.5. Xaây döïng öùng duïng vôùi VB & SQL Server

Xaây döïng caùc thuû tuïc caäp nhaät döõ lieäu treân baûng ñôn.

ÖÙng vôùi moãi baûng, thuû tuïc töông öùng seõ coù teân laø PRO_<TEÂN BAÛNG>.

Moãi coät trong baûng seõ öùng vôùi moät tham soá cuûa thuû tuïc, giaù trò maëc ñònh cuûa caùc tham soá laø null.

Tham soá @Loai char(1) seõ quy ñònh haønh ñoäng maø thuû tuïc seõ thöïc hieän. Neáu @Loai =”I” thì thuû tuïc seõ thöïc hieän vieäc Insert döõ lieäu vaøo baûng. Neáu @Loai = “U” thì thuû tuïc seõ thöïc hieän vieäc Update döõ lieäu trong baûng. Neáu @Loai =”D” thì thuû tuïc seõ thöïc hieän vieäc Delete döõ lieäu khoûi baûng.

Ngoaøi vieäc thöïc hieän caùc haønh ñoäng caäp nhaät döõ lieäu (theâm, xoaù, söûa) chi tieát kieåm tra döõ lieäu ñoái vôùi töøng thuû tuïc ñöôïc moâ ta nhö beân döôùi. Trong tröôøng hôïp giaù trò tham soá truyeàn vaøo khoâng thoaû ñieàu kieän kieåm tra, caàn phaûi söû duïng haøm Raiserror(“noäi dung loãi”,16,1) ñeå thoâng baùo loãi. Loãi naøy seõ ñöôïc öùng duïng VB nhaän vaø hieån thò tôùi ngöôøi duøng.

a. PRO_VATTU

− Khi theâm môùi hay caäp nhaät, MaVTu môùi phaûi chöa toàn taïi trong baûng VATTU

− Khi theâm môùi hay caäp nhaät, giaù trò PHANTRAM phaûi trong khoaûng töø 0 ñeán 100

− Khi xoaù, MaVTu phaûi khoâng toàn taïi trong caùc baûng CTDONDH, CTPNHAP, CTPXUAT, TONKHO.

b. PRO_DONDH

− Khi theâm môùi hay caäp nhaät, MaNhaCC phaûi toàn taïi trong baûng NHACC

− Khi theâm môùi hay caäp nhaät, SODH môùi phaûi khoâng toàn taïi trong baûng DONDH

− Khi caäp nhaät, NGAYDH phaûi baèng hoaëc sôùm hôn ngaøy nhaäp haøng cuûa phieáu nhaäp ñaàu tieân (neáu coù)

− Khi xoaù ñôn ñaët haøng, SODH phaûi khoâng toàn taïi trong baûng PNHAP

c. PRO_NHACC

− Khi theâm môùi hay caäp nhaät, MaNhaCC môùi phaûi chöa coù trong baûng NHACC

− Khi xoaù, MaNhaCC phaûi khoâng toàn taïi trong baûng DONDH

d. PRO_PNHAP

− Khi theâm môùi hay caäp nhaät, SOPN môùi phaûi chöa coù trong baûng PNHAP

− Khi theâm môùi hay caäp nhaät, SODH phaûi toàn taïi trong baûng DONDH

− Khi caäp nhaät, NGAYNHAP phaûi sau NGAYDH cuûa ñôn ñaët haøng töông öùng

Page 18: Bai tap   hp4 - sql server 2000

Baøi taäp

Hoïc phaàn 4 – SQL Server 2000 Trang 17/21

e. PRO_PXUAT

− Khi theâm môùi hay caäp nhaät, SOPX môùi phaûi chöa coù trong baûng PXUAT

Xaây döïng caùc thuû tuïc caäp nhaät döõ lieäu treân caùc baûng aûo

ÖÙng vôùi moãi baûng aûo ñaõ xaây döïng trong baøi taäp boå sung tröôùc, taïo moät thuû tuïc caäp nhaät döõ lieäu treân baûng aûo. Thuû tuïc naøy seõ caäp nhaät döõ lieäu vaøo baûng chi tieát töông öùng, ví duï, thuû tuïc xaây döïng treân vw_CTDONDH seõ caäp nhaät döõ lieäu vaøo baûng CTDONDH

Danh saùch caùc tham soá cho thuû tuïc cuõng töông töï nhö ñoái vôùi caùc baûng ñôn

Chuù yù: caùc thuû tuïc chæ coù theå ñöôïc thi haønh ñuùng sau khi baïn ñaõ xaây döïng caùc trigger INSTEAD OF treân baûng aûo. (Xem theâm phaàn baøi taäp trigger beân döôùi)

a. PRO_CTDONDH

− Khi theâm môùi hay caäp nhaät, SLDAT phaûi döông

b. PRO_CTPNHAP

− Khi theâm môùi hay caäp nhaät, SLNHAP vaø DGNHAP phaûi döông

c. PRO_CTPXUAT

− Khi theâm môùi hay caäp nhaät, SLXUAT vaø DGXUAT phaûi döông

Page 19: Bai tap   hp4 - sql server 2000

Baøi taäp

Hoïc phaàn 4 – SQL Server 2000 Trang 18/21

BAØI 6: HAØM DO NGÖÔØI DUØNG ÑÒNH NGHÓA 6.1. Xaây döïng caùc haøm ñôn trò sau

a. Fn_TongNhapThang(@MaVTu) traû veà toång soá löôïng ñaõ nhaäp trong thaùng cuûa vaät tö

b. Fn_TongXuatThang(@MaVTu) traû veà toång soá löôïng ñaõ xuaát trong thaùng cuûa vaät tö

c. Fn_TongNhap(@SoDH, @MaVtu) traû veà toång soá löôïng ñaõ nhaäp cuûa vaät tö theo soá ñaët haøng

d. Söû duïng haøm fn_TongNhap ñaõ taïo ñeå vieát haøm Fn_ConNhap(@SoDH, @MaVTu) traû veà soá löôïng coøn phaûi nhaäp cuûa vaät tö theo soá ñaët haøng

e. Fn_Ton(@MaVTu, @NamThang) traû veà soá löôïng toàn cuûa vaät tö theo naêm thaùng

6.2. Xaây döïng caùc haøm ñoïc baûng sau

a. Söû duïng haøm fn_ConNhap ñaõ taïo ñeå vieát haøm Fn_DS_VatTuConNhap(@SoDH) lieát keâ SoDH, MaVTu, SLConLai cuûa caùc vaät tö chöa nhaäp ñuû.

b. Fn_DS_VatTuTonKho(@NamThang char(6), @ToiThieu int) lieät keâ danh saùch caùc vaät tö trong @NamThang vôùi soá löôïng toàn kho toái thieåu laø @ToiThieu.

6.3. Xaây döïng haøm taïo baûng

a. Söû duïng haøm Fn_Ton ñaõ taïo ñeå vieát haøm Fn_DS_TonKho_Lech() lieät keâ caùc thoâng tin trong baûng toàn kho cuûa caùc vaät tö maø thoâng tin toàn ñaàu kyø cuûa thaùng sau khoâng baèng thoâng tin toàn cuoái kyø cuûa thaùng tröôùc.

Page 20: Bai tap   hp4 - sql server 2000

Baøi taäp

Hoïc phaàn 4 – SQL Server 2000 Trang 19/21

BAØI 7: TRIGGER 7.1. Taïo Trigger khi theâm môùi döõ lieäu duøng ñeå kieåm tra caùc raøng buoäc toaøn veïn döõ lieäu nhö yeâu caàu

beân döôùi.

a. Xaây döïng trigger khi theâm môùi döõ lieäu vaøo baûng PNHAP vôùi teân tg_PNHAP_Them. Trong ñoù caàn kieåm tra caùc raøng buoäc döõ lieäu phaûi hôïp leä.

− Ngaøy nhaäp haøng phaûi sau ngaøy ñaët haøng.

b. Xaây döïng trigger khi theâm môùi döõ lieäu vaøo baûng CTPNHAP vôùi teân tg_CTPNHAP_Them. Trong ñoù caàn kieåm tra caùc raøng buoäc döõ lieäu phaûi hôïp leä.

− Soá löôïng nhaäp haøng <= (Soá löôïng ñaët – Toång soá löôïng ñaõ nhaäp vaøo tröôùc ñoù)

7.2. Taïo Trigger khi xoùa döõ lieäu duøng ñeå kieåm tra caùc raøng buoäc toaøn veïn döõ lieäu nhö yeâu caàu beân döôùi.

a. Xaây döïng trigger khi xoùa döõ lieäu trong baûng PXUAT vôùi teân tg_PXUAT_Xoa. Trong ñoù caàn thöïc hieän caùc haønh ñoäng:

− Thöïc hieän töï ñoäng xoùa caùc doøng döõ lieäu lieân quan beân baûng CTPXUAT.

b. Xaây döïng trigger khi xoùa döõ lieäu trong baûng PNHAP vôùi teân tg_ PNHAP_Xoa. Trong ñoù caàn thöïc hieän caùc haønh ñoäng:

− Thöïc hieän töï ñoäng xoùa caùc doøng döõ lieäu lieân quan beân baûng CTPNHAP.

7.3. Taïo Trigger khi söûa döõ lieäu duøng ñeå kieåm tra caùc raøng buoäc toaøn veïn döõ lieäu nhö yeâu caàu beân döôùi.

a. Xaây döïng trigger khi söûa döõ lieäu trong baûng PNHAP vôùi teân tg_ PNHAP_Sua. Trong ñoù caàn kieåm tra caùc raøng buoäc döõ lieäu phaûi hôïp leä.

− Khoâng cho pheùp söûa ñoåi giaù trò cuûa caùc coät: soá nhaäp haøng, soá ñaët haøng.

− Kieåm tra giaù trò môùi cuûa coät ngaøy nhaäp haøng phaûi sau ngaøy ñaët haøng.

b. Xaây döïng trigger khi söûa döõ lieäu trong baûng PXUAT vôùi teân tg_PXUAT_Sua. Trong ñoù caàn kieåm tra caùc raøng buoäc döõ lieäu phaûi hôïp leä.

− Khoâng cho pheùp söûa ñoåi giaù trò coät soá phieáu xuaát.

− Kieåm tra giaù trò môùi cuûa ngaøy xuaát phaûi cuøng naêm thaùng vôùi giaù trò cuõ cuûa ngaøy xuaát. Neáu khaùc nhau thì thoâng baùo loãi khoâng cho söûa ñoåi.

7.4. Taïo Trigger khi theâm môùi döõ lieäu duøng ñeå kieåm tra caùc raøng buoäc toaøn veïn döõ lieäu vaø tính toaùn töï ñoäng nhö yeâu caàu beân döôùi.

a. Trong baûng PNHAP taïo theâm coät toång trò giaù coù teân TONGTG vôùi kieåu Float duøng ñeå löu toång trò giaù cuûa 1 phieáu nhaäp haøng. Trong trigger tg_PNHAP_Them ñaõ xaây döïng tröôùc ñoù ôû phaàn 1a. Boå sung theâm caùc tính toaùn töï ñoäng sau:

− Taêng giaù trò taïi coät TONGTG trong baûng PNHAP khi döõ lieäu trong baûng CTPNHAP ñöôïc theâm vaøo.

Page 21: Bai tap   hp4 - sql server 2000

Baøi taäp

Hoïc phaàn 4 – SQL Server 2000 Trang 20/21

− Taêng giaù trò taïi coät TONGSLN trong baûng TONKHO khi döõ lieäu trong baûng CTPNHAP ñöôïc theâm vaøo.

b. Trong baûng PXUAT taïo theâm coät toång trò giaù coù teân TONGTG vôùi kieåu Float duøng ñeå löu toång trò giaù cuûa 1 phieáu xuaát haøng. Xaây döïng trigger khi theâm môùi döõ lieäu vaøo baûng CTPXUAT vôùi teân tg_CTPXUAT_Them. Trong ñoù caàn kieåm tra caùc raøng buoäc döõ lieäu phaûi hôïp leä vaø tính toaùn töï ñoäng nhö sau:

− Kieåm tra soá phieáu xuaát phaûi toàn taïi trong baûng PXUAT.

− Kieåm tra maõ vaät tö phaûi toàn taïi trong baûng VATTU.

− Kieåm tra soá löôïng xuaát phaûi ñuû trong baûng TONKHO.

− Kieåm tra ñôn giaù xuaát phaûi döông. Neáu taát caû caùc raøng buoäc ôû treân ñeàu hôïp leä thì töï ñoäng thöïc hieän caùc haønh ñoäng sau ñaây:

Taêng giaù trò taïi coät TONGTG trong baûng PXUAT.

Taêng giaù trò taïi coät TONGSLX trong baûng TONKHO.

7.5. Taïo Trigger khi xoùa döõ lieäu duøng ñeå kieåm tra caùc raøng buoäc toaøn veïn döõ lieäu vaø tính toaùn töï ñoäng nhö yeâu caàu beân döôùi.

a. Xaây döïng trigger khi xoùa döõ lieäu trong baûng CTPXUAT vôùi teân tg_CTPXUAT_Xoa. Trong ñoù caàn thöïc hieän caùc tính toaùn nhö sau:

− Giaûm giaù trò taïi coät TONGTG trong baûng PXUAT.

− Giaûm giaù trò taïi coät TONGSLX trong baûng TONKHO.

b. Xaây döïng trigger khi xoùa döõ lieäu trong baûng CTPNHAP vôùi teân tg_CTPNHAP_Xoa. Trong ñoù caàn thöïc hieän caùc tính toaùn nhö sau:

− Giaûm giaù trò taïi coät TONGTG trong baûng PNHAP.

− Giaûm giaù trò taïi coät TONGSLN trong baûng TONKHO.

7.6. Xaây döïng öùng duïng vôùi VB & SQL Server

Söû duïng chöùc naêng Generate Script ñeå taïo laïi caùc script taïo trigger cuûa baøi taäp tröôùc. Löu laïi caùc script ñaõ taïo vaø xoaù heát caùc trigger treân caùc baûng trong database QLBanHANG.

Xaây döïng rieâng bieät caùc AFTER trigger cho caùc haønh ñoäng theâm, xoaù, söûa treân caùc baûng lieät keâ beân döôùi. Trong tröôøng hôïp vi phaïm moät raøng buoäc ñöôïc moâ taû, caàn phaûi söû duïng haøm Raiserror(“noäi dung loãi”,16,1) ñeå thoâng baùo loãi. Loãi naøy seõ ñöôïc öùng duïng VB nhaän vaø hieån thò tôùi ngöôøi duøng.

a. DONDH

− Khi söûa, NGAYDH phaûi sôùm hôn hoaëc baèng ngaøy nhaäp haøng cuûa phieáu nhaäp ñaàu tieân (neáu coù)

b. CTDONDH

− Khi söûa, chæ cho pheùp söûa SLDAT

− Khi xoaù, chæ cho pheùp xoaù khi chi tieát ñaët haøng chöa ñöôïc nhaäp haøng

Page 22: Bai tap   hp4 - sql server 2000

Baøi taäp

Hoïc phaàn 4 – SQL Server 2000 Trang 21/21

c. PNHAP

− Khi theâm, NGAYNHAP phaûi baèng hoaëc sau ngaøy nhaäp cuûa DONDH töông öùng

− Khi söûa, chæ cho pheùp söûa giaù trò ngaøy cuûa coät NGAYNHAP.

d. CTPNHAP

− Khi theâm, caäp nhaät giaù trò TONGSLN trong baûng TONKHO cuûa vaät tö vaø naêm thaùng töông öùng. Neáu trong baûng TONKHO chöa coù thoâng tin toàn kho cuûa vaät tö ñöôïc nhaäp thì phaûi taïo môùi thoâng tin naøy. (Chuù yù, khoâng neân chuyeån haønh ñoäng theâm döõ thoâng tin toàn kho naøy sang trigger theâm môùi cuûa baûng VATTU.)

− Khi xoaù, caäp nhaät giaù trò TONGSLN trong baûng TONKHO cuûa vaät tö vaø naêm thaùng töông öùng

− Khi söûa, khoâng cho pheùp söûa SOPN. Neáu chæ caäp nhaät SLNHAP thì caäp nhaät laïi giaù trò TONGSLN trong baûng TONKHO töông öùng. Neáu caäp nhaäp caû MAVTU vaø SLNHAP thì seõ phaûi caäp nhaät laïi giaù trò TONGSLN cuûa hai vaät tö trong baûng TONKHO._

e. PXUAT

− Khi söûa, chæ cho pheùp söûa giaù trò ngaøy cuûa coät NGAYXUAT.

f. CTPXUAT

− Chæ cho pheùp theâm döõ lieäu vaøo baûng CTXUAT neáu SLCUOI cuûa vaät tö caàn xuaát trong naêm thaùng töông öùng lôn hôn hoaëc baèng SLXUAT.

− Khi theâm, caäp nhaät giaù trò TONGSLX trong baûng TONKHO cuûa vaät tö vaø naêm thaùng töông öùng.

− Khi xoaù, caäp nhaät giaù trò TONGSLX trong baûng TONKHO cuûa vaät tö vaø naêm thaùng töông öùng

− Khi söûa, khoâng cho pheùp söûa SOPX. Neáu chæ caäp nhaät SLXUAT thì caäp nhaät laïi giaù trò TONGSLX trong baûng TONKHO töông öùng. Neáu caäp nhaäp caû MAVTU vaø SLXUAT thì seõ phaûi caäp nhaät laïi giaù trò TONGSLX cuûa hai vaät tö trong baûng TONKHO.

Xaây döïng caùc INSTEAD OF trigger treân caùc baûng aûo nhö sau

g. Vôùi moãi haønh ñoäng theâm, xoaù, söûa döõ lieäu trong baûng aûo, xaây döïng moät INSTEAD OF trigger ñeå thöïc hieän haønh ñoäng töông öùng treân baûng chi tieát. Ví duï, trigger taïo cho haønh ñoäng theâm treân vw_CTDONDH seõ theâm döõ lieäu vaøo baûng CTDONDH.