Bài Giải môn Thiết kế cơ sở dữ liệu chuyên ngành Kế toán của Trường Đại học Công nghiệp thành phố Hồ Chí Minh Chu trình Bán hàng thực hiện trên phần mềm SQL, lời giải chi tiết và hình ảnh cụ thể ở từng bước ở từng bước.
Trang 1CHÚ Ý: KHI THI CÁC EM CHỈ CẦN LÀM THEO YÊU CẦU
VÀ KHÔNG NÊN PHỨC TẠP HÓA VẤN ĐỀ
Loại tiền (Loại tiền, Tên loại tiền)
Bảng 3: Nhân viên: (Gôm chung Nhân viên bán hàng, nhân viên thu tiền và thủ quỹ)
Nhân viên (Mã nhân viên, Tên nhân viên, Bộ phận, chức vụ)
Bảng 4: Khách hàng
Khách hàng (Mã khách hàng, Tên khách hàng, Địa chỉ, Mã số thuế)
Bảng 5: Thông tin KH
Thông tin (Mã khách hàng , Số điện thoại )
(Do mối quan hệ giữa Hàng tồn kho và bán hàng là M:N nên tạo thêm 1 bảng mới
1 mặt hàng có thể được bán nhiều lần và 1 lần có thể bán nhiều mặt hàng)
Trang 2Bảng 8: Thu tiền
Thu tiền (Ngày, Số phiếu, loại tiền, tỷ giá, Mã nhân viên, Mã khách hàng)
Bảng 9: Chi tiết thu tiền
Chi tiết thu tiền (Số phiếu, Số hóa đơn, Số tiền)
THỰC HIỆN (55 phút)
1 Tạo Database (đặt tên theo quy ước)
- Click chuột phải vào mục Database = > New Database
2 Tạo bảng
- Click chuột phải vào mục Tables = > New Table…
- Các em nên thống nhất kiểu dữ liệu, chiều dài cho các cột mã như Mã NV, Mã KH … để dễ nhớ (Tuynhiên khi thiết lập mối quan hệ chú ý, coi chừng nhầm)
- Muốn sửa lại cấu trúc bảng: Click chuột phải vào bảng => Chọn Design
- Để dễ tạo cấu trúc cho các bảng sau, các em nên bung các cột để dễ xem
- Các em có thể copy từ Excel qua …
Trang 33 Thiết lập mối quan hệ
- Click chuột phải vào mục Database Diagrams = > New Database Diagrams …
- Chọn các bảng liên quan để Add vào
Tạo các mối quan hệ
Trang 4- Nếu muốn xem hay xóa mối quan hệ thì click chuột phải vào sợi dây quan hệ, chọn Delete….
- Coi chừng kéo nhầm mqh (ví dụ MaKH lại kéo nhầm thành MaNV)
- Muốn sửa lại lược đồ: Click chuột phải vào lược đồ => Chọn Modify
4 Nhập liệu (Copy bên Excel qua)
* Nhập liệu theo mối quan hệ 1-N (nhập bảng 1 trước)
- Click chuột phải vào bảng => Edit Top … Rows
Trang 5Nếu các em đã tạo bảng trên Excel thì copy toàn bộ bảng và dán qua (chú ý trình tự cột nhé)
(Các em chưa làm quen nhiều với Excel thì không nên xử lý nhiều trên Excel mà nên dùng chức năng đơn giản như Lọc, Tìm và thay thế, sao, chép…)
5 Lập báo cáo (CÁC EM THỐNG NHẤT CÁCH LÀM NÀY NHÉ – OFFICE 2016 TRỞ VỀ SAU)
a Liệt kê các khách hàng có mua hàng trong tháng 1 năm 2020
Chọn Database => Mở cửa sổ query => Save lại lền và nhớ nơi lưu trữ
Trang 6Click vào cửa sổ Query => Design Query in Editor…
Thêm các bảng có liên quan
Trang 7Chọn các chỉ tiêu cần lấy và lấy ntn?
Giải thích: (Các em xem kỹ cấu trúc đơn giản của lệnh Select)
Column: Cột cần lấy
Alias: Tiêu đề muốn hiện lên
Table: Từ bảng
Output: Xuất dữ liệu ra hay chỉ để xử lý
Sort Type: Kiểu sắp xếp
Sort Order: Trình tự sắp xếp
Filter: Tiêu chí lọc
DISTINCT: Không trùng
Trang 8Sau đó OK=> Câu truy vấn được đưa vào cửa sổ
Bôi đen câu lệnh truy vấn và thực thi Execute (Nhấn F5)
Kiểm tra, sai thì sửa lại: Các em có thể sửa trực tiếp trên câu truy vấn hoặc bôi đen toàn bộ câu truy
vấn => Design Query in Editor…
Mở Excel, đặt tên theo quy ước (Tên file, tên sheet, tên bảng, tên query…)
Để lập báo cáo các em vào mục Data => Get Data => From Database
Trang 9Sever: Tên máy chủ
Database: Tên Database
=> Click vào nút Advanced => hiện cửa sổ SQL statement => Copy SQL câu a dán vào =>OK
=> Nhấn Connect => Load
Trang 10=> Báo cáo đổ ra bảng => Vào Tab Query
Chọn Properties => Nhập Query Name, nên check vào Refresh data when Opening the file
Trang 11b Tổng doanh số bán ra theo nhân viên
c Tổng doanh số bán ra theo khách hàng và mặt hàng trong tháng 1 năm 2020
Trang 12d Lập báo cáo tổng hợp công nợ cuối tháng tháng 1 năm 2020
(Để đơn giản tách thành các bước nhỏ)
Lập tổng tiền phải thu
Lập bảng đã thu
Trang 13Nối Dữ liệu các bảng
Tính công nợ
Kết quả
e Tổng doanh số bán cho khách hàng ra theo Khu vực (Tỉnh, Thành phố)- SV TỰ LÀM NHÉ!
a: Nếu 1 công ty có 1 cửa hàng: Để làm câu này các em tách cột địa chỉ trong bảng 4.Khachhang thành 2 cột (Thêm cột Khu vục)
b: Nếu 1 công ty có nhiều cửa hàng: Thêm cột Khu vực trong bảng 6.BanHang
Trang 14Giải bằng câu lệnh Truy vấn:
Trang 16CÁC EM CÓ THỂ LÀM THEO CÁCH SAU KHI LẬP BÁO CÁO (KHI TƯƠNG ĐỐI KHÁ VỀ EXCEL)
Vào Data => From Other Sources => From SQL Server
Chọn máy chủ => Next
Chọn Database, chọn bảng, mối quan hệ => Next
Trang 17Save Data Connection File and Finish (Chú ý nếu có quy ước thì đặt, không thì để mặc định)
Trang 18Chọn kiểu báo cáo muốn làm
Khi làm câu sau: Data => Existing Connections => Chọn hoặc Browse for More…
Hoặc copy Sheet Báo cáo rồi sửa lại theo yêu cầu mới
Trang 19Sau khi Connect thì trong Excel đã có các bảng và mối quan hệ
Các em có thể kiểm tra: vào File => Options => chọn Customize Ribbon hoặc lick chuột phải phía ngoài chọn Customize Ribbon
Trang 20check vào Developer để Tab này hiện lên
Rồi chọn Tab Developer, chọn mục COM Add-ins và chọn Microsoft Power Pivot for Excel kiểm tra
Trang 21CÁC CHÚ Ý
1 Trước khi vào thi:
a Mở và xem máy chủ SQL Server Running chưa (Trang 22)
b Thiết lập sẵn cho phép sửa cấu trúc bảng (Trang 22)
c Cho phép tạo lược đồ quan hệ (nếu được) (Trang 21)
d Cửa sổ nhìn không quen (Trang 22)
2 Khi vào thi:
a Chú ý đường dẫn Database được tạo
b Lưu câu lệnh truy vấn (Ổ E:\)
c Cho phép tạo lược đồ (Trang 21)
d.Tạo tên và đường dẫn, phục hồi Database theo quy định
MỘT SỐ LỖI SINH VIÊN THƯỜNG GẶP
- SQL server không chạy (Trang 22)
- Không cho phép sửa cấu trúc bảng (Trang 22)
- Không cho phép tạo lược đồ
Click chuột phải vào Database => Properties => Chọn mục File => Mục Owner click vào … => Mở cửa
sổ Select Database Owner => Chọn Browse => Check vào mục sa và OK
- Sửa lại bảng: Click chuột phải vào bảng => Chọn Design
- Cửa sổ nhìn không quen(Trang 20)
Trang 22TRƯỚC KHI THI:
1 Xem SQL server Running chưa:
Click chuột phải vào thanh Task Manager => chọn Task Manager => Chọn Tab Services
Nếu SQL server đang Stopped thì click chuột phải chọn Running
Nếu không được thì hỏi giảng viên
2 Mở SQL và cho phép sửa cấu trúc bảng:
Vào Menu Tools => chọn Options => Chọn Designer = > Bỏ check Prevent saving changes that …
3 Reset cửa sổ :
Vào Menu Window = > Reset Window Layout
Trang 232 SQL
CÂU LỆNH ĐƠN GIẢN CỦA SELECT
SELECT Biểu thức hoặc các cột
[ INTO Tên bảng mới ]
FROM Tên bảng nguồn
[ WHERE điều kiện]
[ GROUP BY Tên cột làm tiêu thức thống kê ]
[ HAVING điều kiện thống kê ]
[ ORDER BY biểu thức sắp xếp [ ASC | DESC ] ]
TOÁN TỬ UNION TRONG SQL SERVER
SELECT bieu_thuc1, bieu_thuc2, … bieu_thucn
HÀM CHARINDEX: Trả về vị trí bắt đầu của một chuỗi ký tự trong một chuỗi ký tự cho trước.
CÚ PHÁP: CHARINDEX(chuỗi cần xác định vị trí, chuỗi cho trước, vị trí bắt đầu tìm)
Ví dụ: tìm vị trí bắt đầu của chuỗi DH trong chuỗi 'Lớp DHKT3TC'
SELECT CHARINDEX(‘DH’, N'Lớp DHKT3TC')
5
HÀM LEFT | RIGHT: Lấy n ký tự bắt đầu từ đầu bên trái|phải của chuỗi.
CÚ PHÁP: LEFT | RIGHT(chuỗi cần lấy,số ký tự cần lấy)
Ví dụ: Lấy chữ Lớp trong chuỗi 'Lớp DHKT3TC'
Trang 24HÀM SUBSTRING: Lấy n ký tự bắt đầu từ vị trí bất kỳ của chuỗi.
CÚ PHÁP: SUBSTRING (chuỗi cần lấy, vị trí ký tự đầu tiên, số ký tự cần lấy)
Ví dụ: Lấy chữ DH trong chuỗi 'Lớp DHKT3TC'
HÀM UPPER| LOWER: đổi một chuỗi từ chữ thường | hoa sang chữ hoa | thường
CÚ PHÁP: UPPER| LOWER(chuỗi cần đổi)
Trang 26SELECT ROUND(1235.13459,-3)
1000.00000
HÀM POWER: Tính lũy thừa của một số
CÚ PHÁP: POWER(Số cần lũy thừa, bậc lũy thừa)
Ví dụ: Tính lũy thừa của 2 3
SELECT POWER(2,3)
8
Hàm ngày tháng
HÀM DATEADD: Thêm vào một số ngày, hoặc tháng, hoặc năm của một ngày cho trước.
CÚ PHÁP: DATEADD(bộ phận của ngày, giá trị thêm vào, ngày cần thêm)
Với: bộ phận của ngày có thể là ngày, tháng hoặc năm Xem bảng Các bộ phận của ngày
Ví dụ: Thêm vào ngày 15/05/2011 thêm 2 ngày
SELECT DATEADD(dd,2, ‘15/05/2011’)
2011-05-17 00:00:00.000
HÀM DATENAME: Trả về tên của bộ phận một ngày của ngày xác định.
CÚ PHÁP: DATEADD(bộ phận của ngày, ngày cần lấy)
Với: bộ phận của ngày có thể là ngày, tháng hoặc năm Xem bảng Các bộ phận của ngày
Ví dụ: trả về tên tháng của ngày 15/05/2011
SELECT DATENAME(mm, ‘15/05/2011’)
May
HÀM DATEPART: Trả về số nguyên đại diện bộ phận của ngày xác định.
CÚ PHÁP: DATEPART(bộ phận của ngày, ngày cần lấy)
Với: bộ phận của ngày có thể là ngày, tháng hoặc năm Xem bảng Các bộ phận của ngày
Ví dụ: trả về tháng số mấy của ngày 15/05/2011
Trang 27HÀM DAY|MONTH|YEAR : Trả về ngày|tháng|năm của một ngày xác định.
HÀM COUNT: Đếm các giá trị trong một tổ
HÀM MAX: Tính giá trị lớn nhất của một tổ
HÀM MIN: Tính giá trị nhỏ nhất của một tổ
HÀM SUM: Tính tổng các giá trị của một tổ
Toán tử luận lý (logic)
BETWEEN Đúng nếu giá trị nằm trong một đoạn
Trang 283 Kiểu dữ liệu trong SQL
Kiểu dữ liệu chuỗi kí tự trong SQL Server
Dưới đây là các kiểu dữ liệu thuộc nhóm chuỗi kí tự trong SQL Server (Transact-SQL).
CHAR(kich_thuoc) Tối đa 8000 kí tự.
Độ dài tùy biến.
Nếu chỉ định là toi_da thì tối đa là 2GB.
Không chứa kí tự Unicode.
Không chứa kí tự Unicode.
NCHAR(kich_thuoc) Tối đa 4000 kí tự Độ dài cố định.
Độ dài tùy biến.
Nếu số toi_da được chi định thì số
Độ dài tùy biến.
Nếu chỉ định là toi_da thì tối đa là 2GB.
Trang 29Kiểu dữ liệu dạng số trong SQL Server
Dưới đây là danh sách các kiểu dữ liệu thuộc dạng số trong SQL Server (Transact-SQL).
SMALLINT Từ -32768 (-2^15) đến 32767 (2^15)
2,147,483,647 BIGINT Từ (-2^63) -9,223,372,036,854,775,808
DECIMAL(m,d)
m mặc định là 18 nếu không được chỉ định cụ thể.
d mặc định là 0 nếu không được chỉ định cụ thể.
d mặc định là 0 nếu không được chỉ định cụ thể.
m là tổng số lượng các
số còn d là số lượng các
số nằm sau dấu phẩy Đồng nghĩa với kiểu dữ liệu DECIMAL.
NUMERIC(m,d)
m mặc định là 18 nếu không được chỉ định cụ thể.
d mặc định là 0 nếu không được chỉ định cụ thể.
m là tổng số lượng các
số còn d là số lượng các
số nằm sau dấu phẩy Đồng nghĩa với kiểu dữ liệu DECIMAL.
FLOAT(n) Số dấu phẩy động n mặc định là 53 nếu không được chỉ định cụ thể.
n là số lượng của số bit lưu trữ trong một kí hiệu hóa học.
SMALLMONEY Từ ( 214,748.3647-2^31) - 214,748.3648 đến (2^31)
MONEY Từ ( đến (-2^63) -922,337,203,685,477.5808
Trang 30Kiểu dữ liệu ngày tháng/thời gian trong SQL Server
Giờ lấy từ '00:00:00' to '23:59:59:997'
Hiển thị dưới dạng MM-DD hh:mm:ss[.mmm]
‘YYYY-DATETIME2(chính xác
tới số thập phân của
giây)
Giá trị lấy từ '0001-01-01' đến '9999-12-31'.
Thời gian lấy từ '00:00:00' đến '23:59:59:9999999'.
Hiển thị dưới dạng MM-DD hh:mm:ss[.số giây thập phân]'
'YYYY-SMALLDATETIME
Giá trị lấy từ '1900-01-01' đến '2079-06-06'.
Thời gian lấy từ '00:00:00' đến '23:59:59'.
Hiển thị dưới dạng MM-DD hh:mm:ss
'YYYY-TIME
Giá trị lấy từ '00:00:00.0000000' đến '23:59:59.9999999'.
Ngày lấy từ '0001-01-01' đến '9999-12-31'.
Hiển thị dưới dạng MM-DD hh:mm:ss[.nnnnnnn]'
'YYYY-DATETIMEOFFSET
(chính xác tới số thập
phân của giây)
Giá trị thời gian lấy từ '00:00:00' đến