1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo kết thúc học phần cơ sở dữ liệu nâng cao Đề tài fabric agency database

78 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Fabric Agency Database
Tác giả Võ Quốc Duy, Nguyễn Tiến Đạt, Nguyễn Hữu Đức, Huỳnh Lê Trung Hiếu, Hồ Đăng Hoàng
Người hướng dẫn Phan Trọng Nhân
Trường học Trường Đại Học Sài Gòn
Thể loại báo cáo
Năm xuất bản 2023
Thành phố TPHCM
Định dạng
Số trang 78
Dung lượng 4,82 MB

Cấu trúc

  • CHƯƠNG 1. GIỚI THIỆU VỀ NỘI DUNG ĐỀ TÀI (6)
    • 1.1 Tổng quan về đề tài (6)
    • 1.2 Mục tiêu (7)
  • CHƯƠNG 2. KIẾN THỨC NỀN TẢNG (8)
    • 2.1 Các kiến thức liên quan đến lược đồ ERD (Enhanced Entity-Relationship Diagram) (8)
    • 2.2 Các kiến thức liên quan đến lược đồ quan hệ (10)
    • 2.3 Công nghệ BACK-END (14)
      • 2.3.1 Giới thiệu về thư viện Java.sql trong java (14)
      • 2.3.2 Cấu trúc của Java.sql (14)
      • 2.3.3. Giới thiệu về XAMPP (15)
        • 2.3.3.1 XAMPP là gì? (15)
        • 2.3.3.2 Các thành phần của XAMPP (15)
        • 2.3.3.3 Vì sao nên sử dụng XAMPP? (17)
        • 2.3.3.4 Ưu và nhược điểm của XAMPP (18)
      • 2.3.4 Tổng quan về hệ quản trị cơ sở dữ liệu (Database Management (19)
        • 2.3.4.1 Hệ quản trị cơ sở dữ liệu - DBMS là gì? (19)
        • 2.3.4.2 Database Management System dùng làm gì? (19)
        • 2.3.4.3 Các thành phần của DBMS là gì? (20)
        • 2.3.4.4 Top 10 loại DBMS phổ biến hiện nay (22)
        • 2.3.4.5 Lợi ích của việc sử dụng DBMS (24)
        • 2.3.4.6 Hạn chế của DBMS (24)
      • 2.3.5 Giới thiệu về hệ quản trị cơ sở dữ liệu MariaDB (25)
        • 2.3.5.1 Lịch sử của MariaDB (25)
        • 2.3.5.2 Thông tin cần biết về MariaDB (26)
        • 2.3.5.3 Ưu điểm của MariaDB là gì? (26)
      • 2.3.6 Giới thiệu sơ lược về MySQL (27)
        • 2.3.6.1 MySQL là gì? (27)
        • 2.3.6.2 Đôi nét về MySQL (28)
        • 2.3.6.3 Kiến trúc cơ sở dữ liệu của MySQL (29)
        • 2.3.6.4 Ưu và nhược điểm của MySQL (31)
        • 2.3.6.5 Một số tính năng và tùy chọn của cơ sở dữ liệu MySQL (33)
      • 2.3.7 Tổng quan về SQL (Structured Query Language) (35)
      • 2.3.8 Cách kết nối cơ sở dữ liệu (36)
    • 2.4 Công nghệ FRONT-END (38)
      • 2.4.1 Giới thiệu về AWT trong Java (38)
        • 2.4.1.1 Phân cấp Java AWT (38)
        • 2.4.1.2 Các phương thức hữu ích của lớp Component (39)
        • 2.4.1.3 Ví dụ về AWT trong java (40)
      • 2.4.2 Giới thiệu về Swing trong Java (42)
        • 2.4.2.1 Sự khác nhau giữa AWT và Swing (42)
        • 2.4.2.2 JFC là gì? (43)
        • 2.4.2.3 Phân cấp các lớp trong Java Swing (43)
        • 2.4.2.4 Các phương thức thường dùng của lớp Component (44)
        • 2.4.2.5 Ví dụ về Swing trong Java (44)
  • CHƯƠNG 3. PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG (46)
    • 3.1 Mô hình thực thể mối kết hợp (ER) của Fabric Agency (46)
    • 3.2 Lược đồ quan hệ (48)
    • 3.3 Thao tác với cơ sở dữ liệu (50)
      • 3.3.1 Câu lệnh SQL để tạo các bảng (50)
      • 3.3.2 Phân tích từng bảng (57)
      • 3.3.3 Danh sách các bảng (65)
  • CHƯƠNG 4. KIỂM THỬ HỆ THỐNG (70)
    • 4.1 Kiểm thử chức năng đăng nhập (70)
    • 4.2 Kiểm thử chức năng Material search (71)
    • 4.3 Kiểm thử chức năng thêm mới nhà cung cấp (74)
    • 4.4 Kiểm thử chức năng tìm danh mục theo nhà cung cấp (76)
  • CHƯƠNG 5. KẾT LUẬN (78)
    • 5.1 Kết quả đạt được (78)
    • 5.2 Những gì chưa đạt được (78)

Nội dung

Mỗi cột có tên duy nhất và định nghĩa kiểu dữ liệu của ● Khóa ngoại Foreign Key: Khóa ngoại là một cột trong bảng được sử dụng để thiết lập mối quan hệ giữa hai bảng.. ● Các bước chuyển

GIỚI THIỆU VỀ NỘI DUNG ĐỀ TÀI

Tổng quan về đề tài

Công ty Y chuyên cung cấp vải sỉ theo cuộn với nhiều loại vải đa dạng như lụa, khaki, crewel, jacquard, lụa giả và damask Mỗi cuộn vải được phân loại theo danh mục cụ thể và có mã duy nhất cùng chiều dài riêng Thông tin chi tiết về từng loại vải bao gồm mã, tên, màu sắc, giá hiện tại (cùng ngày cập nhật giá) và số lượng cuộn có sẵn trong kho.

Công ty thu vải từ nhiều nhà cung cấp, mỗi nhà cung cấp cung cấp nhiều loại vải khác nhau, nhưng mỗi loại chỉ xuất phát từ một nhà cung cấp duy nhất Cơ sở dữ liệu cần lưu trữ thông tin quan trọng về nhà cung cấp, bao gồm mã duy nhất, tên, địa chỉ, tài khoản ngân hàng, mã số thuế và số điện thoại Khi vải được nhập vào kho, cần ghi lại số lượng từng loại, ngày nhập và giá mua vào cơ sở dữ liệu.

Mỗi khách hàng được cấp một mã duy nhất và thông tin cá nhân bao gồm tên, địa chỉ, số điện thoại, số nợ chưa thanh toán, cùng với lịch trình thanh toán Chẳng hạn, nếu một khách hàng nợ $1000, họ có thể thực hiện các khoản thanh toán từng phần, bắt đầu với $200 và tiếp theo là $300, cho đến khi số nợ được thanh toán hoàn toàn.

Khách hàng đặt hàng bao gồm một hoặc nhiều cuộn, mỗi đơn hàng được xử lý bởi nhân viên vào thời gian cụ thể và có mã duy nhất cùng tổng giá Thông tin nhân viên bao gồm mã, tên, giới tính, địa chỉ và số điện thoại Hệ thống theo dõi tình trạng đơn hàng theo thời gian với các trạng thái như "mới", "đã đặt hàng", "đã thanh toán một phần", "đã thanh toán đầy đủ" và "đã hủy" Nếu đơn hàng bị hủy, nhân viên cần nhập lý do hủy.

Công ty cần theo dõi lịch sử thanh toán của từng khách hàng cho mỗi đơn hàng đã đặt Nếu số nợ của khách hàng vượt quá 2000 đô la, hệ thống sẽ chuyển khách hàng đó vào chế độ đặc biệt.

"cảnh báo" và thông báo cho công ty Nếu tình trạng này kéo dài hơn 6 tháng, số nợ sẽ được đánh dấu là "nợ xấu".

Công ty có bốn loại nhân viên chính: quản lý, nhân viên đối tác, nhân viên vận hành và nhân viên văn phòng Nhân viên đối tác chăm sóc một hoặc nhiều nhà cung cấp, trong khi nhân viên văn phòng đảm nhiệm việc chăm sóc khách hàng Mỗi nhà cung cấp chỉ được giao cho một nhân viên đối tác, và mỗi khách hàng chỉ được phục vụ bởi một nhân viên văn phòng Nhân viên vận hành có trách nhiệm xử lý đơn đặt hàng của khách hàng Đặc biệt, "cuộn" là đơn vị đo lường tiêu chuẩn trong ngành công nghiệp cho nhiều loại vật liệu, bao gồm gỗ và bố, thường được lưu trữ dưới dạng cuộn.

Mục tiêu

- Thiết kế một (E)ERD được đánh dấu đầy đủ theo mô tả về doanh nghiệp của bạn.

Biểu đồ cần thể hiện các thực thể phù hợp, nhấn mạnh các thuộc tính chính, cùng với mối quan hệ giữa chúng, tỷ lệ cardinality, và các lớp thành viên tùy chọn cũng như bắt buộc.

Ánh xạ sơ đồ (E)ER của bạn thành lược đồ cơ sở dữ liệu quan hệ là bước quan trọng trong việc thiết kế hệ thống Trong quá trình này, hãy xác định tất cả các ràng buộc không được thể hiện trong sơ đồ (E)ER của bạn để đảm bảo tính toàn vẹn và chính xác của dữ liệu Việc này giúp cải thiện hiệu suất và khả năng mở rộng của cơ sở dữ liệu.

- Xây dựng một ứng dụng với các yêu cầu sau:

● Tìm kiếm thông tin mua vật liệu: Kết quả tìm kiếm bao gồm tên, số điện thoại của các nhà cung cấp và thông tin về nguồn cung.

● Thêm thông tin cho một nhà cung cấp mới.

● Liệt kê chi tiết của tất cả các loại hàng mà một nhà cung cấp cung cấp.

● Tạo một báo cáo cung cấp đầy đủ thông tin về đơn đặt hàng cho mỗi loại hàng của một khách hàng.

- Chứng minh một trường hợp sử dụng hiệu suất chỉ mục.

- Giải quyết một trường hợp sử dụng bảo mật cơ sở dữ liệu.

KIẾN THỨC NỀN TẢNG

Các kiến thức liên quan đến lược đồ ERD (Enhanced Entity-Relationship Diagram)

Mô hình thực thể mối kết hợp (Entity Relationship Model - ER) được giới thiệu bởi Chen vào năm 1976 và đã trở thành một công cụ phổ biến trong thiết kế cơ sở dữ liệu ở cấp độ quan niệm.

Các thành phần của mô hình thực thể mối kết hợp:

Thực thể là những đối tượng hoặc khái niệm độc lập có ý nghĩa trong hệ thống, bao gồm cả đối tượng vật lý như người, sách, xe hơi và đối tượng trừu tượng như khách hàng, đơn hàng, sự kiện Trong lược đồ ERD, các thực thể được biểu diễn bằng hình chữ nhật, trong khi thực thể yếu được thể hiện bằng hình chữ nhật có hai nét.

Quan hệ trong hệ thống mô tả sự tương tác giữa các thực thể và cách chúng liên kết với nhau Một ví dụ điển hình là quan hệ "Một đến Nhiều" giữa thực thể "Khách hàng" và "Đơn hàng", trong đó một khách hàng có thể có nhiều đơn hàng, nhưng mỗi đơn hàng chỉ thuộc về một khách hàng duy nhất Trong lược đồ ERD, quan hệ được biểu diễn bằng hình thoi hoặc hình thoi 2 nét nếu là quan hệ yếu, cùng với ký hiệu (Min-Max) để thể hiện các ràng buộc.

● Đặc tả ràng buộc cấu trúc trên các mối quan hệ

● Thay thế tỉ lệ cardinality (1:1, 1:N, M:N) và ký hiệu đơn/đôi đường cho ràng buộc tham gia

● Liên kết mỗi sự tham gia của một loại thực thể E trong một loại mối quan hệ R với một cặp số nguyên (min, max).

Thuộc tính là thông tin chi tiết về từng thực thể hoặc mối quan hệ, giúp mô tả các đặc điểm và tính chất của chúng Chẳng hạn, thuộc tính của thực thể "Sách" có thể bao gồm các yếu tố như tiêu đề, tác giả, năm xuất bản và mã ISBN.

- Thuộc tính đơn trị: mỗi thực thể có một giá trị nguyên tử duy nhất cho thuộc tính.

- Thuộc tính phức hợp: thuộc tính có thể được tạo thành từ một số thành phần.

- Thuộc tính đa trị: một thực thể có thể có nhiều giá trị cho thuộc tính đó.

Thuộc tính dẫn xuất là một thuộc tính thể hiện giá trị được sinh ra từ giá trị của một thuộc tính liên quan hoặc từ một tập hợp các thuộc tính khác.

- Thuộc tính phức tạp: vừa là thuộc tính phức hợp, vừa là thuộc tính đa trị.

Khóa là một thuộc tính quan trọng dùng để phân biệt các thể hiện của cùng một loại thực thể Mỗi thực thể có thể sở hữu nhiều khóa khác nhau để đảm bảo tính duy nhất và chính xác trong việc nhận diện.

● Lược đồEER (Enhanced Entity-Relationship) model bao gồm tất cả các khái niệm mô hình hóa của mô hình ER

(Entity-Relationship).Ngoài ra, EER bao gồm:

Các kiến thức liên quan đến lược đồ quan hệ

Mỗi bảng trong lược đồ quan hệ biểu thị một thực thể hoặc một nhóm các thực thể trong hệ thống, với mỗi bảng mang một tên duy nhất và được cấu trúc bằng các cột và dòng dữ liệu.

+ Ví dụ: trong một hệ thống quản lý sinh viên, có thể có một bảng

"Students" đại diện cho thông tin sinh viên với các cột như

Mỗi cột trong bảng đại diện cho một thuộc tính cụ thể của thực thể, với tên duy nhất và định nghĩa kiểu dữ liệu cho dữ liệu trong cột đó.

+ Ví dụ: trong bảng "Students", cột "StudentID" có thể là kiểu số nguyên, cột "Name" có thể là kiểu chuỗi ký tự, v.v.

Khóa chính là tập hợp một hoặc nhiều cột trong bảng, có vai trò quan trọng trong việc xác định duy nhất mỗi hàng dữ liệu Nó đảm bảo tính duy nhất và định danh cho thông tin trong bảng, giúp duy trì tính toàn vẹn của cơ sở dữ liệu.

+ Ví dụ: trong bảng "Students", cột "StudentID" có thể được chọn làm khóa chính.

Khóa ngoại, hay còn gọi là Foreign Key, là một cột trong bảng dùng để thiết lập mối quan hệ giữa hai bảng dữ liệu Nó tham chiếu đến khóa chính trong bảng gốc, từ đó tạo ra mối liên kết giữa các bảng, giúp duy trì tính toàn vẹn dữ liệu trong cơ sở dữ liệu.

+ Ví dụ:, trong bảng "Courses", có thể có một cột "StudentID" là khóa ngoại tham chiếu đến khóa chính "StudentID" trong bảng "Students".

Ràng buộc trong lược đồ quan hệ là những quy tắc quan trọng giúp xác định giới hạn và quy định về dữ liệu trong cơ sở dữ liệu, đảm bảo tính toàn vẹn và nhất quán của thông tin.

Các ràng buộc bao gồm:

-Ràng buộc duy nhất (Unique Constraint): Đảm bảo rằng giá trị trong một cột là duy nhất trong bảng.

-Ràng buộc khóa ngoại (Foreign Key Constraint): Đảm bảo rằng giá trị trong cột khóa ngoại phải tham chiếu đến giá trị hợp lệ trong bảng tham chiếu.

- Ràng buộc kiểm tra (Check Constraint): Áp dụng một biểu thức hoặc điều kiện để kiểm tra tính hợp lệ của dữ liệu trong cột.

-Ràng buộc khóa chính (Primary Key Constraint): Đảm bảo rằng giá trị trong cột khóa chính là duy nhất và không được phép để trống.

Chuẩn hóa (Normalization) là quá trình tổ chức dữ liệu trong các bảng nhằm đảm bảo tính nhất quán, hiệu quả và tránh trùng lặp dữ liệu Quá trình này giúp cải thiện cấu trúc và hiệu suất của cơ sở dữ liệu, với các hình thức chuẩn hóa bao gồm Normal Form 1NF, 2NF, 3NF, BCNF và 4NF.

● Các bước chuyển từ lược đồ thực thể kết hợp sang lược đồ quan hệ:

○ Bước 1: Ánh xạ các loại thực thể mạnh

■ Thực thể > Mối quan hệ

■ Thuộc tính của thực thể > Thuộc tính của mối quan hệ

■ Khóa chính của thực thể > Khóa chính của mối quan hệ

○ Bước 2: Ánh xạ các loại thực thể yếu (yếu)

Mỗi thực thể yếu W trong lược đồ ER liên kết với thực thể chủ sở hữu E thông qua một mối quan hệ R, bao gồm tất cả các thuộc tính đơn của W hoặc các thành phần đơn của các thuộc tính hợp thành.

Các thuộc tính khóa ngoại trong R bao gồm các thuộc tính khóa chính của các mối quan hệ tương ứng với loại thực thể chủ sở hữu.

■ Khóa chính của R là sự kết hợp giữa các khóa chính của thực thể mạnh sở hữu W và khóa chính của loại thực thể yếu W, nếu có.

○ Bước 3: Ánh xạ các loại mối quan hệ (0,1) và (0,1):

■ Mối kết hợp R được chuyển thành một lược đồ quan hệ S

■ Các thuộc tính của S gồm hai khóa của T và Q và các thuộc tính của mối kết hợp R

Bước 4: Ánh xạ các loại mối kết hợp (1,1) và (0,1) hoặc (1,1) bằng cách thêm khóa của loại thực thể cùng các thuộc tính của R vào tập thuộc tính của lược đồ quan hệ tương ứng với tập thực thể kia.

Bước 5 trong quá trình ánh xạ các loại mối kết hợp là chuyển đổi mối kết hợp R thành lược đồ quan hệ S Lược đồ S sẽ bao gồm hai khóa từ các bảng T và Q, cùng với các thuộc tính của mối kết hợp R.

Để ánh xạ các loại mối kết hợp (1,1) và (0,n) hoặc (1,n), nếu giá trị (min,max) của T là (1,1) và của Q là (0,n) hoặc (1,n), mối kết hợp R sẽ được chuyển hóa vào lược đồ quan hệ của T Điều này được thực hiện bằng cách thêm khóa của Q và các thuộc tính của R vào tập thuộc tính của lược đồ quan hệ tương ứng với tập thực thể T.

○ Bước 7: Ánh xạ các loại mối kết hợp (0,n) và (1,n): mối kết hợp

R được chuyển thành một lược đồ quan hệ S Các thuộc tính của S gồm khóa của hai thực thể và các thuộc tính của mối kết hợp R

○ Bước 8: Các Lựa chọn để Ánh xạ Chuyên hóa hoặc Tổng quát hóa.

Chuyển đổi mỗi chuyên hóa với các lớp con {S1, S2, , Sm} và lớp cha tổng quát C, trong đó C có các thuộc tính {k, a1, , an} với k là khóa chính, thành các lược đồ quan hệ thông qua một trong bốn lựa chọn.

- Lựa chọn 8A: Nhiều lược đồ quan hệ - Superclass và subclasses

- Lựa chọn 8B: Nhiều lược đồ quan hệ - Chỉ quan hệ của Subclass

- Lựa chọn 8C: Một lược đồ quan hệ với một thuộc tính loại

- Lựa chọn 8D: Một lược đồ quan hệ với nhiều thuộc tính loại

Bước 9: Ánh xạ các loại Union (Categories) yêu cầu xác định các khóa khác nhau từ superclass Trong quá trình này, cần chỉ định một thuộc tính khóa mới, được gọi là khóa thay thế, để thiết lập mối quan hệ tương ứng với loại hợp nhất.

Các dạng chuẩn của lược đồ quan hệ:

Dạng chuẩn 1NF (First Normal Form):

Một bảng cơ sở dữ liệu đạt chuẩn hóa 1NF khi tất cả các miền giá trị của các cột chỉ chứa các giá trị nguyên tử và mỗi cột chỉ chứa một giá trị duy nhất từ miền đó.

Dạng chuẩn 2NF (Second Normal Form):

Để đạt chuẩn 2NF, một quan hệ cần thỏa mãn hai tiêu chí: đầu tiên, nó phải đạt dạng chuẩn 1NF, và thứ hai, các thuộc tính khóa phải phụ thuộc hàm đầy đủ vào khóa chính (khóa chính cột đơn) Dạng chuẩn 3NF (Third Normal Form) tiếp theo yêu cầu các thuộc tính không khóa phải phụ thuộc trực tiếp vào khóa chính mà không thông qua thuộc tính khác.

Công nghệ BACK-END

2.3.1 Giới thiệu về thư viện Java.sql trong java

Thư viện Java.SQL là một API tiêu chuẩn cho phép tương tác với cơ sở dữ liệu quan hệ từ ứng dụng Java, được phát triển bởi Java Community Process (JCP) và là một phần của Java Platform, Standard Edition (Java SE) Thư viện này cung cấp các lớp và giao diện cần thiết để thực hiện các thao tác như đăng ký, kết nối, gửi và nhận câu lệnh SQL, xử lý kết quả, quản lý ngoại lệ, giao dịch và metadata.

2.3.2 Cấu trúc của Java.sql

1 DriverManager: Quản lý danh sách các trình điều khiển cơ sở dữ liệu mà ứng dụng Java có thể sử dụng để kết nối với cơ sở dữ liệu.

2 Driver: Cung cấp thông tin về cơ sở dữ liệu mà nó có thể kết nối.

3 Connection: Đại diện cho một phiên làm việc với cơ sở dữ liệu.

4 Statement: Được sử dụng để thực thi câu lệnh SQL.

5 PreparedStatement: Là một đối tượng Statement được tối ưu hóa, được sử dụng để thực thi câu lệnh SQL nhiều lần.

6 CallableStatement: Được sử dụng để gọi các thủ tục lưu trữ trong cơ sở dữ liệu.

7 ResultSet: Đại diện cho tập hợp các bản ghi được trả về từ một câu lệnh SQL.

XAMPP là phần mềm miễn phí và mã nguồn mở, cung cấp môi trường phát triển ứng dụng web hoàn chỉnh cho lập trình viên Tên gọi XAMPP là viết tắt của các thành phần chính: X (đại diện cho các hệ điều hành khác nhau), Apache, MySQL, PHP và Perl.

XAMPP, được phát triển bởi Apache Friends, là giải pháp đơn giản và dễ dàng cho việc cài đặt và cấu hình ứng dụng web trên máy tính cá nhân hoặc máy chủ Với XAMPP, bạn có thể tạo và thử nghiệm các ứng dụng web mà không cần kết nối Internet hay cài đặt phần mềm riêng lẻ.

2.3.3.2 Các thành phần của XAMPP

XAMPP là một công cụ quan trọng để phân loại các giải pháp cho các công nghệ khác nhau, cung cấp nền tảng thử nghiệm cho các dự án thông qua máy chủ cá nhân Tên gọi XAMPP là viết tắt của các thành phần chính, mỗi chữ cái đại diện cho một yếu tố quan trọng trong hệ thống.

● Nhiều thành phần khác cũng là một phần của bộ sưu tập phần mềm này và được giải thích bên dưới.

Hệ thống đa nền tảng của gói phân phối Apache hỗ trợ nhiều hệ điều hành khác nhau như Windows, Linux và MAC OS, giúp tăng cường tiện ích và mở rộng đối tượng người dùng Các cấu hình hệ điều hành đa dạng được cài đặt trong các hệ thống cục bộ khác nhau, tạo nên sự linh hoạt và khả năng tương thích cao cho người sử dụng.

Apache là một máy chủ web đa nền tảng, được sử dụng rộng rãi trên toàn cầu để cung cấp nội dung web Ứng dụng này miễn phí cài đặt và phục vụ cho cộng đồng phát triển dưới sự bảo trợ của Apache Software Foundation Máy chủ từ xa của Apache cung cấp các tệp, hình ảnh và tài liệu khác theo yêu cầu của người dùng.

MariaDB đã thay thế MySQL trong XAMPP, trở thành một trong những hệ quản trị cơ sở dữ liệu quan hệ phổ biến nhất Được phát triển từ MySQL, MariaDB cung cấp các dịch vụ trực tuyến cho việc lưu trữ, thao tác, truy xuất, sắp xếp và xóa dữ liệu hiệu quả.

PHP là một ngôn ngữ kịch bản phụ trợ quan trọng trong phát triển web, cho phép tạo ra các trang web và ứng dụng động Ngôn ngữ này có thể được cài đặt trên mọi nền tảng và tương thích với nhiều hệ thống quản lý cơ sở dữ liệu khác nhau.

PHP, viết tắt của Bộ xử lý siêu văn bản, là một ngôn ngữ lập trình được phát triển bằng ngôn ngữ C Nó có nguồn gốc từ các công cụ Trang chủ Cá nhân, điều này giải thích cho sự đơn giản và tính năng linh hoạt của nó.

Perl là sự kết hợp của hai ngôn ngữ lập trình động cao cấp, Perl 5 và Perl 6 Nó được sử dụng để giải quyết các vấn đề trong quản trị hệ thống, phát triển web và mạng Với Perl, người dùng có thể lập trình các ứng dụng web động một cách hiệu quả.

Nó rất linh hoạt và mạnh mẽ.

phpMyAdmin là một công cụ quản lý cơ sở dữ liệu MariaDB, với phiên bản 4.0.4 hiện đang được sử dụng trong XAMPP Vai trò chính của phpMyAdmin là hỗ trợ quản trị hệ quản trị cơ sở dữ liệu (DBMS).

OpenSSL là một triển khai mã nguồn mở của Giao thức lớp cổng bảo mật (SSL) và Giao thức lớp truyền tải (TLS) Phiên bản hiện tại, 0.9.8, được tích hợp trong XAMPP, cung cấp các giải pháp bảo mật cho các ứng dụng web.

Bảng điều khiển XAMPP là công cụ quan trọng để quản lý và điều chỉnh các thành phần của XAMPP Phiên bản mới nhất hiện nay là 3.2.1 Trong phần tiếp theo của hướng dẫn, chúng tôi sẽ cung cấp mô tả chi tiết về bảng điều khiển này.

● Webalizer: Đây là một giải pháp phần mềm Phân tích trang web được sử dụng cho nhật ký người dùng và cung cấp chi tiết về việc sử dụng.

Mercury là một hệ thống vận chuyển thư, với phiên bản mới nhất là 4.62 Hệ thống này hoạt động như một máy chủ thư, giúp quản lý và xử lý các thư trên web một cách hiệu quả.

● Tomcat: Phiên bản 7.0.42 hiện đang được sử dụng trong XAMPP Nó là một servlet dựa trên JAVA để cung cấp các chức năng JAVA.

Filezilla là một máy chủ giao thức truyền tệp, giúp hỗ trợ và tối ưu hóa các hoạt động truyền tải tệp hiệu quả Phiên bản mới nhất của phần mềm này là 0.9.41.

2.3.3.3 Vì sao nên sử dụng XAMPP?

Công nghệ FRONT-END

2.4.1 Giới thiệu về AWT trong Java

● Java AWT (Abstract Window Toolkit) là một API để phát triển các ứng dụng dựa trên GUI hoặc cửa sổ trong java.

Các thành phần Java AWT là những thành phần phụ thuộc vào nền tảng, hiển thị theo giao diện của hệ điều hành AWT, viết tắt của Abstract Window Toolkit, cho thấy rằng các thành phần này sử dụng tài nguyên của hệ điều hành để hoạt động.

● Gói java.awt cung cấp các lớp cho api AWT như TextField, Label, TextArea, RadioButton, CheckBox, Choice, List, v.v.

Hình 03 Hệ thống phân cấp của các lớp Java AWT được đưa ra dưới đây

Vùng chứa (Container) trong AWT là thành phần chính dùng để chứa các thành phần khác như button, textfield, và label Các lớp kế thừa từ lớp Container bao gồm các loại container như Frame, Dialog, và Panel.

● Panel là vùng chứa mà không chứa thanh tiêu đề và thanh menu Nó có thể có các thành phần như button, textfield, …

● Khung (Frame) là vùng chứa thanh tiêu đề và có thể có các thanh trình đơn Nó có thể có các thành phần khác như button, textfield,

2.4.1.2Các phương thức hữu ích của lớp Component

Hình 04 Các phương hữu ích của lớp Component

2.4.1.3Ví dụ về AWT trong java

Hình 05 ví dụ về AWT, kế thừa lớp Frame

Hình 06 ví dụ về AWT, tạo thể hiện của lớp Frame

2.4.2 Giới thiệu về Swing trong Java

Java Swing is a component of the Java Foundation Classes (JFC) designed for creating window-based applications It is built on the Abstract Windowing Toolkit (AWT) API and is entirely written in Java.

● Không giống như AWT, Java Swing cung cấp các thành phần không phụ thuộc vào nền tảng và nhẹ hơn.

● Gói javax.swing cung cấp các lớp cho java swing API như JButton, JTextField, JTextArea, JRadioButton, JCheckbox, JMenu, JColorChooser, v.v.

2.4.2.1 Sự khác nhau giữa AWT và Swing

Hình 07 So sánh giữa Java AWT và Swing được đưa ra dưới đây.

● Java Foundation Class (JFC) là một bộ các thành phần GUI đơn giản hóa sự phát triển của các ứng dụng desktop.

2.4.2.3 Phân cấp các lớp trong Java Swing

Hình 08 Hệ thống phân cấp của API java swing được đưa ra dưới đây

2.4.2.4 Các phương thức thường dùng của lớp Component

Hình 9 Các phương thức của lớp Component được sử dụng rộng rãi trong java swing

2.4.2.5 Ví dụ về Swing trong Java

Hình 10 Tạo một button và thêm nó vào đối tượng JFrame bên trong phương thức main()

Hình 08 tạo đối tượng của lớp JFrame

Hình 11 Kế thừa lớp JFrame

PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG

Mô hình thực thể mối kết hợp (ER) của Fabric Agency

- Thực thể Bolt: thuộc tính khóa là code và thuộc tính length lưu trữ dữ liệu của các cuộn vải.

The Category entity includes key attributes such as code and name, along with complex attributes like inventory recept, which encompasses purchase price, date, and quantity Additionally, it features a complex attribute for current price that includes price and date The derived attribute quantity is calculated based on the remaining stock of fabric rolls in inventory.

- Thực thể Supplier: thuộc tính khóa là code, thuộc tính tax code, name, address, bank account, thuộc tính đa trị phone number.

- Thực thể Order: thuộc tính khóa là code, thuộc tính total price, thuộc tính phức tạp partial payment(date, amount of money).

- Thực thể Employee: thuộc tính khóa code, thuộc tính gender, phone, address, thuộc tính phức hợp name( first name và last name).

- Các thực thể manager, partener staff, Operational staff, office staff.

- Mối kết hợp provides giữa thực thể Category và Supplier.

- Mối kết hợp belongs_to giữa thực thể Category và Bolt.

- Mối kết hợp charge of giữa thực thể office staff và Customer.

- Mối kết hợp charge of giữa thực thể Operational staff vàOrder.

- Mối kết hợp take care of giữa thực thể Partenstaff và Supplier

- Mối kết hợp processes giữa thực thể Partenstaff và Supplier có thuộc tính date_time( date và time)

- Mối kết hợp makes giữa thực thể Order và Customer có thuộc tính status và cancel reason

- Chuyên biệt hóa của thuộc tính Employee

Hình 12 Mô hình thực thể mối kết hợp

Lược đồ quan hệ

1 Employees (employee_id, firstName, lastName, gender, address, phone)

6 Orders (order_id, customer_id, Ope_employee_id, processEmployee_id, total_price, orderDate, orderTime, cancelReason, order_ status)

7 Bolts (bolt_id, category_id, length, order_id)

8 Customers (customer_id, offEmployee_id, firstName, lastName, address, warningTime, arrearage)

10 Categories (category_id, supplier_id, name, color)

11 Suppliers (supplier_id, parEmployee_id, taxCode, name, address, bankAccount)

13 PartialPayment (order_id, date, amount_of_money)

14 CurrentPrice (category_id, price, date)

15 InventoryReceipt (date, purchase, quantity, category_id)

Hình 13 Lược đồ quan hệ

Thao tác với cơ sở dữ liệu

3.3.1 Câu lệnh SQL để tạo các bảng

Employee_id INT PRIMARY KEY,

CREATE TABLE manager ( employee_id INT PRIMARY KEY,

FOREIGN KEY (employee_id) REFERENCES employees(employee_id)

CREATE TABLE officeStaff ( employee_id INT PRIMARY KEY,

FOREIGN KEY (employee_id) REFERENCES employees(employee_id)

CREATE TABLE operationalStaff ( employee_id INT PRIMARY KEY,

FOREIGN KEY (employee_id) REFERENCES employees(employee_id)

CREATE TABLE partnerStaff ( employee_id INT PRIMARY KEY,

FOREIGN KEY (employee_id) REFERENCES employees(employee_id)

CREATE TABLE customers ( customer_id INT PRIMARY KEY, first_name VARCHAR(255), last_name VARCHAR(255), address VARCHAR(255), arrearage DECIMAL(10, 2), warningTime DATETIME, offemployee_id INT,

FOREIGN KEY (offemployee_id) REFERENCES officeStaff(employee_id)

CREATE TABLE customerPhoneNum ( customer_id INT, phoneNumber VARCHAR(20),

PRIMARY KEY (customer_id, phoneNumber),

FOREIGN KEY (customer_id) REFERENCES customers(customer_id)

CREATE TABLE orders ( order_id INT PRIMARY KEY, customer_id INT, operational_staffID INT, orderDate DATE, orderTime TIME, total_price DECIMAL(10, 2), order_status VARCHAR(50), cancelReason VARCHAR(255), processEmployeeID INT,

FOREIGN KEY (customer_id) REFERENCES customers(customer_id),

FOREIGN KEY (operational_staffID) REFERENCES operationalStaff(employee_id),

FOREIGN KEY (processEmployeeID) REFERENCES employees(employee_id)

CREATE TABLE pay ( customer_id INT, order_id INT,

PRIMARY KEY (customer_id, order_id),

FOREIGN KEY (customer_id) REFERENCES customers(customer_id),

FOREIGN KEY (order_id) REFERENCES orders(order_id) );

CREATE TABLE partialPayment ( customer_id INT, order_id INT, date DATE, amoutOfMoney DECIMAL(10, 2),

PRIMARY KEY (customer_id, order_id, date, amoutOfMoney),

FOREIGN KEY (customer_id) REFERENCES customers(customer_id),

FOREIGN KEY (order_id) REFERENCES orders(order_id) );

CREATE TABLE suppliers ( supplier_id INT PRIMARY KEY, parEmployeeID INT, taxcode VARCHAR(20), name VARCHAR(255), address VARCHAR(255), bankAccount VARCHAR(30),

FOREIGN KEY (parEmployeeID) REFERENCES partnerStaff(employee_id)

CREATE TABLE categories ( category_id INT PRIMARY KEY, supplier_id INT, name VARCHAR(255), color VARCHAR(20),

FOREIGN KEY (supplier_id) REFERENCES suppliers(supplier_id)

CREATE TABLE bolts ( bolt_id INT PRIMARY KEY, category_id INT, order_id INT, length DECIMAL(10, 2),

FOREIGN KEY (category_id) REFERENCES categories(category_id),

FOREIGN KEY (order_id) REFERENCES orders(order_id) );

CREATE TABLE supplierPhoneNumber ( supplier_id INT, phoneNumber VARCHAR(20),

PRIMARY KEY (supplier_id, phoneNumber),

FOREIGN KEY (supplier_id) REFERENCES suppliers(supplier_id)

CREATE TABLE currentPrice ( category_id INT, price DECIMAL(10, 2), date DATE,

PRIMARY KEY (category_id, price, date),

FOREIGN KEY (category_id) REFERENCES categories(category_id)

CREATE TABLE inventoryReceipt ( category_id INT, date DATE, purchase DECIMAL(10, 2), quantity INT,

PRIMARY KEY (category_id, date, purchase, quantity), FOREIGN KEY (category_id) REFERENCES categories(category_id)

CREATE TABLE accounts ( username VARCHAR(50) PRIMARY KEY, password VARCHAR(255)

- Tạo Triggier cho thuộc tính arrearage

SET arrearage = arrearage + NEW.total_price

WHERE customer_id = NEW.customer_id;

SET arrearage = arrearage - NEW.amoutOfMoney

WHERE customer_id = (SELECT customer_id FROM order WHERE order_id = NEW.order_id);

- Tạo Trigger cho thuộc tính warningTime:

CREATE TRIGGER update_warning_time

IF NEW.arrearage > 2000 AND NEW.warningTime IS NULL THEN

WHERE customer_id = NEW.customer_id;

CREATE TRIGGER update_warning_time_null

IF NEW.arrearage < 2000 AND NEW.warningTime IS NOT NULL THEN

WHERE customer_id = NEW.customer_id;

Employee_id (Khóa chính): Định danh duy nhất cho nhân viên. Fname: Tên đầu tiên của nhân viên.

Lname: Họ của nhân viên.

Gender: Giới tính của nhân viên.

Address: Địa chỉ của nhân viên.

PhoneNumber: Số điện thoại của nhân viên.

2 Bảng Manager: employee_id (Khóa chính): Định danh duy nhất cho quản lý. Liên kết khóa ngoại tới employee_id trong bảng Employees.

3 Bảng OfficeStaff: employee_id (Khóa chính): Định danh duy nhất cho nhân viên văn phòng.

Liên kết khóa ngoại tới employee_id trong bảng Employees.

4 Bảng OperationalStaff: employee_id (Khóa chính): Định danh duy nhất cho nhân viên vận hành.

Liên kết khóa ngoại tới employee_id trong bảng Employees.

5 Bảng PartnerStaff: employee_id (Khóa chính): Định danh duy nhất cho nhân viên đối tác.

Liên kết khóa ngoại tới employee_id trong bảng Employees.

6 Bảng Customers: customer_id (Khóa chính): Định danh duy nhất cho khách hàng. first_name: Tên đầu tiên của khách hàng. last_name: Họ của khách hàng. address: Địa chỉ của khách hàng. arrearage: Số nợ của khách hàng.Thuộc tính dẫn xuất: được tính bằng tổng giá trị đơn đặt của khách hàng - số tiền đã trả cho các đơn hàng của khách hàng. warningTime: Ngày và giờ cảnh báo Thuộc tính dẫn xuất: nhận giá trị mặc định là null, khi khách hàng có thuộc tính arrearage >2000, nhận giá trị là ngày hiện tại. offemployee_id: Liên kết khóa ngoại tới employee_id trong bảng OfficeStaff.

Khóa chính kết hợp: (customer_id, phoneNumber).

Liên kết khóa ngoại tới customer_id trong bảng Customers.

8 Bảng Orders: order_id (Khóa chính): Định danh duy nhất cho đơn đặt hàng. customer_id: Liên kết khóa ngoại tới customer_id trong bảng Customers. operational_staffID: Liên kết khóa ngoại tới employee_id trong bảng OperationalStaff. orderDate: Ngày đặt hàng. orderTime: Giờ đặt hàng. total_price: Tổng giá trị đơn hàng. order_status: Trạng thái đơn hàng. cancelReason: Lý do hủy đơn hàng. processEmployeeID: Liên kết khóa ngoại tới employee_id trong bảng Employees.

Khóa chính kết hợp: (order_id, date, amoutOfMoney).

Liên kết khóa ngoại tới order_id trong bảng Orders.

10 Bảng Suppliers: supplier_id (Khóa chính): Định danh duy nhất cho nhà cung cấp. parEmployeeID: Liên kết khóa ngoại tới employee_id trong bảng PartnerStaff. taxcode: Mã số thuế của nhà cung cấp. name: Tên của nhà cung cấp. address: Địa chỉ của nhà cung cấp. bankAccount: Tài khoản ngân hàng của nhà cung cấp.

11 Bảng Categories: category_id (Khóa chính): Định danh duy nhất cho danh mục.supplier_id: Liên kết khóa ngoại tới supplier_id trong bảngSuppliers. name: Tên của danh mục. color: Màu sắc của danh mục.

12 Bảng Bolts: bolt_id (Khóa chính): Định danh duy nhất cho cuộn vải. category_id: Liên kết khóa ngoại tới category_id trong bảng Categories. order_id: Liên kết khóa ngoại tới order_id trong bảng Orders. length: Chiều dài của cuộn vải.

Khóa chính kết hợp: (supplier_id, phoneNumber).

Liên kết khóa ngoại tới supplier_id trong bảng Suppliers.

Khóa chính kết hợp: (category_id, price, date).

Liên kết khóa ngoại tới category_id trong bảng Categories.

Khóa chính kết hợp: (category_id, date, purchase, quantity). Liên kết khóa ngoại tới category_id trong bảng Categories.

16 Bảng Accounts: username (Khóa chính): Định danh duy nhất cho tài khoản. password: Mật khẩu của tài khoản.

Chuẩn hóa lược đồ quan hệ về dạng chuẩn 3NF

- Lược đồ quan hệ chỉ chứa các thuộc tính nguyên tố nên lược đồ ở dạng chuẩn 1NF.

- employee_id là khóa dự tuyển, các thuộc tính còn lại phụ thuộc hàm đầy đủ vào employee_id nên lược đồ ở dạng chuẩn 2NF.

- Do employee_id xác định các thuộc tính còn lại trong bảng thì employee_id là siêu khóa nên lược đồ ở dạng chuẩn 3NF.

- Lược đồ quan hệ chỉ có một thuộc tính nên nó là dạng chuẩn 3NF.

- Lược đồ quan hệ chỉ có một thuộc tính nên nó là dạng chuẩn 3NF.

- Lược đồ quan hệ chỉ có một thuộc tính nên nó là dạng chuẩn 3NF.

- Lược đồ quan hệ chỉ có một thuộc tính nên nó là dạng chuẩn 3NF.

- Lược đồ quan hệ chỉ chứa các thuộc tính nguyên tố nên lược đồ ở dạng chuẩn 1NF.

- order_id là khóa dự tuyển, các thuộc tính còn lại phụ thuộc hàm đầy đủ vào order_id nên lược đồ ở dạng chuẩn 2NF.

- Do order_id xác định các thuộc tính còn lại trong bảng thì order_id là siêu khóa nên lược đồ ở dạng chuẩn 3NF.

- Lược đồ quan hệ chỉ chứa các thuộc tính nguyên tố nên lược đồ ở dạng chuẩn 1NF.

- supplier_id là khóa dự tuyển, các thuộc tính còn lại phụ thuộc hàm đầy đủ vào supplier_id nên lược đồ ở dạng chuẩn 2NF.

- Do supplier_id xác định các thuộc tính còn lại trong bảng thì supplier_id là siêu khóa nên lược đồ ở dạng chuẩn 3NF.

- Lược đồ quan hệ chỉ chứa các thuộc tính nguyên tố nên lược đồ ở dạng chuẩn 1NF.

- order_id là khóa dự tuyển, các thuộc tính còn lại phụ thuộc hàm đầy đủ vào order_id nên lược đồ ở dạng chuẩn 2NF.

- Do order_id xác định các thuộc tính còn lại trong bảng thì order_id là siêu khóa nên lược đồ ở dạng chuẩn 3NF.

- Lược đồ quan hệ chỉ chứa các thuộc tính nguyên tố nên lược đồ ở dạng chuẩn 1NF.

- category_id là khóa dự tuyển, các thuộc tính còn lại phụ thuộc hàm đầy đủ vào category_id nên lược đồ ở dạng chuẩn 2NF.

- Do category_id xác định các thuộc tính còn lại trong bảng thì category_id là siêu khóa nên lược đồ ở dạng chuẩn 3NF.

- Lược đồ quan hệ chỉ chứa các thuộc tính nguyên tố nên lược đồ ở dạng chuẩn 1NF.

- bolt_id là khóa dự tuyển, các thuộc tính còn lại phụ thuộc hàm đầy đủ vào bolt_id nên lược đồ ở dạng chuẩn 2NF.

- Do bolt_id xác định các thuộc tính còn lại trong bảng thì bolt_id là siêu khóa nên lược đồ ở dạng chuẩn 3NF.

- Lược đồ quan hệ chỉ chứa các thuộc tính nguyên tố nên lược đồ ở dạng chuẩn 1NF.

- customer_id là khóa dự tuyển, các thuộc tính còn lại phụ thuộc hàm đầy đủ vào customer_id nên lược đồ ở dạng chuẩn 2NF.

- Do customer_id xác định các thuộc tính còn lại trong bảng thì customer_id là siêu khóa nên lược đồ ở dạng chuẩn 3NF.

- Lược đồ quan hệ chỉ chứa các thuộc tính nguyên tố nên lược đồ ở dạng chuẩn 1NF.

- category_id là khóa dự tuyển, các thuộc tính còn lại phụ thuộc hàm đầy đủ vào category_id nên lược đồ ở dạng chuẩn 2NF.

- Do category_id xác định các thuộc tính còn lại trong bảng thì category_id là siêu khóa nên lược đồ ở dạng chuẩn 3NF.

- Lược đồ quan hệ chỉ chứa các thuộc tính nguyên tố nên lược đồ ở dạng chuẩn 1NF.

- customer_id là khóa dự tuyển, các thuộc tính còn lại phụ thuộc hàm đầy đủ vào customer_id nên lược đồ ở dạng chuẩn 2NF.

- Do customer_id xác định các thuộc tính còn lại trong bảng thì customer_id là siêu khóa nên lược đồ ở dạng chuẩn 3NF.

- Lược đồ quan hệ chỉ chứa các thuộc tính nguyên tố nên lược đồ ở dạng chuẩn 1NF.

- category_id là khóa dự tuyển, các thuộc tính còn lại phụ thuộc hàm đầy đủ vào category_id nên lược đồ ở dạng chuẩn 2NF.

- Do category_id xác định các thuộc tính còn lại trong bảng thì category_id là siêu khóa nên lược đồ ở dạng chuẩn 3NF.

- Lược đồ quan hệ chỉ chứa các thuộc tính nguyên tố nên lược đồ ở dạng chuẩn 1NF.

- supplier_id là khóa dự tuyển, các thuộc tính còn lại phụ thuộc hàm đầy đủ vào supplier_id nên lược đồ ở dạng chuẩn 2NF.

- Do supplier_id xác định các thuộc tính còn lại trong bảng thì supplier_id là siêu khóa nên lược đồ ở dạng chuẩn 3NF.

- Lược đồ quan hệ chỉ chứa các thuộc tính nguyên tố nên lược đồ ở dạng chuẩn 1NF.

- userName là khóa dự tuyển, các thuộc tính còn lại phụ thuộc hàm đầy đủ vào userName nên lược đồ ở dạng chuẩn 2NF.

- Do userName xác định các thuộc tính còn lại trong bảng thì userName là siêu khóa nên lược đồ ở dạng chuẩn 3NF.

Hình 14 Danh sách các bảng

3.4 Chứng minh một trường hợp sử dụng hiệu suất chỉ mục.

Khi tìm kiếm cho một file dữ liệu có 18,000,003 dòng. a.Tìm kiếm không sử dụng index

Kích thước trung bình của 1 record: R = 568 bytes.

The total size of a row in the database is calculated by summing the sizes of its fields, which include supplier_id (4 bytes, int), parEmployeeID (4 bytes, int), taxcode (20 bytes), name (255 bytes), address (255 bytes), and bankAccount (30 bytes).

Kích thước của 1 block trong bảng: B = 16384 bytes. Ảnh 15 Câu lệnh SHOW VARIABLES LIKE 'innodb_page_size'; hiển thị độ dài của 1 block.

Bảng suppliers có 18960003 records. Ảnh 16 Câu lệnh SELECT COUNT(*) FROM suppliers; hiển thị số dòng của bảng suppliers. bfr =⎣(B/R)⎦=⎣(16,384 /568)⎦= 28 records trên mỗi block. b =⌈(r/bfr) =⌉ ⌈(18,000,003/28)⌉= 642,858 blocks

Tìm kiếm nhị phân trên file dữ liệu cần có⌈log b2 ⌉ =⌈log 642858 2 ⌉ = 20 block accesses

Trong MariaDB, thời gian tìm kiếm thực tế có sự khác biệt rõ rệt giữa việc sử dụng và không sử dụng chỉ mục (index) Khi không sử dụng chỉ mục, quá trình tìm kiếm sẽ chậm hơn so với khi sử dụng chỉ mục, như được minh họa trong các hình ảnh đã đề cập Đặc biệt, việc tạo chỉ mục trên thuộc tính supplier_id của bảng suppliers giúp tối ưu hóa hiệu suất tìm kiếm MariaDB sử dụng cấu trúc BTree để thực hiện các tìm kiếm này, cho phép hiển thị thông tin chi tiết về chỉ mục một cách hiệu quả.

Khóa trong chỉ mục: supplier_id => kích thước của khóa: 4 bytes.

Kích thước của một block pointer: 5 bytes.

Size(PT): kích thước của 1 tree pointer

Size(K): kích thước của 1 khóa.

Size(Pd): kích thước của 1 data pointer.

Size(PT) = 5; Size(K) = 4; Size(Pd) =5. Ảnh 19 Cấu trúc của BTree Dựa theo cấu trúc BTree, ta có công thức:

Size(PT)*q + Size(K)*(q-1) + Size(Pd)*(q-1)

Ngày đăng: 11/01/2025, 22:14

HÌNH ẢNH LIÊN QUAN

Hình 02. Ví dụ về truy vấn SQL trong Java - Báo cáo kết thúc học phần cơ sở dữ liệu nâng cao Đề tài  fabric agency database
Hình 02. Ví dụ về truy vấn SQL trong Java (Trang 37)
Hình 03. Hệ thống phân cấp của các lớp Java AWT được đưa ra dưới đây - Báo cáo kết thúc học phần cơ sở dữ liệu nâng cao Đề tài  fabric agency database
Hình 03. Hệ thống phân cấp của các lớp Java AWT được đưa ra dưới đây (Trang 38)
Hình 05. ví dụ về AWT, kế thừa lớp Frame - Báo cáo kết thúc học phần cơ sở dữ liệu nâng cao Đề tài  fabric agency database
Hình 05. ví dụ về AWT, kế thừa lớp Frame (Trang 40)
Hình 08. Hệ thống phân cấp của API java swing được đưa ra dưới đây - Báo cáo kết thúc học phần cơ sở dữ liệu nâng cao Đề tài  fabric agency database
Hình 08. Hệ thống phân cấp của API java swing được đưa ra dưới đây (Trang 43)
Hình 10. Tạo một button và thêm nó vào đối tượng JFrame bên trong phương thức main() - Báo cáo kết thúc học phần cơ sở dữ liệu nâng cao Đề tài  fabric agency database
Hình 10. Tạo một button và thêm nó vào đối tượng JFrame bên trong phương thức main() (Trang 44)
Hình 08. tạo đối tượng của lớp JFrame - Báo cáo kết thúc học phần cơ sở dữ liệu nâng cao Đề tài  fabric agency database
Hình 08. tạo đối tượng của lớp JFrame (Trang 45)
Hình 12. Mô hình thực thể mối kết hợp - Báo cáo kết thúc học phần cơ sở dữ liệu nâng cao Đề tài  fabric agency database
Hình 12. Mô hình thực thể mối kết hợp (Trang 48)
Hình 13. Lược đồ quan hệ - Báo cáo kết thúc học phần cơ sở dữ liệu nâng cao Đề tài  fabric agency database
Hình 13. Lược đồ quan hệ (Trang 50)
Hình 14. Danh sách các bảng - Báo cáo kết thúc học phần cơ sở dữ liệu nâng cao Đề tài  fabric agency database
Hình 14. Danh sách các bảng (Trang 65)
Hình 23. Giao diện khi đăng nhập thành công - Báo cáo kết thúc học phần cơ sở dữ liệu nâng cao Đề tài  fabric agency database
Hình 23. Giao diện khi đăng nhập thành công (Trang 71)
Hình 29. Giao diện khi người dùng nhập tên danh mục bằng ký tự đặc biệt - Báo cáo kết thúc học phần cơ sở dữ liệu nâng cao Đề tài  fabric agency database
Hình 29. Giao diện khi người dùng nhập tên danh mục bằng ký tự đặc biệt (Trang 73)
Hình 30. Giao diện chức năng thêm mới nhà cung cấp - Báo cáo kết thúc học phần cơ sở dữ liệu nâng cao Đề tài  fabric agency database
Hình 30. Giao diện chức năng thêm mới nhà cung cấp (Trang 74)
Hình 33. Các người dùng khác xóa nhà cung cấp hệ thống sẽ hiển thị thông báo lỗi - Báo cáo kết thúc học phần cơ sở dữ liệu nâng cao Đề tài  fabric agency database
Hình 33. Các người dùng khác xóa nhà cung cấp hệ thống sẽ hiển thị thông báo lỗi (Trang 75)
Hình 36. Giao diện chức năng tìm theo nhà cung cấp - Báo cáo kết thúc học phần cơ sở dữ liệu nâng cao Đề tài  fabric agency database
Hình 36. Giao diện chức năng tìm theo nhà cung cấp (Trang 76)