Một cơ sở dữ liệu quan hệ: + Chứa dữ liệu trong các bảng, được cấu tạo bởi các dòng còn gọi là các mẩutin, và cột gọi là các trường.. + Quan hệ Một – Một: Là loại quan hệ dễ hiểu và dễ t
Trang 1Trường Đại Học Quang Trung
Khoa KT – CN
Trang 2Quy Nhơn – 01/2011
Trang 3Phần I: TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU
I Những khái niệm cơ bản về cơ sở dữ liệu.
1 Cơ sở dữ liệu là gì?
Cơ sở dữ liệu là một kho chứa thông tin Có nhiều loại cơ sở dữ liệu, nhưng ta chỉ đề cập đến cơ sở dữ liệu quan hệ, là kiểu cơ sở dữ liệu phổ biến nhất hiện nay Một cơ sở dữ liệu quan hệ:
+ Chứa dữ liệu trong các bảng, được cấu tạo bởi các dòng còn gọi là các mẩutin, và cột gọi là các trường
+ Cho phép lấy về (hay truy vấn) các tập hợp dữ liệu con từ các bảng
+ Cho phép liên kết các bảng với nhau cho mục đích truy cập các mẩu tin liênquan với nhau chứa trong các bảng khác nhau
2 Các kiểu cơ sở dữ liệu.
Cơ sở dữ liệu nội tại của Visual Basic, Jet, cung cấp 21 kiểu dữ liệu khác nhau
Binary Dùng để chứa các khối dữ liệu lớn như là đồ hoạ và các tập
tin âm thanh số hoá
Boolean Giá trị logic đúng hoặc sai
Byte Giá trị số nguyên một byte từ 0 đến 255
Currency Trường số có thuộc tính đặc biệt để chứa các trí trị tiền tệDate/Time Giá trị 8 byte thể hiện ngày hoặc giờ từ ngày 1/1/100 đến
ngày 31/12/9999Double Kiể dữ liệu số 8 byte dấu phẩy động
GUID Là một số 128 bye, cũng được gọi là định danh toàn thể duy
nhất Ta dùng số này để nhận dạng duy nhất các mẩu tin Số này được dùng trong các bản sao
Integer Số 2 byte đầu đủ từ -32768 đến 32767
Long Số 4 byte đầy đủ từ -2,147,483,648 đến 2,147,483,647
Long binary Trường giá trị lớn nhất có thể chứa các giá trị thập phân như
là hình ảnh hay tập tin( OLE Object ) Kiểu OLE Object nhúng trong cơ sở dữ liệu có thể lên tới 1
gigabyte
Trang 4Meno Trường gí trị lớn có thể chứa đến 65,535 ký tự Ta không cần
thiết phải khai báo trước chiều dài của trường này
Single type Dữ liệu số 4 byte, dấu phẩy đơn
Text Kiểu dữ liệu cáo chiều dài cố định, đòi hởi ta phải khai báo
chiều dài của trường khi ta khai báo kiểu dữ liệu Trường văn bản có thể dài từ 1 đến 255 ký tự
VarBinary Mẫu dữ liệu nhị phân biến đổi ( dùng với ODBCDirect )
3 Chuẩn hóa cơ sở dữ liệu:
Chuẩn hoá là một khái niệm liên quan đến mối quan hệ Về cơ bản, nguyên tắc của chuẩn hoá phát biểu rằng các bảng cơ sở dữ liệu sẽ loại trừ tính không nhất quán và giảm thiểu sự kém hiệu quả
Các cơ sở dữ liệu được mô tả là không nhất quán khi dữ liệu trong một bảng không tương ứng với dữ liệu nhập vào trong bảng khác Một cơ sở dữ liệu kém hiệuquả không cho phép ta trích ra cơ sở dữ liệu chính xác mà ta muốn
Các cơ sở dữ liệu chuẩn hoá cho phép ta tham chiếu đến một mẩu thông tin trong một bảng bất kỳ chỉ bằng khoá chính của thông tin đó
Ta quyết định cách thức chuẩn hoá của một cơ sở dữ liệu khi ta thết kế và khởi tạo một cơ sở dữ liệu Thông thường, mọi thứ về ứng dụng cơ sở dữ liệu - từ thiết
kế bảng cho đến thiết kế truy vấn, từ giao diện người sử dụng đến cách hoạt động của báo cáo - đều xuất phát từ cách chuẩn hoá cơ sở dữ liệu
+ Quan hệ Một – Một:
Là loại quan hệ dễ hiểu và dễ thực hiện nhất, bởi vì trong những mối quan hệ như vậy, một bảng sẽ lấy vị trí của một trường trong một bảng khác, trường liên quan cũng dễ nhận dạng Tuy nhiên, quan hệ một - một không phải là mối quan hệ thông dụng nhất trong ứng dụng cơ sở dữ liệu
Bởi vì một người bán hàng có trách nhiệm với nhiều khách hàng, ta có thể nói đã
có mối quan hệ một - nhiều giữa người bán hàng và khách hàng
Trang 5Để thực hiện mối quan hệ này trong thiết kế cơ sở dữ liệu, ta phải copy khoá chính của phía một đến bảng chứa phía nhiều trong quan hệ.
Trong một thiết kế giao diện người sử dụng, ta thực hiện quá trình copy khoá chính của một bảng đến khoá ngoại của một bảng liên hệ nhờ một điều khiển hộp danh sách hay hộp kết hợp Để tìm hiểu thêm thông tin về tổ chức giao diện
+ Quan hệ Nhiều – Nhiều:
Quan hệ nhiều - nhiều là bước phát triển của quan hệ một - nhiều ví dụ cổ điển của quan hệ nhiều nhiều là học sinh và lớp Mỗi học sinh có nhiều lới, mỗi lớp có nhiều học sinh ( Tuy nhiên,có lớp không có hoặc chỉ có một học sinh, và có thể học sinh chỉ có một hoặc không có lớp )
Để thiết lập quan hệ nhiều nhiều, ta có thể sửa lại ví dụ trước sao cho cơ sở dữ liệu có thể chứa nhiều người bán cho một người mua Mỗi người bán có nhiều khách hàng, và mỗi khách hàng có nhiều người bán
Giao diện người sử dụng phát triển trong Microsoft Access chủ yếu thực hiện quan hệ một - nhiều và quan hệ nhiều - nhiều bằng cách dùng biểu mẫu con Đối với một nhà lập trình VB, một biểu mẫu con Access tương tự một biểu mẫu trong biểu mẫu : Biểu mẫu chính hiển thị phía một trong quan hệ một nhiều, trong khi biểu mẫu con hiển thị các mẩu tin ở phía nhiều Thuận tiện của biểu mẫu con là nó không đòi hỏi phải dữ quan hệ giữa 2 bảng được nhất quán; ta chỉ quy định thuộc tính để trình bày khoá chính và khoá ngoại
Khác với Microsoft Access, VB không hỗ trợ biểu mẫu con để tự động hiển thị
tất cả các mẩu tin liên quan với một mẩu tin nhất định Thay vào đó, ứng dụng Visual Basic chủ yếu yêu cầu ta lập trình để thực hiện một giao diện người sử dụng dựa trên quan hệ nhiều nhiều
II Các kỹ thuật lập trình cơ sở dữ liệu:
Hiện nay đang tồn tại khá nhiều các kỹ thuật lập trình CSDL, tuy nhiên nhómchỉ trình bày hai kỹ thuật căn bản là DAO (Data Access Objects) và ADO (ActiveXData Objects)
1 Kỹ thuật DAO (Data Access Objects):
DAO (Data Access Objects - Các đối tượng truy xuất dữ liệu) là tập hợp bao gồm lớp các đối tượng có thể dùng để lập trình truy cập và xử lý dữ liệu trong các
hệ CSDL
Cách thức lập trình trên một hệ CSDL được mô tả tổng quát như sau:
Trang 6 Trong đó:
- Tầng ứng dụng: bao gồm những giao diện người sử dụng cũng như những
công cụ đơn giản mà người lập trình có thể dùng để xử lý dữ liệu theo các bài toán
- Tầng Kết nối dữ liệu: bao gồm tập hợp các công cụ, phương thức để kết
nối tới những dữ liệu cần làm việc trong CSDL
- Tầng Cơ sở dữ liệu: bao gồm các bảng, các query trong cơ sở dữ liệu thực
tại
1.1 Lớp đối tượng DAO:
+ Cấu trúc một CSDL bao gồm nhiều thành phần, đòi hỏi việc lập trình cũng cần
có những thành phần tương ứng để làm việc Lớp các thành phần btương ứng để
có thể lập trình được trên toàn bộ cấu trúc CSDL là lớp các đối tượng DAO.+ Cây phân cấp lớp các đối tượng DAO sau đây thể hiện điều đó:
bản ghi (Records) cần làm việc
• QueryDefs - định nghĩa tập hợp các Query
để làm việc Querydefs và Recordsets là khả
năng truy xuất, xử lý dữ liệu (Data Manipulation)
Trang 71.2 Đối tượng Database:
Database là đối tượng dùng làm việc với một CSDL (trong trường hợp này cóthể hiểu một CSDL như một tệp Access MDB)
+ Khai báo:
Dim db As DAO.Database ' Gán db cho một CSDL cụ thể Set db = OpenDatabase(“C:\Baitap\CaFe.mdb”)
Lệnh đóng khi không làm việc với CSDL nào đó:
db.Close
1.3 Đối tượng RecordSet:
Recordset là đối tượng dùng để miêu tả tập hợp các bản ghi của một bảng, của một query hoặc tập các bản ghi kết quả của việc thi hành một câu lệnh SQL nàođó
+ Khai báo:
Set rs=db.OpenRecordset(<Name>)
Trong đó:
- Set rs = db.OpenRecordset là lệnh để tạo ra tập hợp các bản ghi từ CSDL
db gán vào biến kiểu recordset rs
- <Name> là một xâu ký tự chỉ ra nguồn dữ liệu sẽ trả về cho Recordset Xâu này có thể là tên một bảng, một Query hoặc một câu lệnh SQL
Một số thuộc tính của Recordset:
Thuộc tính Name: Trả về xâu ký tự trong tham số <name> của lệnh gọi
Recordset
Thuộc tính AbsolutePosition: Cho biết vị trí bản ghi hiện tại (được tính từ
0)
Thuộc tính RecordCount: Cho biết tổng số bản ghi trả về trên Recordset
Thuộc tính EOF: Cho biết con trỏ bản ghi hiện tại có nằm ở EOF hay
không? Nếu có giá trị thuộc tính này là True, trái lại là False
Thuộc tính Fields: Dùng tham chiếu tới các trường (Fields) trên tập hợp các
bản ghi mà Recordset trả về Với Field của Recordset thông thường người ta hay sử dụng thuộc tính Value
Ví dụ: Hiển thị giá trị trường TenMon trong Recordset rs
Msgbox rs.Fields(“TenMon")
Một số phương thức của Recordset:
Trang 8 Phương thức Close: Để đóng Recordset, giải phóng bộ nhớ Chỉ thực hiện
hành động này khi không làm việc với Recordset nào đó
* Các phương thức di chuyển bản ghi của Recorset:
Phương thức MoveFirts: Để chuyển con trỏ về bản ghi đầu tiên.
Phương thức MoveLast: Để di chuyển con trỏ về bản ghi cuối cùng.
Phương thức MoveNext: Dịch đến bản ghi kề sau.
Phương thức Moverevious: Dịch đến bản ghi kề trước.
Ví dụ 3: Duyệt và hiển thị toàn bộ TenMon của bảng tblMon:
Wend End If
Phương thức AddNew, Update: Để thêm mới một bản ghi vào Recordset
Qui trình thêm một bản ghi mới như sau:
rs.Fields(“TenMon") = “cafe đen"
rs.Fields(“MaLoai") = “L001”
rs.Fields(“MaDVT") = “D001”
rs.Fields(“DGMon") = 8000 rs.Update
Phương thức Edit, Update: để sửa dữ liệu một bản ghi nào đó trên recordset.
Qui trình để sửa một bản ghi như sau:
1 Định vị tới bản ghi cần sử trên recordset
Trang 9rs.Update End If
Phương thức Delete: Để xoá bản ghi hiện tại ra khỏi Recordset Khi đó bản
ghi hiện tại sẽ bị xoá bỏ khỏi CSDL
Ví dụ:
Private Sub cmDelete_Click()
Dim tbao
tbao = MsgBox(“Da chac chan xoa chua?", vbYesNo + vbCritical)
If tbao = vbYes Then
rs.Delete rs.MoveNext End If
End Sub
1.4 Đối tượng QueryDef.
Đối tượng Querydef dùng để tham chiếu tới các Query có sẵn (Buil-in) trên CSDL Access, hoặc cũng có thể lập trình tạo các Query từ các câu lệnh SQL
+ Cú pháp:
- Tạo một Query mới:
Set qr = db.CreateQueryDef(<tên query>)
- Gán chuỗi lệnh SQL vào thuộc tính SQL của query
qr.SQL = “Câu lệnh SQL”
Trong đó: - Lệnh Set qr = db.CreatQueryDef(<tên query>) để tạo một query mới
lên CSDL
Trang 10- Lệnh qr.SQL=<câu lệnh SQL> để gán lệnh SQL cần thực thi vào
Query
1 5 Đối tượng TableDef:
Đối tượng TableDef được dùng để tham chiếu tới các bảng dữ liệu (Table) trên CSDL Thông qua đối tượng này có thể thiết kế, chỉnh sửa được cấu trúc các bảng dữ liệu trong chế độ Run-time của VB như trên chế độ thiết kế bảng Design View trên Access
Thuộc tính Name: Cho biết tên bảng được gán vào biến kiểu TableDef
Thuộc tính RecordCount: Cho biết tổng số bản ghi hiện có trên bảng được
gán bởi biến TableDef
Thuộc tính DateCreated: Cho biết thời gian tạo ra bảng được gán vào biển
kiểu TableDef
Thuộc tính Fields: Để tham chiếu tới các trường của bảng
Ví dụ: Hiển thị tên của tất cả các trường trong một bảng tblMon.
Sub LietKeTenTruong(Thucdon As String)
Dim tbl As DAO.TableDef
Set tbl = db.TableDefs(tblMon) For i = 0 To tbl.Fields.Count - 1 MsgBox tbl.Fields(i).Name Next
End Sub
Một số phương thức của TableDef:
Phương thức CreateTableDef: Để tạo ra một bảng mới từ VB
Cú pháp:
Set tbl = db.CreateTableDef(<Tên bảng mới>)
- Lệnh ghi cấu trúc trên bảng đang khai báo trên CSDL đã chỉ định
db.TableDefs.Append tbl
Phương thức CreateField: Để tạo ra các trường cho một bảng kiểu TableDef
nào đó
Cú pháp:
tbl.Fields.Append tbl.CreateField(<tên trường>,<KiểuDL>,<độlớn>
1.6 Đối tượng Relation:
Đối tượng Relation dùng để tạo kết nối (RelationShip) giữa 2 bảng trong CSDL
Ví dụ: tạo kết nối giữa 2 bảng Thucdon và Loai trong CSDL.
Trang 11db.Relations.Append rls End Sub
2 Kỹ thuật ADO (ActiveX Data Objects).
ADO (ActiveX Data Objects) là công nghệ mới hơn, khắc phục được một số các nhược điểm của DAO và thích nghi trên nhiều hệ CSDL
Kiến trúc ADO:
2.1 Đối tượng Connection:
Đối tượng Connection dùng để kết nối tới nguồn dữ liệu vật lý cần làm việc
Để thiết lập một Connection cần phải khai báo một biến có kiểu
Trang 122.2 Đối tượng Command:
Đối tượng Command trong ADO thường dùng để thực thi một câu lệnh truy vấn SQL nào đó Ví dụ như: việc xóa, thêm, cập nhật các bản ghi trong CSDL
3.3 Đối tượng Recordset:
Đối tượng Recordset trong ADO cũng gần giống như trong DAO, tức là có thể trích lọc dữ liệu từ CSDL Điểm khác biệt chủ yếu giữa Recorset trong ADO và DAO là: Recordset trong ADO chỉ có khả năng chỉ đọc, không thể cập nhật được
dữ liệu Như vậy những phương thức như Delete, Addnew hay Update là không có trên đối tượng recorset trong ADO
Bước 1: Khai báo một biến đối tượng RecordSet như sau:
Dim rs As New ADODB.RecorSet
Bước 2: Ra lệnh thực thi câu lệnh lựa chọn SQL và gán tập hợp các bản ghi trả về vào biến Recordset này
Ví dụ:
+ Xóa dữ liệu:
+ LoadBan:
+ Thêm dữ liệu:
Trang 14Phần II: ỨNG DỤNG QUẢN LÝ QUÁN CÀ PHÊ
I Giới thiệu.
1 Lý do chọn bài tập.
Trong thời buổi kinh tế thị trường như hiện nay thì kinh doanh là một hình thức không thể thiếu trong cuộc sống của mỗi người Nhưng kinh doanh như thế nào thì đó mới quan trọng Và nếu biết kinh doanh thì phải biết cách quản lý sao cho hai vấn đề này tồn tại song song với nhau bởi vì có con đường kinh doanh thì tamới có thể điều chỉnh quản lý phù hợp và chỉ có quản lý tốt mới phát triển được kinh doanh
Một trong những nhu cầu không thể thiếu nữa đó là giải trí Uống cà phê là hình thức giải trí phổ biến, mỗi người dù bận rộn hay rảnh rỗi đều có thể tận hưởng những phút giây thư giãn bằng những ly cà phê Đó còn là nơi để mọi người tổ chứccác buổi họp nhóm, liên hoan, sinh nhật…
Với lý do như trên, mà nhóm em chọn bài tập cho nhóm là Quản Lý Quán
Cà Phê trên quy mô nhỏ
2 Mục đích.
Mục đích của bài tập này chủ yếu là quản lý thực đơn, quản lý nhân viên, quản lý bàn, xuất hóa đơn… nhằm giảm nhẹ công việc quản lý, ghi chép, báo cáo đem lại hiệu quả cao trong công việc
Với mục đích như vậy, nhiệm vụ mà bài toán đặt ra là phải tạo lập cơ sở dữ liệu sao cho hợp lý và đơn giản sao cho dễ quản lý và hạn chế được thiếu sót
Chương trình thiết kế phải phù hợp với người sử dụng
II Khảo sát hiện trạng và xác định yêu cầu.
1 Khảo sát hiện trạng.
Với những khả năng và kiến thức mà chúng em có được, chúng em đã mô
tả tóm tắt quá trình nghiệp vụ của một chương trình như sau:
Người sử dụng phải đăng nhập (tblNV) vào chương trình để quản lý Quán
cà phê nào cũng có một thực đơn các loại nước uống riêng (tblMon) Để phân biệt
các loại đồ uống trong thực đơn thì mỗi loại đồ uống sẽ có một mã loại (tblLoai) và
có đơn vị tính (tblDVT) khác nhau Để quản lý thì mỗi bàn (tblBan) sẽ hóa đơn chi tiết (tblHDCT) cho mỗi lần gọi đồ uống và có một hóa đơn (tblHD) để tính tiền
cho khách hàng Ngoài ra ta còn có thể xuất hóa đơn cho từng ngày dựa trên tổng sốtiền của mỗi bàn trong ngày, trong tháng…
Trang 152 Yêu cầu chức năng.
- Đăng nhập, thoát để sử dụng chương trình
- Quản lý bàn, khu vực cho quán để dễ nhập xuất dữ liệu cũng như tính tiền cho khách hàng
- Quản lý nhân viên
- Quản lý thông tin bàn
- Quản lý thực đơn như: quản lý sản phẩm, quản lý phân loại, quản lý đơn vị tính cho mỗi loại đồ uống
- Thống kê loại đồ uống, thống kê doanh thu…
3 Yêu cầu chất lượng.
- Tính tiện dụng, nhanh chóng và chính xác
- Yêu cầu bảo mật
- Yêu cầu an toàn
III Phân tích.
+ Chức năng chính của chương trình là:
- Quản lý Nhân viên: cập nhật, thêm, xóa, sửa thông tin nhân viên
- Quản lý thực đơn: cập nhật, thêm, xóa, sửa thông tin của sản phẩm
- Quản lý bàn: danh sách bàn, đặt bàn, chuyển bàn, khuyến mãi,…
- Quản lý hóa đơn: tính tiền, in hóa đơn
- Hệ thống báo cáo, thống kê: doanh thu, thu-chi theo ngày, tháng…
IV Thiết kế
1.Thiết kế dữ liệu
1.1 Sơ đồ logic.