Môn học: Phát triển ứng dụng Web nâng cao với ASP.NET Product Catalog – P2 TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN CÔNG NGHỆ PHẦN MỀM --- ---N ộ i dung Giới thi
Trang 1Môn học:
Phát triển ứng dụng Web nâng cao với ASP.NET
Product Catalog – P2
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÔNG NGHỆ PHẦN MỀM
-
-N ộ i dung
Giới thiệu relational data, relationship giữa các
datatables trong cùng một database
Sử dụng join table, sub query, triển khai phân trang
tại thành phần Data tier, các kỹ thuật mở rộng trên
SQL
Xây dựng thành phần Business tier sử dụng store
procedures với input và output parameter
2
Trang 2M ụ c l ụ c
1. Xây dựng thành phần Data Tier Code
1 Relational Database
2 Các bước tiền xử lý
3 ADO.NET với Parameterized Store Procedures
2. Xây dưng thành phần Business Tier Code
3. Xây dựng thành phần Presentation Tier Code
3
Relational Database
Relational Data ?
Mối liên hệ giữa bảng Product và Category
Mối liên hệ giữa bảng Category và Department
Mối liên hệ giữa bảng Orders và Customers
…
Relational Database Management Systems
(RDBMS)
MySQL, PostgreSQL, SQL Server
Oracle,DB2
Table Relationship
One– to– Many
Many– to–Many
4
Trang 3Unrelated Table
5
Relational Data và Table Relationships
Liên quan đến các table
Product
Category
Department
Các table liên hệ với nhau thông qua các mối quan
hệ:
6
Trang 4One–to–Many Relationship
Là mối liên hệ thể hiên:
Một record trong một bảng có liên hệ với nhiều record
trong một bảng related khác
Thể hiện qua mối liên hệ Department - Category
7
One–to–Many Relationship
8
Trang 5Many-to-many Relationship
Là mối liên hệ thể hiên:
Nhiều records trong hai bảng có mối liên hệ với nhau
Thể hiện qua mối liên hệ Product - Category
Tuy nhiên việc thể hiện mối liên hệ này cần dùng
thông qua một bảng thứ ba gọi là ProductCategory
(ProductID, CategoryID) – thường gọi là Linking
table hoặc Associate table và sử dụng hai mối liên
hệ one-to-many relationship để liên kết 3 bảng lại
9
Many-to-many Relationship
10
Trang 6Many-to-many Relationship
11
Foreign key contraints
Cơ chế đảm bảo relationship giữa các data tables
Referecing table vs referenced table
12
Trang 7M ụ c l ụ c
1. Xây dựng thành phần Data Tier Code
1 Relational Database
2 Các bước tiền xử lý
3 ADO.NET với Parameterized Store Procedures
2. Xây dưng thành phần Business Tier Code
3. Xây dựng thành phần Presentation Tier Code
13
Các b ướ c ti ề n x ử lý
Bước 1: Tạo categories table, product table
Bước 2: Query data
Lấy thông tin short product description
Joining data tables
Implementing paging
Bước 3: Các kỹ thuật sử dụng Store Procedures
14
Trang 8Category Table - Foregin Key
15
ALTER TABLE Category ADD CONSTRAINT
FK_Category_Department FOREIGN KEY (DepartmentID)
REFERENCES Department (DepartmentID)
Product Table – ProductCategory Table
16
Trang 9Relationship diagram
17
Querying the data
Các nội dung chính:
Chức năng short product descriptions
Chức năng joining data tables
Chức năng phân trang
18
Trang 10Short product description
Sử dụng:
SELECT LEFT(Description, 60) + ' ' AS
'Short Description‘ FROM Product
19
Joining data tables
Ví dụ:
SELECT p ProductID, p.Name
FROM ProductCategory pc INNER JOIN Product p
ON p ProductID = pc.ProductID
WHERE pc CategoryID = 5
20
Trang 11Show Product Page by Page
Hai phương pháp paging
Paging tại Data tier level ?
Paging tại Presentation tier level ?
Sử dụng Data tier level
Better performance
Áp dụng một số kỹ thuật khá hay:
Sử dụng DbDataReader hoặc
Write custom store procedures => best
21
Show Product Page by Page
Ví dụ:
SELECT ROW_NUMBER () OVER ( ORDER BY ProductID )
AS Row , Name
FROM Product
Ghi chú: áp dung cho SQL 2005 : ROW_NUMBER()
SELECT Row , Name
FROM (
22
Trang 12ROW_NUMBER()
23
Show Product Page by Page
Kỹ thuật Table Variables
declare a new TABLE variable
DECLARE @Products TABLE
(RowNumber INT ,
ProductID INT ,
Name VARCHAR (50),
Description VARCHAR (5000))
populate the table variable with the complete list of products
INSERT INTO @Products
SELECT ROW_NUMBER () OVER ( ORDER BY Product ProductID)
AS Row ,
ProductID, Name , Description
FROM Product
24
Trang 13Store Procedures
Syntax
CREATE PROCEDURE < procedure name >
[(
<parameter name > <parameter type > [=<default value>]
[INPUT|OUTPUT],
<parameter name > <parameter type > [=<default value>]
[INPUT|OUTPUT],
)]
AS
<stored procedure body >
25
Store Procedures
Ví dụ: GetDepartmentDetails
CREATE PROCEDURE GetDepartmentDetails
(@DepartmentID int )
AS
SELECT Name , Description
FROM Department
WHERE DepartmentID = @DepartmentID
26
Trang 14Store Procedure sử dụng Output Parameter
Ví dụ: GetProductsOnCatalogPromotion
27
Store Procedure sử dụng Output Parameter
Các Store Procedure khác:
GetProductsInCategory
GetProductsOnDepartmentPromotion
28
Trang 15M ụ c l ụ c
1. Xây dựng thành phần Data Tier Code
1 Relational Database
2 Các bước tiền xử lý
3 ADO.NET với Parameterized Store Procedures
2. Xây dưng thành phần Business Tier Code
3. Xây dựng thành phần Presentation Tier Code
29
ADO.NET v ớ i Parameterized Store Procedures
Sử dụng đối tượng DbCommand (tổng quát của
SqlCommand)
30
Trang 16DbCommand comn = …
DbParameter param = comm CreateParameter();
param ParameterName = "@DepartmentID";
param Value = value;
param DbType = DbType.Int32;
comm Parameters Add(param);
31
DbCommand v ớ i Output Parameter
DbCommand comn = …
DbParameter param= comm.CreateParameter();
comm.Parameters.Add(param);
32
Trang 17Thành ph ầ n Business Tier Code
Thêm thông tin trong web.config,
BalloonShopConfiguration class, CatalogAccess
class
33
Thành ph ầ n Presentation Tier Code
Xây dựng các thành phần
CategoriesList.ascx: hiển thị danh sách các Category
thuộc một Department
Catalog.aspx: hiển thị thông tin về Department hoặc
Category
ProductList.ascx: hiển thị danh sách các sản phẩm
Product.aspx: hiển thị thông tin chi tiết về một sản
34