Chắt lọc và mã hoá thông tin cần dùng65

Một phần của tài liệu tìm hiểu oracle i và bài toán quản lý sách (Trang 65 - 89)

Để tạo cơ sở dữ liệu, trước hết ta phải xác định những thông tin gì cần theo dõi, cần sử dụng. Sau đó, ta thiết kế CSDL, tạo bảng chứa các trường định nghĩa kiễu dữ liệu sẽ có. Sau khi tạo cấu trúc CSDL, CSDL có thể chứa dữ liệu dưới dạng mẩu tin. Ta không thể đưa dữ liệu vào mà không có bảng hay định nghĩa trường vì dữ liệu sẽ không có chỗ để chứạ Do đó thiết kế CSDL cực kỳ quan trọng, nhất là rất khó thay đổi thiết kế một khi ta đã tạo ra nó, mặt khác để thiết kế được một CSDL tèn Ýt không gian nhớ nhất thì việc đầu tiên chúng ta phải làm là chắt lọc và mã hoá thông tin, xác định các kiểu dữ liệu phù hợp với các

(1,1) A R A A R A E E (x,n) (y,n) A R A E E (x,n)

thực thể được tạo ra, đây là một công đoạn hết sức quan trọng và cần thiết trong quá trình phân tích và thiết kế CSDL nhằm tránh hiện tượng dư thừa và chồng chất dữ liệụ

Đứng trước yêu cầu đề ra của chương trình là một hệ thống “Quản lý cửa hàng sách”. Qua quá trình khảo sát và tìm hiểu thực tế tôi đã liệt kê, chính xác hoá, chắt lọc và mã hoá chúng theo bảng dưới đây:

Thực thể – Thuộc tính Kiểu/ cỡ Chắt lọc/ Mã hoá

Mã sách varchar2(50) MASACH

Tên sách varchar2(100) TENSACH

Mã loại sách varchar2(50) MALS

Tên loại sách varchar2(50) TENLS

Chuyên ngành varchar2(50) CHUYENNGANH

Sè trang number(10) SOTRANG

Số lượng number(10) SOLUONG

Lần tái bản number(10) LANTB

Năm xuất bản number(4) NAMXB

Giá number(19,4) GIA

Mã tác giả number(10) MATG

Tên tác giả varchar2(50) TENTG

Email tác giả varchar2(50) EMAILTG

Website tác giả varchar2(50) WEBSITETG

Tiểu sử varchar2(200) TIEUSU

Mã nhà xuất bản number(10) MANXB

Tên nhà xuất bản varchar2(50) TENNXB địa chỉ nhà xuất bản varchar2(50) DCNXB điện thoại nhà xuất bản number(10) DTNXB

Email nhà xuất bản varchar2(50) EMAILNXB Website nhà xuất bản varchar2(50) WEBSITENXB

Số hoá đơn number(10) SOHD

Số lượng đặt hàng number(10) SLDAT

Ngày đặt hàng date NGAYDAT

Tổng tiền number(19,4) TONGTIEN

Triết khấu number(19,4) TRIETKHAU

Mã khách hàng number(10) MAKH

Tên khách hàng varchar2(50) TENKH

Giới tính varchar2(3) GIOITINH

địa chỉ khách hàng varchar2(50) DCKH điện thoại khách hàng number(10) DTKH

Email khách hàng varchar2(50) EMAILKH

Mã trạng thái number(10) MATT

Tên trạng thái varchar2(50) TENTT

Từ bảng chắt lọc và mã hoá các thuộc tính ở trên, tôi đã quyết định đưa chúng về hai thực thể chính sau:

+ Thông tin sách  TT_SACH

+ Thông tin hoá đơn bán sách  HOADON

TT_SACH(Masach, Tensach, Mals, Tenls, Chuyennganh, Sotrang, Soluong, Lantb, Namxb, Gia, Matg, Tentg, Emailtg, Websitetg, Tieusu, Manxb, Tennxb, Dcnxb, Dtnxb, Websitenxb, Emailnxb)

