Được người sử dụng chỉnh sửa, bổ sung,truy cập, truy xuất tùy theo mục đích sử dụng khác nhau, giúp cho việc quản lý các dữliệu trở nên dễ dàng hơn.Tuy nhiên, trong những năm gần đây nhữ
QUẢN LÝ CƠ SỞ DỮ LIỆU
Giới thiệu Cơ sở dữ liệu
Cơ sở dữ liệu AdventureWorks mô phỏng hoạt động của công ty hư cấu mang tên Adventure Works Cycles, một tập đoàn đa quốc gia lớn chuyên sản xuất và kinh doanh xe đạp làm từ kim loại và các chất liệu tổng hợp Dữ liệu này giúp các nhà phát triển và doanh nghiệp hiểu rõ hơn về quy trình kinh doanh, quản lý sản phẩm và hoạt động của một công ty sản xuất xe đạp quy mô lớn AdventureWorks là một ví dụ minh họa lý tưởng cho các ứng dụng quản lý dữ liệu và phân tích kinh doanh trong môi trường thực tế ảo.
Modul: Tổ chức kinh doanh - Quản lý nhân viên bán hàng, cửa hàng
Mô tả Cơ sở dữ liệu
CSDL AdventureWorks trong Modul Tổ chức kinh doanh - Quản lý nhân viên bán hàng, cửa hàng gồm có 8 bảng có cấu trúc như sau:
RevisionNumber Số cộng dồn để theo dõi những thay đổi đối với đơn hàng bán hàng theo thời gian.
OrderDate Ngày tạo đơn đặt hàng.
DueDate Ngày đặt hàng là do khách hàng.
ShipDate Ngày đơn đặt hàng được chuyển đến khách hàng.
Status Đặt hàng tình trạng hiện tại 1 = Đang trong quá trình; 2 Được chấp thuận; 3 = Bị tồn đọng; 4 = Bị từ chối; 5 = Đã vận chuyển; 6 = Đã hủy
OnlineOrderFlag 0 = Đơn hàng do người bán hàng đặt 1 = Đơn đặt hàng trực tuyến của khách hàng.
SalesOrderNumber Số định danh đơn hàng bán hàng duy nhất.
PurchaseOrderNumber Khách hàng mua hàng số tham chiếu.
AccountNumber Tham chiếu số tài khoản kế toán
CustomerID Số định danh khách hàng Khóa ngoại cho
SalesPersonID Người bán hàng đã tạo đơn đặt hàng Khóa ngoại cho
TerritoryID Lãnh thổ nơi giao dịch được thực hiện Khóa ngoại đối với SalesTerritory.SalesTerritoryID.
BillToAddressID Địa chỉ thanh toán của khách hàng Khóa ngoại cho
ShipToAddressID Địa chỉ giao hàng của khách hàng Khóa ngoại cho
ShipMethodID Phương thức vận chuyển Khóa ngoại cho
CreditCardID Số định danh thẻ tín dụng Khóa ngoại cho
CreditCardApprovalCode Mã phê duyệt do công ty phát hành thẻ tín dụng cung cấp. CurrencyRateID Tỷ giá hối đoái được sử dụng Khóa ngoại cho
SubTotal Tổng phụ bán hàng Được tính là SUM
(SalesOrderDetail.LineTotal) cho SalesOrderID thích hợp.
Freight Chi phí vận chuyển.
TotalDue Tổng số tiền đến hạn từ khách hàng Được tính dưới dạng
Trong hệ thống quản lý dữ liệu, mỗi bản ghi đều có các trường quan trọng như rowguid và ModifiedDate Trường rowguid là định danh duy nhất của bản ghi, giúp phân biệt và hỗ trợ quá trình sao chép hợp nhất dữ liệu hiệu quả Trong khi đó, trường ModifiedDate ghi nhận ngày và giờ cập nhật cuối cùng của bản ghi, đảm bảo tính chính xác và theo dõi lịch sử chỉnh sửa Các thuộc tính này đóng vai trò then chốt trong việc duy trì tính toàn vẹn và đồng bộ dữ liệu trong hệ thống.
Sales Order Identification Khóa chính Khóa ngoại cho
Sales Order Detail Identification Khóa chính Một số duy nhất gia tăng cho mỗi sản phẩm đã bán.
Carrier Tracking Number Số theo dõi lô hàng do người gửi hàng cung cấp. Order Quantity Số lượng đặt hàng trên mỗi sản phẩm.
Product Identification Sản phẩm đã bán cho khách hàng Khóa ngoại cho
Special Offer Identification Mã khuyến mại Khóa ngoại cho
Unit Price Giá bán của một sản phẩm duy nhất.
Unit Price Discount Số tiền chiết khấu.
Line Total Tổng phụ trên mỗi sản phẩm Được tính dưới dạng
Số ROWGUIDCOL định danh duy nhất của bản ghi Được sử dụng để hỗ trợ một mẫu sao chép hợp nhất.
Modification Date Ngày và giờ bản ghi được cập nhật lần cuối.
PersonID Khóa ngoại cho Person.BusinessEntityID
StoreID Khóa ngoại cho Store.BusinessEntityID
TerritoryID ID của lãnh thổ mà khách hàng đang sinh sống Khóa ngoại cho
Số AccountNumber là định danh khách hàng do hệ thống kế toán tự ấn định, giúp nhận diện chính xác thông tin khách hàng trong hệ thống Trong khi đó, trường rowguid (ROWGUIDCOL) là mã định danh duy nhất của từng bản ghi, được sử dụng để hỗ trợ các thao tác sao chép và hợp nhất dữ liệu một cách chính xác và không trùng lặp.
ModifiedDate Ngày và giờ bản ghi được cập nhật lần cuối.
TerritoryID Khóa chính cho các bản ghi SalesTerritory.
Name Mô tả lãnh thổ bán hàng
CountryRegionCode Mã quốc gia hoặc vùng tiêu chuẩn ISO Khóa ngoại cho
Group Khu vực địa lý mà lãnh thổ bán hàng thuộc về.
SalesYTD Doanh số bán hàng trong lãnh thổ từ năm đến nay.
SalesLastYear Doanh số bán hàng trong lãnh thổ năm trước.
CostYTD Chi phí kinh doanh trên lãnh thổ từ năm đến nay.
Chi phí kinh doanh trên lãnh thổ trong năm trước phản ánh các khoản chi tiêu liên quan đến hoạt động thương mại trong năm cũ Mã hàng hóa duy nhất của bản ghi được xác định bằng trường rowguid, hỗ trợ quá trình sao chép hợp nhất dữ liệu hiệu quả.
ModifiedDate Ngày và giờ bản ghi được cập nhật lần cuối.
BusinessEntityID Khóa chính Đại diện bán hàng Khóa ngoại cho
TerritoryID Khóa chính Số định danh lãnh thổ Khóa ngoại đối với
StartDate Khóa chính Ngày đại diện bán hàng bắt đầu làm việc trong lãnh thổ.
Ngày kết thúc (EndDate) thể hiện ngày mà đại diện bán hàng rời khỏi công việc trong khu vực Trường rowguid là mã định danh duy nhất của bản ghi, hỗ trợ quá trình sao chép và hợp nhất dữ liệu hiệu quả.
ModifiedDate Ngày và giờ bản ghi được cập nhật lần cuối.
BusinessEntityID Khóa chính Khóa ngoại cho Customer.BusinessEntityID.
Name Tên của cửa hàng.
SalesPersonID ID của nhân viên bán hàng được chỉ định cho khách hàng
Khóa ngoại cho SalesPerson.BusinessEntityID.
Thông tin nhân khẩu học của cửa hàng bao gồm số lượng nhân viên, doanh thu hàng năm và loại hình cửa hàng, giúp hiểu rõ về quy mô và đặc điểm của doanh nghiệp Mã định danh duy nhất của bản ghi được xác định bằng trường rowguid, hỗ trợ quá trình sao chép và hợp nhất dữ liệu chính xác và hiệu quả.
ModifiedDate Ngày và giờ bản ghi được cập nhật lần cuối.
BusinessEntityID Số nhận dạng nhân viên bán hàng Khóa ngoại cho
QuotaDate Ngày hạn ngạch bán hàng.
SalesQuota Số lượng hạn ngạch bán hàng. rowguid Số ROWGUIDCOL định danh duy nhất của bản ghi Được sử dụng để hỗ trợ một mẫu sao chép hợp nhất.
ModifiedDate Ngày và giờ bản ghi được cập nhật lần cuối.
BusinessEntityID Khóa chính cho hồ sơ SalesPerson Khóa ngoại cho
Employee.BusinessEntityIDTerritoryID Lãnh thổ hiện được chỉ định cho Khóa ngoại đối với
SalesQuota Doanh số dự kiến hàng năm.
Bonus Tiền thưởng đến hạn nếu đáp ứng đủ hạn ngạch.
CommissionPct Phần trăm hoa hồng nhận được trên mỗi lần bán hàng.
SalesYTD Tổng doanh số từ năm đến nay.
SalesLastYear Sales total of the previous year. rowguid Số ROWGUIDCOL định danh duy nhất của bản ghi Được sử dụng để hỗ trợ một mẫu sao chép hợp nhất.
ModifiedDate Ngày và giờ bản ghi được cập nhật lần cuối.
Sơ đồ mối quan hệ
Cust omerID PersonID StoreID Territ oryID AccountNumber rowguid ModifiedDate
SalesOrderID SalesOrderDetailID CarrierTrackingNumber OrderQty ProductID SpecialOfferID UnitPrice UnitPriceDiscount LineTotal rowguid ModifiedDate
SalesOrderID RevisionNumber OrderDate DueDate ShipDate Status OnlineOrderFlag SalesOrderNumber PurchaseOrderNumber AccountNumber CustomerID SalesPersonID TerritoryID BillToAddressID ShipToAddressID ShipMethodID CreditCardID CreditCardApprovalCode CurrencyRateID SubTotal TaxAmt Freight TotalDue Comment rowguid ModifiedDate
Territ oryID Name CountryRegionCode [Group]
SalesYTD SalesLast Year CostYTD CostLastYear rowguid ModifiedDate
BusinessEntityID TerritoryID StartDate EndDate rowguid ModifiedDate
BusinessEntityIDNameSalesPersonIDDemographics rowguidModifiedDate
CÁC THAO TÁC TRÊN CƠ SỞ DỮ LIỆU
Tạo các View
1.1 View có điều kiện đơn giản trên 1 bảng
The goal is to calculate the total value of invoices with a CarrierTrackingNumber starting with "4BD." The relevant information includes SalesOrderID, CarrierTrackingNumber, and SubTotal, which is computed by summing the product of OrderQty and UnitPrice for each invoice This enables efficient tracking and analysis of sales based on specific carrier tracking number prefixes, enhancing sales reporting and inventory management.
SELECT SalesOrderID, CarrierTrackingNumber, SUM (OrderQty UnitPrice) * AS SubTotal FROM Sales SalesOrderDetail
1.2 View có điều kiện đơn giản trên nhiều bảng
- Yêu cầu: Tạo View hiển thị top 5 tổng doanh số cao nhất từ cột TotalDue mỗi năm và mỗi tháng cho từng khách hàng
SELECT TOP 5 C CustomerID , YEAR (OrderDate) AS OrderYear, MONTH (OrderDate) ASOrderMonth, SUM (TotalDue) AS TotalSales
FROM Sales Customer C, Sales SalesOrderHeader SOH
GROUP BY C.CustomerID , YEAR (OrderDate), MONTH(OrderDate)
1.3 View có điều kiện phức tạp/ truy vấn lồng trên 1 bảng
To generate views listing duplicate sales orders (SalesOrderID) within the period from May 1, 2011, to October 31, 2011, that have a total amount exceeding 100,000, the query should include SalesOrderID, OrderDate, and SubTotal, where SubTotal is calculated as the sum of (OrderQty * UnitPrice) These filtered results help identify high-value repeat orders, optimizing sales analysis and inventory management strategies.
WHERE SalesOrderID = Sales SalesOrderHeader SalesOrderID
1.4 View có điều kiện phức tạp/ truy vấn lồng trên nhiều bảng
- Yêu cầu: Tạo View hiển thị danh sách các hóa đơn có SubTotal (Tổng phụ bán hàng) >
3500 và có hơn 70 loại sản phẩm.
WHERE SalesOrderID = Sales SalesOrderHeader SalesOrderID
1.5 View cập nhật dữ liệu
- Yêu cầu: Nhận thấy SubTotal trong các hóa đơn khá cao, tăng nhẹ 10% thuế (TaxAmt) cho hóa đơn có SubTotal cao nhất ngay trên View vw_ListInvoicesHaveLotsOfProducts.
SELECT TOP SalesOrderID, SubTotal, TaxAmt 1
SELECT TOP SalesOrderID, SubTotal, TaxAmt 1
Xây dựng các Stored Procedure
2.1 Thủ tục không tham số
- Yêu cầu: Viết thủ tục lấy ra tiền thưởng cao nhất của trong bảng Sales.SalesPerson
SELECT MAX(Bonus) AS MaxBonus
2.2 Thủ tục có tham số mặc định
- Yêu cầu: Viết thủ tục có tham số mặc định là @ID = 274 lấy ra tổng số lượng hạn ngạch bán hàng (TotalSalesQuota) của ID đó.
SELECT BusinessEntityID, SUM (SalesQuota) AS TotalSalesQuota
2.3 Thủ tục có tham số output
Để thực hiện thủ tục yêu cầu, bạn cần viết một thủ tục có chứa tham số output để truyền vào mã quốc gia Khi người dùng cung cấp mã quốc gia, thủ tục sẽ hiển thị thông tin chi tiết về quốc gia đó và đếm số lượng lãnh thổ thuộc quốc gia đó Điều này giúp người dùng dễ dàng truy xuất dữ liệu và biết được số lượng lãnh thổ liên quan một cách nhanh chóng và chính xác Bằng cách này, thủ tục hỗ trợ hiệu quả trong việc quản lý và tra cứu thông tin liên quan đến các quốc gia và lãnh thổ trong hệ thống của bạn.
@Code VARCHAR(2), @TerritoryCount INT OUTPUT
EXEC sp_CountTerritory 'AU' , @Count OUTPUT
2.4 Thủ tục có tham số input
Để tính tổng tiền thu (TotalDue) của mỗi khách hàng trong một tháng bất kỳ của một năm bất kỳ, người dùng cần nhập tham số tháng và năm từ bàn phím Chương trình sẽ truy xuất dữ liệu khách hàng dựa trên CustomerID và tính tổng tiền thu bằng cách cộng dồn các giá trị TotalDue của từng khách hàng trong khoảng thời gian đã chọn Kết quả sẽ hiển thị danh sách CustomerID kèm theo tổng số tiền thu (SumofTotalDue) để cung cấp cái nhìn tổng thể về doanh thu từng khách hàng trong tháng và năm mong muốn Thủ tục này giúp doanh nghiệp theo dõi và quản lý doanh thu theo từng khách hàng một cách chính xác và dễ dàng.
@CustomerID INT , @Year INT , @Month INT
SELECT CustomerID, SUM (TotalDue) AS SumOfTotalDue
SalesQuota Doanh số dự kiến hàng năm.
Tiền thưởng sẽ đến hạn khi đáp ứng đủ hạn ngạch đặt ra Phần trăm hoa hồng (CommissionPct) thể hiện tỷ lệ hoa hồng nhận được trên mỗi lần bán hàng, góp phần thúc đẩy doanh số bán hàng Tổng doanh số từ đầu năm đến nay (SalesYTD) phản ánh hiệu quả kinh doanh của doanh nghiệp trong năm đó.
SalesLastYear Sales total of the previous year. rowguid Số ROWGUIDCOL định danh duy nhất của bản ghi
3 Sơ đồ mối quan hệ
Territ oryID Name CountryRegionCode [Group]
SalesYTD SalesLast Year CostYTD CostLastYear rowguid ModifiedDate
BusinessEntityID TerritoryID StartDate EndDate rowguid ModifiedDate
BusinessEntityIDNameSalesPersonIDDemographics rowguidModifiedDate
Tên đề tài: Tổ chức kinh doanh - Quản lý nhân viên bán hàng, cửa hàng Trang
SalesOrderID SalesOrderDetailID CarrierTrackingNumber OrderQty ProductID SpecialOfferID UnitPrice UnitPriceDiscount LineTotal rowguid ModifiedDate
SalesOrderID RevisionNumber OrderDate DueDate ShipDate Status OnlineOrderFlag SalesOrderNumber PurchaseOrderNumber AccountNumber CustomerID SalesPersonID TerritoryID BillToAddressID ShipToAddressID ShipMethodID CreditCardID CreditCardApprovalCode CurrencyRateID SubTotal TaxAmt Freight TotalDue Comment rowguid ModifiedDate
CHƯƠNG 2 CÁC THAO TÁC TRÊN CƠ SỞ DỮ LIỆU
1.1 View có điều kiện đơn giản trên 1 bảng
The task involves calculating the total value of invoices with a shipment tracking code (CarrierTrackingNumber) starting with '4BD.' The key information includes the SalesOrderID and CarrierTrackingNumber for each invoice The total amount (SubTotal) is determined by summing the product of OrderQty and UnitPrice across all relevant invoices This process ensures accurate aggregation of invoice values for shipments with specific tracking code prefixes, optimizing sales and logistics analysis.
SELECT SalesOrderID, CarrierTrackingNumber, SUM(OrderQty UnitPrice) * AS Sub FROM Sales SalesOrderDetail.
1.2 View có điều kiện đơn giản trên nhiều bảng
SELECT TOP 5 C CustomerID , YEAR(OrderDate) AS OrderYear, MONTH(OrderDate OrderMonth, SUM(TotalDue) AS TotalSales
Tên đề tài: Tổ chức kinh doanh - Quản lý nhân viên bán hàng, cửa hàng9 Trang Đồ án Môn học: Hệ quản trị cơ sở dữ liệu
FROM Sales Customer C, Sales SalesOrderHeader SOH
1.3 View có điều kiện phức tạp/ truy vấn lồng trên 1 bảng
Create a report listing duplicate sales orders (SalesOrderID) within the period from May 1, 2011, to October 31, 2011, where the total amount exceeds 100,000 The report should include SalesOrderID, OrderDate, and SubTotal, with SubTotal calculated as the sum of (OrderQty * UnitPrice) for each order This analysis helps identify high-value orders that have been repeated, providing valuable insights into sales patterns and customer behavior during the specified timeframe.
WHERE SalesOrderID = Sales SalesOrderHeader .SalesOrderID
Tên đề tài: Tổ chức kinh doanh - Quản lý nhân viên bán hàng, cửa hàng10 Trang
WHERE SalesOrderID = Sales SalesOrderHeader .SalesOrderID
Tên đề tài: Tổ chức kinh doanh - Quản lý nhân viên bán hàng, cửa hàng11 Trang
1.5 View cập nhật dữ liệu
- Yêu cầu: Nhận thấy SubTotal trong các hóa đơn khá cao, tăng nhẹ 10% thuế (TaxAmt cho hóa đơn có SubTotal cao nhất ngay trên View vw_ListInvoicesHaveLotsOfProducts.
SELECT TOP SalesOrderID, SubTotal, TaxAmt1
WHERE SubTotal (SELECT MAX(SubTotal)
SELECT TOP SalesOrderID, SubTotal, TaxAmt1