CƠ SỞ LÝ THUYẾT VÀ PHÂN TÍCH HỆ THỐNG
TỔNG QUAN VỀ JAVA
Bộ công cụ phát triển Java (JDK) là một tập hợp các công cụ phần mềm do Sun Microsystems phát triển, hỗ trợ các lập trình viên trong việc tạo ra các applet và ứng dụng Java.
1.1.2 Ngôn ngữ lập trình Java
Java là một ngôn ngữ hướng đối tượng, đa mục đích với các cú pháp rất giống với
Java đã phát triển vượt ra ngoài những gì ban đầu người ta nghĩ, không chỉ dừng lại ở việc lập trình applet hay chương trình nhỏ trên trình duyệt Mặc dù từng có thời kỳ bị coi là lỗi thời do sự xuất hiện của Flash, nhưng Java đã trở thành một môi trường đa năng, được sử dụng rộng rãi trên nhiều thiết bị, từ điện thoại di động đến các thiết bị y tế và thẻ tín dụng Các công ty lớn như Sun, IBM và BEA đã hợp tác để phát triển Java, khẳng định vị thế của ngôn ngữ này trong lập trình server, ứng dụng desktop và các trang web động Đặc biệt, vào năm 1997, NASA đã công nhận Java là ngôn ngữ chính cho lập trình thiết bị và phần mềm của họ.
Java là một môi trường phát triển và ngôn ngữ lập trình toàn năng, nổi bật với khả năng "viết một lần, chạy mọi nơi" Điều này có nghĩa là chương trình viết trên Windows có thể hoạt động tốt trên Mac hoặc Unix mà không gặp vấn đề gì Java cho thấy sự ưu việt với khả năng chuyển đổi nền tảng, phân phối, đa tầng và hướng đối tượng Ngoài ra, ngôn ngữ này được đánh giá cao bởi các lập trình viên chuyên nghiệp trên toàn thế giới nhờ cú pháp và cấu trúc tốt Sử dụng Java giúp mở rộng quy mô dự án lập trình không giới hạn và quản lý dự án trở nên thuận tiện hơn.
1.1.3 Tổng quan về Struts 1.0 Framework a Sơ lƣợc về Struts Framework
Struts là một framework hỗ trợ phát triển ứng dụng Web trên nền tảng Java, sử dụng mẫu thiết kế Model – View – Controller (MVC) Struts giúp giải quyết nhiều vấn đề liên quan đến các ứng dụng Web hướng đến doanh nghiệp, yêu cầu hiệu năng cao với Java servlet và JSP Tìm hiểu kiến trúc MVC trong Java là điều cần thiết để tối ưu hóa quy trình phát triển ứng dụng.
Mô hình MVC phân chia các thành phần của ứng dụng thành ba loại chính: Model, View và Controller, với mỗi thành phần đảm nhận một trách nhiệm cụ thể và hoạt động độc lập Sự thay đổi trong một thành phần sẽ không gây ảnh hưởng lớn đến các thành phần khác, đảm bảo tính linh hoạt và khả năng bảo trì cho ứng dụng.
Model đóng vai trò quan trọng trong việc cung cấp và lưu trữ dữ liệu từ cơ sở dữ liệu Tất cả các Business Logic được thực thi tại Model, nơi kiểm tra dữ liệu nhập từ người dùng qua View trước khi lưu vào cơ sở dữ liệu Model bao gồm các thành phần như truy xuất dữ liệu, kiểm tra tính hợp lệ của dữ liệu và logic lưu trữ dữ liệu.
View là phần trình bày của ứng dụng, chịu trách nhiệm lấy dữ liệu từ người dùng, gửi yêu cầu đến Controller, và hiển thị kết quả trả về Các thành phần của View bao gồm HTML, JSP, thư viện Tag và các file nguồn.
The Controller acts as an intermediary between the Model and the View in a web application It is responsible for receiving requests from the Client and executing the appropriate business logic from the Model Once the logic is processed, the Controller outputs the data for the user through the View component Key components of the Controller include ActionServlet, Action, ActionForm, and struts-config.xml.
Hình 1.8 Mối quan hệ giữa các thành phần
- Mối quan hệ giữa View và Controller: ĐẶNG THỊ HƯƠNG – 52K1 – KHOA CNTT 11
Trong mô hình MVC, các view và controller được liên kết chặt chẽ, với mỗi view tương ứng với một controller duy nhất Controller đóng vai trò như một chiến lược quản lý đầu vào cho view, đồng thời view cũng có trách nhiệm tạo ra các khung nhìn và controller mới.
Các khung nhìn và controller có mối quan hệ chặt chẽ, với đầu vào và đầu ra của ứng dụng liên kết với nhau Trong hầu hết các nền tảng GUI MVC, view và controller thường được kết hợp trong một đối tượng, được gọi là Document View Trong cấu trúc này, view và controller được kết hợp thành một view, trong khi model hoạt động như một tài liệu.
+ Passive model luân phiên chịu trách nhiệm nhiều hơn về controller, vì nó phải thông báo cho các view khi có sự cập nhật
+ Controller chịu trách nhiệm tạo ra và lựa chọn các view và view hướng đến việc chiệu trách nhiệm ít hơn đối với các controller của nó
- Mối quan hệ giữa Model và View:
View phụ thuộc vào model, và bất kỳ thay đổi nào trong giao diện model đều cần có sự điều chỉnh tương ứng trong view Việc duy trì sự tách biệt giữa model và view là một thách thức, điều này có thể ảnh hưởng đến tính độc lập của các thành phần trong kiến trúc MVC.
- Mối quan hệ giữa Model và Controller:
Controller phụ thuộc vào model Các sự thay đổi đối với giao diện model có thể yêu cầu sự thay đổi song song đối với controller
- Các ƣu điểm của mô hình MVC:
+ Giao diện người sử dụng có khả năng thay đổi thuận tiện
Các view và controller khác nhau có thể được điều chỉnh để cung cấp nhiều lựa chọn giao diện người dùng cho cùng một model Ví dụ, dữ liệu từ một model có thể được trình bày dưới dạng biểu đồ cột, biểu đồ tròn hoặc bảng tính.
MVC yêu cầu cấu trúc giao diện người dùng ứng dụng thành các đối tượng kế thừa lẫn nhau và thiết lập các quan hệ chuẩn giữa các đối tượng này.
Các thành phần giao diện kết hợp với các view và controller tạo thành một đối tượng đơn giản, giúp tăng khả năng tái sử dụng và giảm thiểu nhu cầu về các lớp con đặc biệt.
+ Nhiều view sử dụng đồng thời một model
+ Nhiều view khác nhau có thể hoạt động tại cùng một thời điểm Mỗi view mô tả đồng thời và độc lập thông tin giống nhau từ một model
+ Các khung nhìn đƣợc đồng bộ hóa
+ Cơ chế truyền sự thay đổi đảm bảo rằng tất cả các khung nhìn có thể đƣợc phản ứng một cách đồng thời trạng thái hiện tại của model
+ Thuận lợi hơn trong việc thay đổi giao diện người sử dụng
+ Kiểm thử chức năng chính của ứng dụng nhanh hơn vì nó đƣợc đóng gói bởi model
- Hạn chế của mô hình MVC:
+ Gia tăng sự phức tạp
+ Sự kết nối chặt chẽ của view và controller đối với model
Sự thay đổi trong giao diện model yêu cầu điều chỉnh tương ứng ở view và có thể cần thay đổi thêm ở controller, dẫn đến việc thay đổi mã trở nên phức tạp hơn.
+ Tiềm ẩn sự cập nhật dƣ thừa
TỔNG QUAN VỀ HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU POSTGRESQL
PostgreSQL là một hệ quản trị cơ sở dữ liệu mã nguồn mở mạnh mẽ, đã trải qua hơn 17 năm phát triển Với cấu trúc được kiểm chứng, PostgreSQL mang lại độ tin cậy, tính toàn vẹn dữ liệu và tính chính xác cao cho người sử dụng Hệ quản trị này có khả năng hoạt động trên nhiều hệ điều hành khác nhau, bao gồm Linux, UNIX (AIX, BSD, HP-UX, SGI IRIX, Mac OS X, Solaris, Tru64) và Windows.
PostgreSQL hỗ trợ đầy đủ các tính năng như foreign keys, joins, views, triggers và stored procedures, với nhiều ngôn ngữ lập trình khác nhau Hệ quản trị này cung cấp các kiểu dữ liệu đa dạng như INTEGER, NUMBER, BOOLEAN, CHAR, VARCHAR, DATE INTERVAL và TIMESTAMP, đồng thời cho phép lưu trữ các đối tượng nhị phân lớn như hình ảnh, âm thanh và video PostgreSQL có thể được sử dụng qua các ngôn ngữ như C/C++, Java, Net, Perl, Python, Ruby, Tcl và ODBC Với các tính năng mạnh mẽ như kiểm soát truy cập đồng thời, khôi phục dữ liệu tại thời điểm, quản lý dung lượng bảng, sao chép không đồng bộ và giao dịch lồng nhau, PostgreSQL là một hệ quản trị cơ sở dữ liệu lý tưởng cho các ứng dụng phức tạp Hệ thống này cũng hỗ trợ bộ ký tự quốc tế và bảng mã đa byte, cho phép định dạng và phân loại ký tự văn bản Đặc biệt, PostgreSQL có khả năng mở rộng, quản lý hàng terabyte dữ liệu và hàng triệu người dùng truy cập đồng thời, cho thấy tính hiệu quả trong các môi trường thực tế.
Dung lƣợng tối đa của cơ sở dữ liệu Không giới hạn
Dung lƣợng bảng tối đa 32 TB
Dung lƣợng tối đa của cột 1,6 TB
Dung lượng tối đa của trường 1 GB
Hàng tối đa mỗi Bảng Không giới hạn
Số cột tối đa của mỗi bảng 250 - 1600 tùy thuộc vào loại cột
Chỉ số tối đa của mỗi bảng Không giới hạn
1.2.2 Ƣu và nhƣợc điểm của PostgreSQL a Ƣu điểm
- Dễ cấu hình, thích ứng tốt, độ tin cậy cao
- Hỗ trợ tốt với PHP và Java
- Là một phần mềm mã nguồn mở
- Tuân thủ các chuẩn của SQL
- Hoạt động đƣợc trên nhiều hệ điều hành nhƣ : Linux, UNIX (AIX, BSD, HP-UX, SGI IRIX, Mac OS X, Solaris, Tru64) ĐẶNG THỊ HƯƠNG – 52K1 – KHOA CNTT 21
- Lưu trữ (dạng nhị phân) các đối tượng có dữ liệu lớn như hình ảnh, âm thanh hoặc video
- Hỗ trợ các ngôn ngữ nhƣ : C/C++, Java, Net, Perl, Python, Ruby, Tcl, ODBC…
- Có sự thống nhất giữa những người phát triển (tái sử dụng những kỹ năng và các thƣ viện đã có)
- Có hầu hết các truy vấn SQL với các kiểu dữ liệu nhƣ INTEGER, NUMBER, BOOLEAN, CHAR, VARCHAR, DATE INTERVAL, và TIMESTAMP
- Tạo chỉ mục giúp quá trình truy vấn đạt hiệu quả hơn
Hỗ trợ chức năng tìm kiếm tổng quát hóa với khả năng gắn chỉ mục, giúp mở rộng phạm vi tìm kiếm thông qua các loại chỉ mục như compound, unique, partial và functional.
- Có thể tạo mới kiểu dữ liệu, các hàm, thủ tục (proceduce) …
Hệ quản trị cơ sở dữ liệu hỗ trợ đa người dùng cho phép lưu trữ dữ liệu không gian, vốn thường được chia sẻ giữa nhiều người Điều này mang lại lợi ích như truy cập từ xa qua các chuẩn giao tiếp như JDBC, ODBC và PERL/DBI, đồng thời nâng cao tính bảo mật, khi một số người dùng có toàn quyền truy cập trong khi những người khác chỉ có quyền đọc hoặc không nhìn thấy dữ liệu.
- Cộng đồng người dùng tương đối ít
- Chậm hơn so với MySQL
- Không có tham số mặc định trong PL/PGSQL
1.2.3 So sánh PostgreSQL với các hệ cơ sở dữ liệu khác ĐẶNG THỊ HƯƠNG – 52K1 – KHOA CNTT 22
This article compares five different Database Management Systems (DBMS): DB2, Microsoft SQL Server, MySQL, Oracle, and PostgreSQL Below is a comparison table highlighting key features of these DBMS.
DB2 Có Không Có Có
MySQL Có Có Có Có
Oracle Có Có Có Có
PostgreSQL Có Có Có Có
Bảng so sánh tính năng hỗ trợ hệ điều hành Độ lớn CSDL tối đa Độ lớn bảng tối đa Độ lớn hàng tối đa
Số cột tối đa mỗi hàng
524258 TB 524258 TB Không giới hạn 20000
MySQL Không giới hạn 16 TB 64 KB 4096
Oracle Không giới hạn Không giới hạn Không giới hạn 1000
PostgreSQL Không giới hạn 32 TB 1.6 TB 1600
Bảng so sánh hiệu suất lưu trữ số liệu ĐẶNG THỊ HƯƠNG – 52K1 – KHOA CNTT 23
Union Intersect Except Inner joins
DB2 Có Có Có Có Có Có Có
Có Có Có Có Có Có Có
MySQL Có Không Không Có Có Có Có
Oracle Có Có Có Có Có Có Có
PostgreSQL Có Có Có Có Có Có Có
Bảng so sánh một số tính năng cơ bản
Range Hash Composite (Rank + Hash) List
DB2 Có Có Có Có
Microsoft SQL Server Có Không Không Không
MySQL Có Có Có Có
Oracle Có Có Có Có
PostgreSQL Có Có Có Có
Bảng so sánh phương thức quản lý và phân vùng ĐẶNG THỊ HƯƠNG – 52K1 – KHOA CNTT 24
Mã hóa mạng có nguồn gốc
Quy định mật khẩu phức tạp
Microsoft SQL Server Có ? Có Có
MySQL Có Không Không Không
Oracle Có Có Có Có
PostgreSQL Có Không Không Có
Bảng so sánh tính năng bảo mật
Từ 5 bảng trên có thể thấy, Microsoft SQL Server vào MySQL nhìn chung có hiệu năng kém hơn so với 3 DBMS còn lại Trong 3 DBMS này, Oracle và DB2 là các phần mềm thương mại trong khi PostgreSQL là phần mềm mã nguồn mở Đối với các hệ cơ sở dữ liệu không quá lớn, chúng ta có thể sử dụng PostgreSQL mà vẫn đảm bảo đầy đủ tính năng và bảo mật tốt.
CÁC PHƯƠNG PHÁP CẬP NHẬT DỮ LIỆU TỰ ĐỘNG
Khi một website chứa nhiều dữ liệu lớn, việc theo dõi thông tin trở nên khó khăn cho người dùng Để tự động cập nhật tin tức từ nhiều nguồn mà không cần truy cập từng trang, các phương pháp sau đây sẽ giúp giải quyết vấn đề này hiệu quả.
1.3.1 RSS a Khái niệm RSS ĐẶNG THỊ HƯƠNG – 52K1 – KHOA CNTT 25
RSS, viết tắt từ Really Simple Syndication hoặc Rich Site Summary, là một định dạng tài liệu dựa trên XML (eXtensible Markup Language) giúp người dùng nhanh chóng và thuận tiện cập nhật thông tin RSS tóm lược nội dung vào các đoạn dữ liệu ngắn gọn, chuẩn hóa, hỗ trợ việc tra cứu thông tin hiệu quả.
Tất cả các tệp RSS tuân theo đặc tả XML 1.0 và thường được sử dụng để chia sẻ các đầu mục tin, nhưng cũng có thể ứng dụng cho nhiều loại nội dung web khác RSS giúp webmaster tự động cập nhật các phần nhất định của trang web Nhiều trang web lớn và uy tín như CNN, Forbes và Motley Fool đều sử dụng RSS, làm cho nó trở thành một yếu tố quan trọng trong việc tạo ra luồng truy cập đến website gốc.
Các website thường đánh dấu nguồn RSS bằng các ký hiệu RDF, RSS hoặc XML, trong đó biểu tượng XML là phổ biến nhất Công nghệ RSS (Rich Site Summary) cho phép người dùng nhận thông tin cập nhật mới nhất từ các trang web bất cứ lúc nào, không chỉ bao gồm tiêu đề tin tức mà còn cả nội dung mới RSS đóng vai trò quan trọng trong việc cung cấp thông tin đa dạng và kịp thời cho người dùng.
Trong những ngày đầu của sự phát triển web, việc liên kết giữa các trang web diễn ra nhưng việc chia sẻ dữ liệu giữa chúng rất hạn chế Hiện nay, số lượng trang web sử dụng RSS đang gia tăng nhanh chóng nhờ vào những lợi ích rõ ràng và hợp lý mà nó mang lại.
Blogs đã xuất hiện và phát triển mạnh mẽ trong cộng đồng người dùng Internet từ lâu Chúng cho phép cá nhân hoặc nhóm chia sẻ thông tin về nhiều chủ đề khác nhau, thường liên quan đến kinh nghiệm hoặc ý kiến cá nhân Người dùng có thể tận dụng RSS để cập nhật blog một cách dễ dàng, giúp độc giả theo dõi những thay đổi một cách thuận tiện.
Chia sẻ thông tin diện rộng, hay còn gọi là syndication of information, là một phương pháp phổ biến trong truyền hình và các loại hình báo chí khác Việc này giúp các mạng lưới truyền hình và báo chí tiết kiệm chi phí và thời gian so với việc tự sản xuất nội dung Đồng thời, công chúng cũng dễ dàng nhận diện và theo dõi những thông tin được quảng bá rộng rãi.
Các website thường sử dụng thông tin từ nhiều nguồn khác nhau, đặc biệt là từ các tổ chức uy tín để tổ chức và phân phối dữ liệu chung Việc này giúp họ tiết kiệm thời gian và nâng cao độ tin cậy của nội dung Một số dữ liệu có thể được chia sẻ miễn phí giữa các website, trong khi nhiều thông tin khác lại được bán bởi các nhà phân phối cho các bên có nhu cầu Tích hợp những thông tin này vào website có thể dẫn đến việc tăng lượng truy cập đáng kể.
Nhiều website hiện nay sử dụng RSS như một công cụ hữu ích để cập nhật thông tin mới về trang web hoặc sản phẩm Ví dụ, một website chuyên về Linux có thể tự động thu thập dữ liệu RSS từ nhiều nguồn khác nhau, cung cấp cho khách hàng kho thông tin đầy đủ và cập nhật về hệ điều hành này Việc sử dụng RSS giúp tiết kiệm thời gian đáng kể so với việc webmaster phải truy cập từng website để cập nhật thông tin một cách thủ công.
RSS là một công cụ quan trọng trong việc tập hợp thông tin từ nhiều nguồn khác nhau và chia sẻ chúng một cách rộng rãi Các website có thể thu thập và phân phối các nguồn RSS để cung cấp thông tin cho người dùng hoặc truyền tải dữ liệu đến các trang khác Một số website tích hợp tính năng cá nhân hóa, giúp người dùng dễ dàng tìm kiếm thông tin, như lưu trữ các nguồn RSS đã truy cập hoặc phân loại chúng để tạo cấu trúc rõ ràng hơn cho trang web.
Thuật ngữ “người tập hợp thông tin” (aggregator) chỉ phần mềm cho phép đọc các tệp RSS, thường được gọi là phần mềm đọc tin (newsreader) hoặc phần mềm đọc nguồn RSS (RSS feed reader) Để sử dụng phần mềm này, người dùng cần định nghĩa các nguồn RSS muốn theo dõi Phần mềm sẽ tự động kiểm tra các nguồn đó để tìm kiếm những thay đổi, và tất cả các thay đổi sẽ hiển thị trong cửa sổ của phần mềm, giúp người dùng chọn lựa nguồn tin muốn đọc.
RSS là công cụ hiệu quả giúp tiếp cận người dùng mà không cần quảng cáo tốn kém Nếu trang web cung cấp thông tin hấp dẫn, RSS sẽ giới thiệu và truyền tải nội dung tới khách hàng, thu hút sự quan tâm của họ Đối với người dùng Internet thông thường, RSS hỗ trợ tìm kiếm thông tin quan trọng từ các nguồn mà họ ít truy cập Sức mạnh của web nằm ở khả năng sử dụng liên kết để nâng cao hiệu quả và tính hệ thống Khi webmaster tìm thấy website hấp dẫn, họ sẽ tạo liên kết tới nó, và với RSS, các siêu liên kết trở thành nguồn thông tin hữu ích, cung cấp cập nhật cho người dùng về nội dung mà họ có thể khám phá.
Nguồn RSS không chỉ giới hạn ở các tiêu đề tin tức, như ví dụ từ BBC News với hơn 60 nguồn khác nhau, mà còn có khả năng truyền tải nhiều loại nội dung khác Người dùng có thể tùy chỉnh cách hiển thị thông tin trong nguồn RSS để phù hợp với nhu cầu của mình.
Sự kiện sắp diễn ra có thể được thông báo hiệu quả qua nguồn RSS, giúp người dùng nhanh chóng nắm bắt kế hoạch trên website và nhắc nhở họ về các hạn định thời gian.
Cơ sở dữ liệu: RSS là công cụ hữu ích để chia sẻ thông tin, như danh sách mô tả công việc hoặc danh sách sản phẩm, với người khác một cách hiệu quả.
PHÂN TÍCH HỆ THỐNG VÀ CHỨC NĂNG
1.4.1 Các chức năng chính của hệ thống
+ Người đọc tin tức: sau khi vào website thì người dùng có thể xem thông tin, đọc các tin tức có trên trang web
Sau khi đăng nhập thành công, người dùng có thể truy cập vào nhiều dịch vụ hữu ích như dự đoán kết quả trận đấu, bình luận về tin tức trên trang web và quản lý thông tin cá nhân của mình.
+ Người quản trị: người chịu trách nhệm đảm bảo hoạt động của hệ thống Cung cấp và quản lý tài khoản cho từng người quản lý
+ Quản lý tin tức: quản lý thông tin các tin tức Có chức năng thêm, sửa, xóa, cập nhật thông tin của các tin tức
+ Quản lý chuyên mục: người quản lý có trách nhiệm tạo mới, xóa, cập nhật lại các chuyên mục tin
+ Quản lý đội bóng: quản lý thông tin các đội bóng Có chức năng thêm, sửa, xóa các đội bóng
+ Quản lý trận đấu: quản lý thông tin các trận đấu Có chức năng thêm, sửa, xóa các trận đấu ĐẶNG THỊ HƯƠNG – 52K1 – KHOA CNTT 35
+ Quản lý giải đấu: quản lý thông tin các giải đấu Có chức năng thêm, sửa, xóa các giải đấu
+ Quản lý ý kiến bạn đọc: quản lý các ý kiến mà bạn đọc bình luận về tin tức, xóa các bình luận không văn minh
Quản lý dự đoán là quá trình theo dõi và quản lý các dự đoán của người dùng về kết quả các trận đấu, bao gồm việc cộng điểm và tính điểm tích lũy cho mỗi thành viên tham gia dự đoán.
1.4.2 Các thành phần tham gia hệ thống
Admin là người chịu trách nhiệm quản trị hệ thống website, bao gồm việc quản lý mô-đun, thành viên, và kiểm soát quá trình đăng bài Họ cũng đảm nhiệm việc quản lý các chuyên mục tin tức, quảng cáo, cũng như tiếp nhận và xử lý ý kiến phản hồi từ người dùng.
Mod - Quản lý đăng bài, quản lý chuyên mục tin, quản lý quảng cáo, quản lý ý kiến phản hồi
Thành viên - Xem bài đăng
- Đăng bài trong chuyên mục bạn đọc Độc giả - Xem bài đăng
- Phản hồi bài đăng ĐẶNG THỊ HƯƠNG – 52K1 – KHOA CNTT 36
1.4.3 Biểu đồ phân cấp chức năng
Hình 1.14 Biểu đồ phân cấp chức năng ĐẶNG THỊ HƯƠNG – 52K1 – KHOA CNTT 37
Hình 1.15 Sơ đồ user case admin, mod ĐẶNG THỊ HƯƠNG – 52K1 – KHOA CNTT 38
Hình 1.16 Sơ đồ user case thành viên
Hình 1.18 Sơ đồ user case độc giả ĐẶNG THỊ HƯƠNG – 52K1 – KHOA CNTT 39
1.4.4 Hệ thống dòng chảy các trang (System Pages Flow):
Hình 1.19 System Pages Flow admin, mod
Hình 1.20 System Pages Flow thành viên ĐẶNG THỊ HƯƠNG – 52K1 – KHOA CNTT 40
Hình 1.21 System Pages Flow độc giả.
PHÂN TÍCH VÀ THIẾT KẾ CƠ SỞ DỮ LIỆU
1.5.1 Lập biểu đồ luồng dữ liệu mô hình thực thể - liên kết ERD
- Xác định các thực thể
Mỗi thực thể tƣợng trƣng cho một chuyên mục ĐẶNG THỊ HƯƠNG – 52K1 – KHOA CNTT 41
Chuyên mục ID (chuyenmucid) đây là thuộc tính khóa chính, nhờ nó mà ta xác định đƣợc có bao nhiêu chuyên mục
Tên chuyên mục (tenchuyenmuc) đây là thuộc tính cho biết tên loại chuyên mục ứng với mỗi mã chuyên mục
Mỗi thực thể tượng trưng cho một người dùng Các thuộc tính:
Người dùng ID (nguoidungid) đây là thuộc tính khóa chính, nhờ nó ta phân biệt được các người dùng với nhau
Tên đăng nhập (tendangnhap) cho biết tài khoản của mỗi người dùng
Mật khẩu (matkhau) cho biết mật khẩu của mỗi tài khoản người dùng
Họ (ho) cho biết họ của người dùng
Tên (ten) cho biết tên của người dùng
Email (email) cho biết email của người dùng
Số điện thoại (sodienthoai) cho biết số điện thoại của người dùng
Giới tính (gioitinh) cho biết giới tính của người dùng
Điểm tích lũy (diemtichluy) cho biết điểm số tích lũy của mỗi người dùng
Quyền sử dụng ID (quyensudungid) cho biết quyền sử dụng ID của người dùng, là admin, mod hay chỉ là thành viên
Mỗi thực thể tƣợng trƣng cho một tài liệu
Tin tức ID (tintucid) đây là thuộc tính khóa chính, nhờ nó cho ta phân biệt đƣợc tin tức này với tin tức khác
Tiêu đề (tieude) cho biết tiêu đề của tin tức tương ứng với một mã tin tức ID nào đó
Nội dung (noidung) cho biết nội dung chi tiết và đầy đủ của tin tức
URL hình ảnh đại diện (urlhinhanhdaidien) cho biết đường dẫn ảnh đại diện cho tin tức đó ĐẶNG THỊ HƯƠNG – 52K1 – KHOA CNTT 42
Chuyên mục ID (chuyenmucid) là thuộc tính khóa ngoại kết nối với chuyên mục ID ở bên bảng CHUYENMUC
Ngày đăng tin (ngaydangtin) cho biết ngày tin tức đƣợc đăng lên trang web
Người dùng ID (nguoidungid) cho biết người đã đăng tải tài liệu lên trang web, là khóa ngoại kết nối với người dùng ID bên bảng NGUOIDUNG
Tóm tắt (tomtat) cho biết tóm tắt nội dung của tin tức
Lƣợt xem (luotxem) cho biết lƣợt xem của tin tức
Mức độ ƣu tiên (mucdouutien) cho biết đọ ƣu tiên đƣợc đứng trên trang chủ của tài liệu đó
Quyền sử dụng ID (quyensudungid) đây là thuộc tính khóa chính, nhờ nó ta phân biệt đƣợc các quyền sử dụng khác nhau
Quyền sử dụng (quyensudung) cho biết tên quyền sử dụng ứng với mỗi
Đội bóng ID (doibongid) đây là thuộc tính khóa chính, dùng để phân biệt các đội bóng với nhau
Tên đội bóng (tendoibong) cho biết tên của các đội bóng tương ứng với một ID
Giải đấu ID (giaidauid) là thuộc tính khóa ngoại, kết nối với giải đấu ID trong bảng GIAIDAU, cho biết đội bóng đã tham gia giải đấu nào.
Logo (logo) cho iết logo đại diện cho mỗi đội bóng
Giải đấu ID (giaidauid) đây là thuộc tính khóa chính, dùng để phân biệt các giải đấu với nhau
Tên giải đấu (tengiaidau) cho biết tên của giải đấu ứng với mỗi ID
Trận đấu ID (trandauid) đây là thuộc tính khóa chính, dùng để phân biệt các trận đấu với nhau ĐẶNG THỊ HƯƠNG – 52K1 – KHOA CNTT 43
Đội nhà (doinha) cho biết tên đội thứ nhất trong trận đấu
Đội khách (doikhach) cho biết tên đội thứ hai trong trận đấu
Thời gian đấu (thoigiandau) cho biết thời gian cụ thể diễn ra trận đấu
Kết quả (ketqua) cho biết kết quả sau trận đấu là thắng hay hòa hay thua
Giải đấu ID (giaidauid) đây là thuộc tính khóa ngoại, liên kết với ID của bảng GIAIDAU, cho biết trận đấu này thuộc giải đấu nào
Dự đoán ID (dudoanid) đây là thuộc tính khóa chính, xác định ID của lƣợt dự đoán kết quả trận đấu
Người dùng ID (nguoidungid) đây là thuộc tính khóa ngoại, liên kết với
ID của bảng NGUOIDUNG, cho biết người đã tham gia lượt dự đoán
Trận đấu ID (trandauid) đây là thuộc tính khóa ngoại, liên kết với ID của bảng TRANDAU, cho biết lƣợt dự đoán này dành cho trận đấu nào
Dự đoán (dudoan) cho biết kết quả dự đoán là gì
Thời gian dự đoán (thoigiandudoan) cho biết thời gian mà người dùng đã thực hiện dự đoán kết quả trận đấu
Ý kiến ID (ykienid) đây là thuộc tính khóa chính, là id riêng của mỗi ý kiến, phân biệt các ý kiến
Nội dung (noidung) cho biết nội dung của ý kiến
Người dùng ID (nguoidungid) đây là thuộc tính khóa ngoại, liên kết với
ID của bảng NGUOIDUNG, xác định người dùng nào đã bình luận về tin tức
Ngày phản hồi (ngayphanhoi) cho biết ngày phản hồi đƣợc đăng lên trang web
Tin tức ID (tintucid) đây là thuộc tính khóa ngoại, liên kết với ID của bảng TINTUC, xác định ý kiến trên là về tin tức nào
1.5.2 Chuyển mô hình ERD sang mô hình quan hệ
NGUOIDUNG (nguoidungid, tendangnhap, matkhau, ho, ten, email, sodienthoai, gioitinh, diemtichluy, quyensudungid) ĐẶNG THỊ HƯƠNG – 52K1 – KHOA CNTT 44
TINTUC (tintucid, tieude, noidung, urlhinhanhdaidien, chuyenmucid, ngaydangtin, nguoidungid, tomtat, luotxem, mucdouutien)
DOIBONG (doibongid, tendoibong, giaidauid, logo)
TRANDAU (trandauid, doinnha, doikhach, thoigiandau, ketqua, giaidauid)
DUDOANKETQUA (dudoanid, nguoidungid, trandauid, dudoan, thoigiandudoan) YKIENDOCGIA (ykienid, noidung, nguoidungid, ngayphanhoi, tintucid)
1.5.3 Mô tả chi tiết cho các quan hệ
+ Mô tả: lưu lại các thông tin về tin tức
The article outlines a database schema for a news system, featuring key attributes for each news item Each entry is identified by a unique auto-incrementing integer ID (tintucid) and includes a mandatory title (tieude) and content (noidung) The schema allows for an optional representative image URL (urlhinhanhdaidien) and categorizes each news item with a required category ID (chuyenmucid) Additionally, the publication date (ngaydangtin) and the user ID of the author (nguoidungid) are included, along with an optional summary (tomtat), view count (luotxem), and priority level (mucdouutien) This structured approach ensures comprehensive data management for news articles.
+ Mô tả: lưu thông tin về chuyên mục
+ Chi tiết: ĐẶNG THỊ HƯƠNG – 52K1 – KHOA CNTT 45
Name Type Null or Not Null Description chuyenmucid Int (auto increment) Not Null Chuyên mục ID tenchuyenmuc Nvarchar(50) Not Null Tên chuyên mục
+ Mô tả: lưu các thông tin về người dùng
Bảng cơ sở dữ liệu người dùng bao gồm các trường quan trọng như nguoidungid (ID người dùng) kiểu Int tự động tăng và không cho phép null, tendangnhap (tên đăng nhập) kiểu varchar(50) không null, và matkhau (mật khẩu) kiểu varchar(20) không null Ngoài ra, bảng còn có các trường ho (họ) và ten (tên) kiểu Nvarchar(30) không null, sodienthoai (số điện thoại) kiểu Varchar(20) cho phép null, email kiểu varchar(50) cũng cho phép null, gioitinh (giới tính) kiểu Int cho phép null, diemtichluy (điểm tích lũy) kiểu Int cho phép null, và quyensudungid (quyền sử dụng) kiểu Int không null.
+ Mô tả: lưu các thông tin về quyền sử dụng
Name Type Null or Not Null Description quyensudungid Int (auto increment) Not Null Quyền sử dụng ID quyensudung nvarchar(50) Not Null Quyền sử dụng
+ Mô tả: lưu các thông tin về các đội bóng ĐẶNG THỊ HƯƠNG – 52K1 – KHOA CNTT 46
The database schema includes a table for football teams, featuring the following key fields: 'doibongid', an auto-incrementing integer that serves as the unique identifier for each team and cannot be null; 'tendoibong', a non-nullable nvarchar field limited to 50 characters for the team's name; 'giaidauid', a non-null integer representing the tournament ID; and 'logo', a non-null varchar field also limited to 50 characters for the team's logo.
+ Mô tả: lưu các thông tin về các giải đấu
Name Type Null or Not Null Description giaidauid Int (auto increment) Not Null Giải đấu ID tengiaidau nvarchar(50) Not Null Tên giải đấu
+ Mô tả: lưu các thông tin về các trận đấu
The database structure includes a table with the following key fields: 'trandauid', an auto-incrementing integer that serves as the match ID and cannot be null; 'doinha', a non-null nvarchar(50) representing the first team; 'doikhach', a non-null nvarchar(50) for the second team; 'thoigiandau', a non-null datetime indicating the match time; 'ketqua', a non-null nvarchar(20 for the match result; and 'giaidauid', a non-null integer that identifies the tournament.
+ Mô tả: lưu các thông tin về dự đoán kết quả trận đấu
+ Khóa chính: dudoanid ĐẶNG THỊ HƯƠNG – 52K1 – KHOA CNTT 47
The article outlines the structure of a database table for predictions, featuring key fields such as 'dudoanid', an auto-incrementing integer that serves as the unique prediction ID, and 'nguoidungid', which is a non-null integer representing the user ID Additionally, 'trandauid' is a non-null integer that indicates the match ID, while 'dudoan' is a non-null NVARCHAR field limited to 20 characters for the prediction itself Finally, 'thoigiandudoan' is a non-null datetime field that records the time of the prediction.
+ Mô tả: lưu các thông tin về các ý kiến của độc giả
The database structure includes the following fields: 'ykienid,' an auto-incrementing integer that serves as the unique identifier for user opinions; 'noidung,' a non-null nvarchar field limited to 50 characters for storing the content of the opinion; 'nguoidungid,' a required integer representing the user ID; 'ngayphanhoi,' a non-null datetime field indicating the date of the response; and 'tintucid,' a mandatory integer linked to the news ID This structure is maintained by Đặng Thị Hương, a student from class 52K1 in the Information Technology department.