HOADON(Sohd, Masach, Gia, Sldat, Ngaydat, Tongtien, Trietkhau, Makh, Tenkh, Gioitinh, Dckh, Dtkh, Tinh_tp, Emailkh, Matt, Tentt)

2.2.1. Chuẩn hoá cơ sở dữ liệu

ạ Xác định khoá chính

+ Xét thực thể TT_SACH ta thấy:

(Masach)  (Tensach, Mals, Tenls, Chuyennganh, Sotrang, Soluong, Lantb, Namxb, Gia, Matg, Tentg, Emailtg, Websitetg, Tieusu, Manxb, Tennxb, Dcnxb, Dtnxb, Websitenxb, Emailnxb)

(Mals)  (Tenls, Chuyennganh)

(Matg)  (Matg, Tentg, Emailtg, Websitetg, Tieusu)

(Manxb)  (Manxb, Tennxb, Dcnxb, Dtnxb, Websitenxb, Emailnxb) Do đó khoá chính của thực thể TT_SACH là:

Sau khi xác định được khoá chính ta gạch dưới chân chúng khi đó thực thể TT_SACH trở thành:

TT_SACH(Masach, Tensach, Mals, Tenls, Chuyennganh, Sotrang, Soluong, Lantb, Namxb, Gia, Matg, Tentg, Emailtg, Websitetg, Tieusu, Manxb, Tennxb, Dcnxb, Dtnxb, Websitenxb, Emailnxb).

+ Xét thực thể hoá đơn ta thấy:

(Sohd,Masach)  (Gia, Sldat, Tongtien, Trietkhau)

(Sohd)  ( Ngaydat, Makh, Tenkh, Gioitinh, Dckh, Dtkh, Tinh_tp, Emailkh, Matt, Tentt)

(Makh)  (Tenkh, Gioitinh, Dckh, Dtkh, Tinh_tp, Emailkh) (Matt)  (Tentt)

Do đó khoá chính của thực thể HOADON là: (Sohd, Masach,Makh,Matt)

Sau khi xác định được khoá chính ta gạch dưới chân chúng khi đó thực thể HOADON trở thành:

HOADON(Sohd, Masach, Gia, Sldat, Ngaydat, Tongtien, Trietkhau, Makh, Tenkh, Gioitinh, Dckh, Dtkh, Tinh_tp, Emailkh, Matt, Tentt)

b. Xét dạng chuẩn 1NF

+ Xét thực thể TT_SACH ta nhận thấy rằng:

Quan hệ này không chứa thuộc tính lặp. Do đó quan hệ TT_SACH đã đạt chuẩn 1NF.

+ Xét thực thể HOADON ta nhận thấy rằng:

Quan hệ này chưa đạt chuẩn 1NF vì nó chứa thuộc tính lặp đó là: (Masach, Gia, Sldat, Tongtien, Trietkhau)

Do đó ta phải tách chúng thành các quan hệ sau: + Hoá đơn chi tiết (HOADONCT)

+ Hoá đơn (HOADON)

HOADON(Sohd, Ngaydat, Makh, Tenkh, Gioitinh, Dckh, Dtkh, Tinh_tp, Emailkh, Matt, Tentt)

* Nh vậy chuẩn 1NF có 3 thực thể đó là: 1. TT_SACH 2. HOADONCT 3. HOADON c. Xét dạng chuẩn 2NF + Xét thực thể TT_SACH ta nhận thấy rằng:

Quan hệ này chưa đạt chuẩn 2NF vì có sự phụ thuộc bộ phận giữa thuộc tính ngoài khoá vào một phần của khoá:

(Masach)  (Tensach, Mals, Sotrang, Soluong, Lantb, Namxb, Gia, Matg, Manxb)

(Mals)  (Tenls, Chuyennganh)

(Matg)  (Matg, Tentg, Emailtg, Websitetg, Tieusu)

(Manxb)  (Manxb, Tennxb, Dcnxb, Dtnxb, Websitenxb, Emailnxb)

Vậy để quan hệ TT_SACH đạt chuẩn 2NF ta phải phân rã quan hệ TT_SACH thành các quan hệ sau:

