1. Tổng quan
HUCA (HUCE Alumni) là hệ thống quản lý mạng lưới cựu sinh viên (CSV) Trường Đại học Xây dựng Hà Nội. Hệ thống được thiết kế theo 4 giai đoạn triển khai trong 12 tháng.| Thông tin | Chi tiết |
|---|---|
| DBMS | Microsoft SQL Server 2022+ |
| Collation | Vietnamese_CI_AS |
| Tổng số bảng | 45 |
| Naming convention | Bảng: t_huca_<plural>, Trường: TitleCase |
1.1. Quy ước đặt tên
| Thành phần | Quy ước | Ví dụ |
|---|---|---|
| Bảng | t_huca_<tên_số_nhiều> | t_huca_users, t_huca_events |
| Khóa chính | Id (BIGINT IDENTITY) | Id |
| Khóa ngoại | <EntityName>Id | FacultyId, UserId |
| Trường dữ liệu | TitleCase | FullName, DateOfBirth, CreatedAt |
| Index | IX_<table>_<columns> | IX_users_FacultyId |
| Unique | UQ_<table>_<columns> | UQ_users_Email |
| Foreign Key | FK_<table>_<reference> | FK_users_Faculty |
2. Kiến trúc tổng thể
2.1. Phân nhóm theo giai đoạn
2.2. Sơ đồ quan hệ tổng quát (ERD Overview)
3. Chi tiết thiết kế theo giai đoạn
3.1. Phần 0: Bảng danh mục dùng chung
t_huca_provinces
Danh sách 63 tỉnh/thành phố Việt Nam, phục vụ Bản đồ CSV.
| Trường | Kiểu | Mô tả |
|---|---|---|
Id | INT PK | Khóa chính |
Name | NVARCHAR(100) | Tên tỉnh/thành phố |
Code | VARCHAR(10) UQ | Mã tỉnh |
Region | NVARCHAR(50) | Miền (Bắc/Trung/Nam) |
Latitude | DECIMAL(10,7) | Vĩ độ |
Longitude | DECIMAL(10,7) | Kinh độ |
IsActive | BIT | Trạng thái |
t_huca_faculties
Danh sách Khoa/Viện của HUCE.
| Trường | Kiểu | Mô tả |
|---|---|---|
Id | INT PK | Khóa chính |
Name | NVARCHAR(200) | Tên khoa |
ShortName | NVARCHAR(50) | Tên viết tắt |
Code | VARCHAR(20) UQ | Mã khoa |
Description | NVARCHAR(500) | Mô tả |
IsActive | BIT | Trạng thái |
t_huca_academic_years
Khóa học theo năm (VD: Khóa 60, 61, 62…).
| Trường | Kiểu | Mô tả |
|---|---|---|
Id | INT PK | Khóa chính |
YearNumber | INT UQ | Số khóa (60, 61…) |
StartYear | INT | Năm bắt đầu |
EndYear | INT | Năm kết thúc |
t_huca_classes
Lớp học theo Khoa và Khóa.
| Trường | Kiểu | Mô tả |
|---|---|---|
Id | INT PK | Khóa chính |
Name | NVARCHAR(100) | Tên lớp |
Code | VARCHAR(20) UQ | Mã lớp |
FacultyId | INT FK | Khoa |
AcademicYearId | INT FK | Khóa |
t_huca_roles & t_huca_permissions & t_huca_role_permissions
Hệ thống RBAC (Role-Based Access Control) phân quyền linh hoạt.Vai trò mặc định:
ADMIN- Quản trị viên hệ thốngALUMNI- Cựu sinh viên đã xác thựcSTUDENT- Sinh viên đang theo họcBLL_LEADER- Trưởng Ban Liên lạcENTERPRISE- Đại diện doanh nghiệpMODERATOR- Điều phối viên nội dung
3.2. Giai đoạn 1: Nền tảng Web
t_huca_users (Bảng trung tâm)
Lưu thông tin người dùng: cựu sinh viên, sinh viên, quản trị viên.Đặc điểm thiết kế:
- Hỗ trợ đăng nhập đa phương thức: Email/Password, Google, Facebook, SSO HUCE
- Mã QR định danh duy nhất cho mỗi hồ sơ xác thực (“Thẻ CSV số”)
- Cài đặt hiển thị riêng tư cho từng trường thông tin
- Quy trình: Đăng ký -> Xác thực email/SĐT -> Admin phê duyệt -> Kích hoạt
| Trường | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
Id | BIGINT PK | - | Khóa chính |
FullName | NVARCHAR(150) | Co | Họ tên |
Email | NVARCHAR(255) UQ | Co | |
PhoneNumber | VARCHAR(20) UQ | Co | Số điện thoại |
PasswordHash | NVARCHAR(500) | Mật khẩu (hash) | |
DegreeLevel | NVARCHAR(50) | Đại học / Sau đại học | |
FacultyId | INT FK | Khoa | |
AcademicYearId | INT FK | Khóa | |
ClassId | INT FK | Lớp | |
DateOfBirth | DATE | Ngày sinh | |
Gender | NVARCHAR(10) | Giới tính | |
AvatarUrl | NVARCHAR(500) | Ảnh đại diện | |
Company | NVARCHAR(200) | Cơ quan/Công ty | |
JobTitle | NVARCHAR(200) | Vị trí công việc | |
WorkField | NVARCHAR(200) | Lĩnh vực công tác | |
ProvinceId | INT FK | Tỉnh/TP cư trú | |
QrCode | NVARCHAR(500) | Mã QR định danh | |
IsVerified | BIT | Hồ sơ đã xác thực | |
IsApproved | BIT | Admin đã phê duyệt | |
GoogleId | NVARCHAR(200) | ID đăng nhập Google | |
FacebookId | NVARCHAR(200) | ID đăng nhập Facebook | |
SsoId | NVARCHAR(200) | ID SSO HUCE | |
Show* | BIT | Cài đặt hiển thị từng trường |
t_huca_account_links (Liên kết tài khoản)
Giải pháp số hóa danh sách lớp cũ: Admin tải lên Excel -> Hệ thống sinh Link + Mã -> CSV liên kết tài khoản.Luồng hoạt động:
- Admin nhập danh sách lớp (Excel)
- Hệ thống tạo
LinkToken(link lớp) +PersonalCode(mã cá nhân) cho mỗi CSV - Ban cán sự lớp gửi Link + Mã qua Zalo/Email
- CSV truy cập link, nhập mã -> Tự động liên kết với hồ sơ chuẩn
t_huca_liaison_committees (Ban Liên lạc)
Phân cấp BLL theo 3 loại: Khóa, Khoa, Khu vực.Quan hệ:
- Mỗi BLL có nhiều Nhiệm kỳ (
t_huca_committee_terms) - Mỗi Nhiệm kỳ có nhiều Thành viên (
t_huca_committee_members) với chức danh: Trưởng ban, Phó ban, Thư ký, Ủy viên - BLL có không gian riêng để đăng thông báo (qua
t_huca_posts.CommitteeId)
t_huca_groups & t_huca_group_members
Nhóm thảo luận theo sở thích hoặc chuyên môn.Quy tắc:
- Chỉ Admin/Trưởng BLL mới được tạo nhóm
- Phân loại: Interest (sở thích), Professional (chuyên môn), Faculty (khoa), Class (lớp)
- Quyền hạn trong nhóm: Admin, Moderator, Member
t_huca_posts, t_huca_comments, t_huca_reactions
Hệ thống bài viết, bình luận và tương tác.
- Bài viết có thể thuộc Nhóm hoặc Ban Liên lạc
- Hỗ trợ bình luận lồng nhau (reply) qua
ParentId - Tương tác đa dạng: Like, Love, Celebrate
- Đếm tương tác được denormalize cho hiệu năng (
LikeCount,CommentCount)
t_huca_events & t_huca_event_registrations
Quản lý sự kiện từ tạo, đăng ký đến thanh toán phí.Đặc điểm:
- Hỗ trợ tọa độ GPS + GeoFence cho điểm danh (Giai đoạn 2)
- Mã QR sự kiện (
EventQrCode) cho check-in - Tích hợp thanh toán phí qua
PaymentId - Trạng thái: Draft -> Published -> Ongoing -> Completed
t_huca_fundraising_campaigns & t_huca_donations
Cổng gây quỹ minh bạch với thanh tiến độ và bảng vinh danh.
- Thanh tiến độ:
CurrentAmount / TargetAmount - Bảng vinh danh điện tử (Digital Donor Wall):
ShowOnDonorWall - Hỗ trợ quyên góp ẩn danh:
IsAnonymous
t_huca_payments
Cổng thanh toán trực tuyến hỗ trợ VNPay, ZaloPay, MoMo, QR ngân hàng.
- Polymorphic reference:
ReferenceType+ReferenceIdliên kết đến EventRegistration, Donation, hoặc ProgramRegistration - Lưu trữ response từ payment gateway cho đối soát
t_huca_conversations, t_huca_messages
Nhắn tin riêng 1-1 và nhóm.
t_huca_conversations: Hỗ trợ Direct (1-1) và Groupt_huca_conversation_members: Quản lý thành viên, trạng thái đọc, tắt tiếngt_huca_messages: Hỗ trợ Text, Image, File
t_huca_notifications & t_huca_email_templates
Hệ thống thông báo đa kênh: In-App, Email, Push.
- Notification đa dạng: Event, Message, Group, Fundraising, System
- Email templates có biến động:
{{FullName}},{{EventTitle}}… - Lịch sử gửi email (
t_huca_email_logs) để theo dõi
3.3. Giai đoạn 2: App Di động
t_huca_event_attendances (Điểm danh sự kiện)
Ghi nhận điểm danh bằng QR/GPS với chống điểm danh hộ.
| Trường | Mô tả |
|---|---|
Method | Phương thức: QR, GPS, Manual |
Latitude/Longitude | Tọa độ GPS khi điểm danh |
IsWithinGeofence | Có nằm trong khu vực sự kiện? |
DeviceInfo | Thông tin thiết bị (chống gian lận) |
Status | Valid, Invalid, Suspicious |
- So sánh tọa độ GPS với GeoFenceRadius của sự kiện
- Ghi nhận DeviceId để phát hiện 1 thiết bị điểm danh nhiều người
- Cảnh báo điểm danh ngoài khu vực
t_huca_user_locations (Tìm CSV lân cận)
Vị trí người dùng cho tính năng “Radar” tìm CSV gần.Bảo mật vị trí:
SharingMode: Always / WhenActive / Never (mặc định)ShowExactLocation: false = chỉ hiển thị xấp xỉ (quận/huyện)- Vị trí xấp xỉ:
ApproxDistrict,ApproxProvince
t_huca_device_tokens
Token thiết bị cho Push Notification (iOS/Android).
3.4. Giai đoạn 3: Đào tạo & Phát triển Nghề nghiệp
t_huca_training_programs & t_huca_program_registrations
Cổng Học tập Suốt đời (LLL Portal).Loại chương trình:
Master- Thạc sĩPhD- Tiến sĩCertificate- Chứng chỉ hành nghề (Định giá XD, Chỉ huy trưởng)ShortCourse- Khóa ngắn hạnWorkshop/Seminar
t_huca_certificates
Chứng chỉ số với mã xác thực QR.
- Mỗi chứng chỉ có mã duy nhất (
CertificateCode) - URL xác thực (
QrVerifyUrl) cho bên thứ ba kiểm tra
t_huca_mentors & t_huca_mentorship_matches
Hệ thống cố vấn nghề nghiệp (Mentorship).Luồng hoạt động:
- CSV đăng ký làm Mentor với chuyên môn, dịch vụ cung cấp
- Mentee đăng ký và mô tả mong muốn phát triển
- Hệ thống gợi ý ghép cặp (Smart Matching) theo ngành, lĩnh vực
- Mentor/Mentee đặt lịch hẹn qua
t_huca_mentorship_appointments - Sau khi kết thúc: đánh giá, feedback lẫn nhau
t_huca_exams, t_huca_exam_questions, t_huca_exam_submissions
Thi tuyển dụng trực tuyến với chống gian lận.Tính năng chống gian lận:
DetectTabSwitch: Phát hiện chuyển tabRecordBehavior: Ghi nhận hành viTabSwitchCount: Đếm số lần chuyển tabBehaviorFlags: JSON flags hành vi bất thường
- Ngân hàng đề chung (
t_huca_exam_banks) hoặc đề riêng - Trắc nghiệm chấm tự động
- Xáo trộn câu hỏi
t_huca_points, t_huca_badges, t_huca_user_badges, t_huca_leaderboards
Trò chơi hóa (Gamification).Hành động tích điểm:
| Hành động | Code |
|---|---|
| Hoàn thiện hồ sơ 100% | ProfileComplete |
| Tham gia sự kiện | EventAttend |
| Làm cố vấn | Mentoring |
| Đóng góp quỹ | Donation |
| Vượt qua kỳ thi | ExamPass |
- Mentor Tiêu biểu, Nhà tài trợ Vàng/Bạc
- Người tham gia tích cực, Hồ sơ hoàn chỉnh
- Người học suốt đời, Top Contributor, Người kết nối
3.5. Giai đoạn 4: Doanh nghiệp & Dịch vụ gia tăng
t_huca_companies & t_huca_company_members
Trang vàng HUCA - Danh bạ doanh nghiệp CSV.
- Hồ sơ năng lực số: Logo, quy mô, lĩnh vực chuyên sâu
- Phân loại ngành hẹp: Giao thông, Dân dụng, Kiến trúc, Vật liệu
- Danh sách nhân sự là người HUCE đang làm tại đó
t_huca_jobs & t_huca_job_applications
Bảng việc làm & Ứng tuyển nhanh (1-click apply).
- Hỗ trợ: FullTime, PartTime, Internship, Contract
- Ứng tuyển nhanh bằng Hồ sơ số HUCA (
UseHucaProfile = 1) - Liên kết với kỳ thi tuyển dụng (
ExamSubmissionId)
t_huca_vouchers & t_huca_voucher_claims
Hệ sinh thái Đặc quyền HUCA (HUCA Exclusives).
- Doanh nghiệp phát hành mã giảm giá/chiết khấu
- Chỉ dành cho Verified Alumni
- Giới hạn: số lượng tổng, số lần/người, thời hạn
t_huca_b2b_opportunities & t_huca_b2b_responses
Bảng thông tin Đấu thầu & Giao thương B2B.Loại cơ hội:
SubcontractorSearch- Tìm nhà thầu phụSupplierSearch- Tìm nhà cung cấp vật tưInvestmentPartner- Mời hợp tác đầu tưJointVenture- Liên doanh
4. Đảm bảo toàn vẹn dữ liệu
4.1. Ràng buộc khóa ngoại (Referential Integrity)
Tất cả quan hệ giữa các bảng đều được thiết lập qua Foreign Key constraints với quy ướcFK_<table>_<reference>.
Các quan hệ chính:
t_huca_users->t_huca_faculties,t_huca_academic_years,t_huca_classes,t_huca_provincest_huca_classes->t_huca_faculties,t_huca_academic_yearst_huca_posts->t_huca_groups,t_huca_liaison_committees,t_huca_userst_huca_events->t_huca_users,t_huca_provinces,t_huca_liaison_committeest_huca_donations->t_huca_fundraising_campaigns,t_huca_userst_huca_jobs->t_huca_companies,t_huca_users
4.2. Ràng buộc duy nhất (Unique Constraints)
| Bảng | Trường | Mục đích |
|---|---|---|
t_huca_users | Email | Mỗi email chỉ 1 tài khoản |
t_huca_users | PhoneNumber | Mỗi SĐT chỉ 1 tài khoản |
t_huca_faculties | Code | Mã khoa duy nhất |
t_huca_classes | Code | Mã lớp duy nhất |
t_huca_event_registrations | (EventId, UserId) | Không đăng ký trùng |
t_huca_group_members | (GroupId, UserId) | Không tham gia trùng |
t_huca_reactions | (UserId, TargetType, TargetId) | Mỗi người chỉ react 1 lần |
t_huca_certificates | CertificateCode | Mã chứng chỉ duy nhất |
t_huca_vouchers | Code | Mã voucher duy nhất |
4.3. Soft Delete
Tất cả các bảng nghiệp vụ đều sử dụng cộtIsActive (BIT, DEFAULT 1) thay vì xóa cứng, đảm bảo:
- Dữ liệu lịch sử được bảo toàn
- Có thể phục hồi khi cần
- Không phá vỡ quan hệ FK
4.4. Audit Trail
Bảngt_huca_audit_logs ghi nhận mọi thay đổi quan trọng:
OldValues/NewValues: JSON snapshot trước và sau thay đổiIpAddress,UserAgent: Thông tin phiên truy cập- Index theo
CreatedAt DESCcho truy vấn nhanh
4.5. Indexing Strategy
Nguyên tắc:- Index trên tất cả Foreign Key columns
- Index trên các trường thường dùng trong WHERE/ORDER BY
- Filtered index cho trường hợp đặc biệt (VD:
IsFeatured = 1) - Composite index cho các truy vấn phức hợp (VD:
(ConversationId, CreatedAt DESC))
5. Sơ đồ quan hệ chi tiết (ERD)
5.1. Module Người dùng & Phân quyền
5.2. Module Sự kiện
5.3. Module Gây quỹ
5.4. Module Đào tạo & Cố vấn
5.5. Module Doanh nghiệp & Việc làm
6. Dữ liệu khởi tạo (Seed Data)
File SQL bao gồm dữ liệu khởi tạo cho:| Bảng | Số bản ghi | Nội dung |
|---|---|---|
t_huca_roles | 6 | Admin, Alumni, Student, BLL_Leader, Enterprise, Moderator |
t_huca_article_categories | 5 | Hoạt động Trường, Gương mặt CSV, Tin tức, Sự kiện, Nghề nghiệp |
t_huca_badges | 8 | Các huy hiệu mặc định |
t_huca_email_templates | 5 | Mẫu email: Chào mừng, Mời sự kiện, Xác nhận, Phê duyệt |
t_huca_permissions | 23 | Quyền hạn theo module |
7. Hướng dẫn triển khai
7.1. Yêu cầu hệ thống
- SQL Server: 2022 trở lên (hoặc Azure SQL)
- Collation:
Vietnamese_CI_AS(hỗ trợ tiếng Việt) - Dung lượng ước tính ban đầu: ~500MB (10,000 users)
7.2. Thứ tự thực thi
huca-database-design.sql theo đúng thứ tự (file đã được sắp xếp).
7.3. Ghi chú về mở rộng
- Giai đoạn 1+2: Có thể triển khai ngay, đã đầy đủ quan hệ
- Giai đoạn 3+4: Các bảng FK đến
t_huca_companiesđược thêm bằngALTER TABLEsau khi bảngcompaniesđược tạo - Spatial Index: Có thể bổ sung SQL Server Spatial Index cho
Latitude/Longitudekhi cần tìm kiếm theo bán kính (Tìm CSV lân cận) - Full-Text Index: Có thể bổ sung cho các trường
Content,Descriptionphục vụ tìm kiếm nâng cao
8. Tổng kết
| Giai đoạn | Số bảng | Chức năng chính |
|---|---|---|
| Danh mục chung | 7 | Tỉnh/TP, Khoa, Khóa, Lớp, Vai trò, Quyền |
| GĐ 1 - Web | 18 | Users, BLL, Nhóm, Sự kiện, Gây quỹ, Tin tức, Nhắn tin |
| GĐ 2 - Mobile | 3 | Điểm danh, Vị trí, Push Notification |
| GĐ 3 - Đào tạo | 11 | Chương trình, Cố vấn, Thi trực tuyến, Gamification |
| GĐ 4 - Doanh nghiệp | 8 | Companies, Jobs, Vouchers, B2B |
| Hỗ trợ | 3 | Audit Log, Thống kê, Yêu cầu hành chính |
| Tổng | 45 |