SACH(Masach,Tensach, Mals, Sotrang, Soluong, Lantb, Namxb, Gia, Matg, Manxb)

LOAISACH(Mals,Tenls, Chuyennganh)

TACGIĂMatg, Matg, Tentg, Emailtg, Websitetg, Tieusu)

NXB(Manxb, Manxb, Tennxb, Dcnxb, Dtnxb, Websitenxb, Emailnxb) + Xét thực thể HOADONCT ta nhận thấy rằng:

Quan hệ này đã đạt chuẩn 2NF vì không tồn tại sự phụ thuộc bộ phận giữa thuộc tính ngoài khoá vào một phần của khoá.

HOADONCT(Sohd, Masach, Sldat, Tongtien, Trietkhau) + Xét thực thể HOADON ta nhận thấy rằng:

Quan hệ này chưa đạt chuẩn 2NF vì có sự phụ thuộc bộ phận giữa thuộc tính ngoài khoá vào một phần của khoá:

(Sohd)  ( Ngaydat, Makh, Matt)

(Makh)  (Tenkh, Gioitinh, Dckh, Dtkh, Tinh_tp, Emailkh) (Matt)  (Tentt)

Vậy để quan hệ HOADON đạt chuẩn 2NF ta phải phân rã quan hệ HOADON thành các quan hệ sau:

HOADON(Sohd, Ngaydat, Makh, Matt)

KHACHHANG(Makh,Tenkh, Gioitinh, Dckh, Dtkh, Tinh_tp, Emailkh) TRANGTHAI(Matt,Tentt) * Nh vậy chuẩn 2NF có 8 thực thể đó là: 1. SACH 2. LOAISACH 3. TACGIA 4. NXB 5. HOADONCT 6. HOADON 7. KHACHHANG 8. TRANGTHAI d. Xét dạng chuẩn 3NF

+ Xét thực thể SACH: ta thấy quan hệ SACH đã đạt chuẩn 3NF, bởi vì các thuộc tính ngoài khoá chỉ phụ thuộc vào khoá chính, do đó không có sự phụ thuộc bắc cầu giữa các thuộc tính ngoài khoá vào các thuộc tính khoá, nên quan hệ SACH đã đạt chuẩn 3NF.

+ Xét thực thể LOAISACH: ta thấy quan hệ LOAISACH đã đạt chuẩn 3NF, bởi vì các thuộc tính ngoài khoá chỉ phụ thuộc vào khoá chính, do đó

không có sự phụ thuộc bắc cầu giữa các thuộc tính ngoài khoá vào các thuộc tính khoá, nên quan hệ LOAISACH đã đạt chuẩn 3NF.

+ Xét thực thể TACGIA: ta thấy quan hệ TACGIA đã đạt chuẩn 3NF, bởi vì các thuộc tính ngoài khoá chỉ phụ thuộc vào khoá chính, do đó không có sự phụ thuộc bắc cầu giữa các thuộc tính ngoài khoá vào các thuộc tính khoá, nên quan hệ TACGIA đã đạt chuẩn 3NF.

+ Xét thực thể NXB: ta thấy quan hệ NXB đã đạt chuẩn 3NF, bởi vì các thuộc tính ngoài khoá chỉ phụ thuộc vào khoá chính, do đó không có sự phụ thuộc bắc cầu giữa các thuộc tính ngoài khoá vào các thuộc tính khoá, nên quan hệ NXB đã đạt chuẩn 3NF.

+ Xét thực thể HOADONCT: ta thấy quan hệ HOADONCT đã đạt chuẩn 3NF, bởi vì các thuộc tính ngoài khoá chỉ phụ thuộc vào khoá chính, do đó không có sự phụ thuộc bắc cầu giữa các thuộc tính ngoài khoá vào các thuộc tính khoá, nên quan hệ HOADONCT đã đạt chuẩn 3NF.

+ Xét thực thể HOADON: ta thấy quan hệ HOADON đã đạt chuẩn 3NF, bởi vì các thuộc tính ngoài khoá chỉ phụ thuộc vào khoá chính, do đó không có sự phụ thuộc bắc cầu giữa các thuộc tính ngoài khoá vào các thuộc tính khoá, nên quan hệ HOADON đã đạt chuẩn 3NF.

+ Xét thực thể KHACKHANG: ta thấy quan hệ KHACKHANG đã đạt chuẩn 3NF, bởi vì các thuộc tính ngoài khoá chỉ phụ thuộc vào khoá chính, do đó không có sự phụ thuộc bắc cầu giữa các thuộc tính ngoài khoá vào các thuộc tính khoá, nên quan hệ KHACKHANG đã đạt chuẩn 3NF.

+ Xét thực thể TRANGTHAI: ta thấy quan hệ TRANGTHAI đã đạt chuẩn 3NF, bởi vì các thuộc tính ngoài khoá chỉ phụ thuộc vào khoá chính, do đó không có sự phụ thuộc bắc cầu giữa các thuộc tính ngoài khoá vào các thuộc tính khoá, nên quan hệ TRANGTHAI đã đạt chuẩn 3NF.

* Nh vậy ở dạng chuẩn 3NF ta có tất cả là 8 thực thể: 1. SACH

NXB MaNXB TenNXB DC DT EMAIL WEBSIT E 3. TACGIA 4. NXB 5. HOADONCT 6. HOADON 7. KHACHHANG 8. TRANGTHAI Kết luận:

Các quan hệ đạt chuẩn 3NF trên đã khắc phục được sự dư thừa dữ liệu, đã đạt được mục tiêu phân rã, thành các quan hệ con đơn giản hơn, mà bất kỳ một bài toán thực tế nào về cơ sở dữ liệu cũng yêu cầụ

2.2.2. Thiết kế dữ liệu logic

Qua quá trình phân tích và khảo sát hệ thống trên, chúng ta có một số thực thể sau:

* thực thể NXB

TACGIA MaTG TenTG TieuSu EMAI L WEBSIT E LOAISACH MaLS TenLS CHUYENNGAN H SACH MaSach TenSach SoTrang SoLuong NamXB LanTB MaNXB * Thực thể TACGIA * Thực thể SACH

HOADONCT SoHD MaSac h GIA SLDAT TongTien TrietKha u HOADON SoHD NgayD H MaKH MaTT * Thưc thể HOADONCT * Thực thể HOADON

TenTT KHACHHANG MaKH TenKH GioiTin h EMAIL DC DT Tinh_TP TRANGTHAI MaTT * Thực thể TRANGTHAIThực thể KHACHHANG

Trong cơ sở dữ liệu bảng là thành phần chính. Do đó bảng là đối tượng lưu trữ dữ liệu thực, khi cần giao tiếp với cơ sở dữ liệu khác, bảng là đối tượng căn bản nhất trong bất kỳ loại CSDL nào, chúng được coi nh mét miền dữ liệụ

Mỗi bảng được định nghĩa nhiều trường, mỗi trường ứng với một loại dữ liệụ Dữ liệu nhập vào có thể chấp nhận được hoặc từ chối tuỳ thuộc vào nguyên tắc ràng buộc dữ liệu hoặc loại dữ liệu tương thích do hệ thống hay người dùng định nghĩạ

Các bước tạo CSDL ta dùng công cụ Oracle9i Desinger

Bằng cách đăng nhập với user admin của kho dữ liệu Repository

Cách tạo kho dữ liệu đã trình bày ở phần (Cài đặt oracle designer9i

Repository)

Sau đây là cách login vào repository

Nhấn next để tiếp tục quá trình tạo bảng NXB. Và sử dụng các thông số sau:

Các cột và các đặc tính của bảng nhà xuất bản (NXB)

Tên cột Kiểu dữ liệu Null? Khoá chính Khoá ngoại

MANXB number(10) No Yes

TENNXB varchar2(50) Yes

DC varchar2(50) Yes

DT number(10) Yes

EMAIL varchar2(50) Yes

WEBSITE varchar2(50) Yes

Các cột và các đặc tính của bảng loại sách (LOAISACH)

Tên cột Kiểu dữ liệu Null? Khoá chính Khoá ngoại

MALS varchar2(3) No Yes

CHUYENNGAN H

No

Các cột và các đặc tính của bảng tác giả (TACGIA)

Tên cột Kiểu dữ liệu Null? Khoá chính Khoá ngoại

MATG number(10) No Yes

TENTG varchar2(50) No

EMAIL varchar2(50) Yes

WEBSITE varchar2(50) Yes

TIEUSU varchar2(200) Yes

Các cột và các đặc tính của bảng sách (SACH)

Tên cột Kiểu dữ liệu Null? Khoá chính Khoá ngoại

MASACH varchar2(6) No Yes

TENSACH varchar2(50) No

MANXB number(10) No NXB

MALS varchar2(3) No LOAISACH

MATG number(10) No TACGIA

SOTRANG number(10) No

SOLUONG number(10) No

GIA number(19,4) No

LANTB number(10) No

NAMXB number(4) No

Các cột và các đặc tính của bảng hoá đơn chi tiết (HOADONCT) Tên cột Kiểu dữ liệu Null? Khoá chính Khoá ngoại

SOHD number(10) No Yes HOADON

MASACH varchar2(6) No Yes SACH

GIA number(19,4) Yes

SLDAT number(10) Yes

TONGTIEN number(19,4) Yes TRIETKHAU number(19,4) Yes

Các cột và các đặc tính của bảng hoá đơn (HOADON)

Tên cột Kiểu dữ liệu Null? Khoá chính Khoá ngoại

MAKH number(10) Yes KHACHHANG

NGAYDH date Yes

MATT number(10) Yes TRANGTHAI

Các cột và các đặc tính của bảng khách hàng (KHACHHANG) Tên cột Kiểu dữ liệu Null? Khoá chính Khoá ngoại

MAKH number(10) No Yes

TENKH varchar2(50) No

GIOITINH varchar2(3) Yes

DC varchar2(50) Yes

DT number(10) Yes

TINH_TP varchar2(50) Yes

EMAIL varchar2(50) Yes

Các cột và các đặc tính của bảng trạng thái (TRANGTHAI)

Tên cột Kiểu dữ liệu Null? Khoá chính Khoá ngoại

MATT number(10) No Yes

TENTT varchar2(50) Yes

2.2.4. Lược đồ quan hệ

Khi xây dựng CSDL cho các ứng dụng thường đều phải dùa vào phân tích thiết kế hệ thống.

Lược đồ quan hệ (ERD = Entity Relationship Diagram) cho phép chúng ta kiểm soát được mối liên hệ giữa các thực thể với nhau, bên cạnh đó chúng ta kiểm soát được thông tin vào ra hay thay đổi trong CSDL.

Trong Oracle9i Designer công cụ này đã cho ta thiết kế sẵn các mối quan hệ. Sau khi tạo các bảng và các quan hệ với các thông số đã cho nh ở trên, ta được lược đồ quan hệ sau:

2.3> KẾT LUẬN

Phần này, chúng tôi giới thiệu một số khái niệm cơ bản về phân tích và thiết kế hệ thống thông tin. Dùng để chắt lọc và mã hoá những thông tin cần dùng trong hệ thống thông tin quản lý sách ở cửa hàng sách. Phần xây dựng cơ sở dữ liệu, chúng tôi đã sử dụng công cụ Oracle Designer9i Repository, đây là một công cụ rất mạnh dùng để phân tích và thiết kế cơ sở dữ liệu của Oraclẹ

Phần III

THIẾT KẾ GIAO DIỆN NGƯỜI - MÁY

Thiết kế giao diện có tầm quan trọng đặc biệt, vì nó ảnh hưởng trực tiếp đến người sử dụng, trước hết giao diện càng trực quan thì càng dễ sử dụng. Giao diện càng tốt thì việc đào tạo người sử dụng càng thuận lợi và giảm được chi phí đào tạọ Lóc đó người sử dụng sẽ không cần giúp đỡ nhiều, thích sử dụng nó và đồng thời có hứng thó với giao tiếp với hệ thống.

3.1. MỤC ĐÍCH CỦA CHƯƠNG TRÌNH

Chương trình được xây dựng nhằm để quản lý sách trong cửa hàng sách với mục đích sau:

+ Chức năng quản lý thông tin sách: bao gồm các chức năng nhá nh: thêm mới, xoá cập nhật các thông tin về tác giả, nhà xuất bản, loại sách, thông tin sách.

+ Báo cáo và thống kê các thông tin hệ thống chương trình bao gồm: báo cáo thông tin liên quan đến sách, báo cáo thông tin liên quan đến khách hàng và hoá đơn.

+ Tạo giao diện người dùng, cho phép người sử dụng truy cập tới cơ sở dữ liệu và tìm kiếm thông tin theo từng chủ đề.

+ Ngoài ra chương trình còn có thêm phần đưa ra số sách bán chạy, và tổng tiền sách bán được.

3.2. NỘI DUNG CHƯƠNG TRÌNH

3.2.1. Thiết kế form

Sử dông Developer9i Suite để thiết kế form và viết chương trình.

Từ đây để thêm bớt, cập nhật cho các bảng con nh: Nhà xuất bản, loại sách, tác giả và bảng chi tiết về sách, hay là thông tin về khách hàng thì từ cửa sổ chính của chương trình, bạn nhấp vào Menu Quản Lý sau đó tìm đến các biểu mẫu tương ứng.

Ví dô: ta nhấp vào menu Quan Ly  Tac giạ Khi đó biểu mẫu của bảng tác giả sẽ xuất hiện nh sau:

Từ đây các bạn có thể thêm, xoá sửa và xuất báo cáọ

3.2.2. Thiết kế báo cáo

Các báo cáo được thiết kế trong chương trình. + Báo cáo về thông tin nhà xuất bản

+ Báo cáo về thông tin tác giả

+ Báo cáo thông tin sách và loại sách. + Báo cáo thông tin hoá đơn khách hàng. + Báo cáo số sách bán chạy

+ Báo cáo tổng tiền bán sách.

Từ menu Bao cao  Sach. lập tức báo cáo về các đầu sách xuất hiện nh sau:

Khi muốn thoát khỏi chương trình, thì người sử dụng chỉ việc nhấp vào menu thoát trên menu của cửa sổ chính của chương trình.

Form builder của bộ developer9i suite của Oracle là công cụ tốt nhất cho việc phát triển ứng dụng client - server, còng nh là công cụ tốt nhất cho việc phát triển các Applet cần thiết cho các ứng dụng kinh doanh web. Trong phần này tôi đã giới thiệu cho các bạn về ứng dụng kinh doanh sách. mà ứng dụng này không chạy trên môi trường client - server mà chạy trên môi trường web. đó là mét tính năng rất mới của Oraclẹ Nã cho phép chúng ta có thể phát triển các ứng dụng chạy trên web, mà không phải chạy trên môi trường client - server. Điều này sẽ giảm chi phí đáng kể cho việc cấu hình mạng, cũng như việc cài đặt ứng dụng phía client.

Phần IV

KẾT LUẬN VÀ PHƯƠNG HƯỚNG PHÁT TRIỂN

Phạm vi đồ án này là chỉ tập chung tìm hiểu về công nghệ Oracle9i là chính, còn phần bài toán quản lý sách chỉ là phần minh hoạ của một bài toán quản lý sử

dụng công nghệ Oracle9ị Qua quá trình nghiên cứu và thực hiện em thấy đề tài này mang tính thiết thực, nhất là với những bài toán mà có cơ sở dữ liệu lớn thì sự lưa chọn công nghệ Oracle là tối ưu và tất nhiên là tối ưu với cả những bài toán trung bình và cỡ lớn.

Tuy nhiên, trong quá trình thực hiện đồ án thì em gặp không Ýt những khó

Một phần của tài liệu tìm hiểu oracle i và bài toán quản lý sách (Trang 65 - 89)

Tải bản đầy đủ (DOC)

(89 trang)
w