Thực hành: Phân tích mô hình dữ liệu quan hệ cho cơ sở sửa chữa xe máy có cấp phát phụ tùng
Dưới đây là các bước phân tích chi tiết:
1. Xác định thực thể chính
Dựa trên yêu cầu của hệ thống, ta có các thực thể chính sau:
- Khách hàng (Customer): Lưu thông tin khách hàng mang xe đến sửa chữa.
- Xe (Vehicle): Lưu thông tin xe thuộc về khách hàng.
- Phiếu sửa chữa (RepairTicket) (Tương tự hóa đơn): Lưu thông tin về mỗi lần sửa chữa.
- Công việc sửa chữa (RepairJob): Chứa danh sách các công việc thực hiện trên xe hoặc phụ tùng được thay thế
- Nhân viên (Employee): Quản lý thông tin nhân viên sửa chữa.
- Phụ tùng (SparePart): Lưu trữ thông tin về phụ tùng có sẵn.
2. Xác định mối quan hệ giữa các thực thể
- Khách hàng – Phiếu sửa chữa: Một khách hàng có thể có nhiều lần sửa chữa (1-N).
- Phiếu sửa chữa – Công việc sửa chữa: Một phiếu sửa chữa có nhiều công việc hoặc phụ tùng được cấp (1-N).
- Công việc sửa chữa – Nhân viên: Một nhân viên có thể thực hiện nhiều công việc sửa chữa (1-N).
- Công việc sửa chữa – Phụ tùng: Một công việc có thể sử dụng nhiều phụ tùng, và một phụ tùng có thể được dùng trong nhiều công việc (N-N).
- Phiếu sửa chữa – Hóa đơn: Mỗi phiếu sửa chữa có một hóa đơn (1-1).
3. Thiết kế bảng quan hệ với khóa chính (PK) và khóa ngoại (FK)
1. Bảng Khách hàng (Customer)
| Tên cột |
Kiểu dữ liệu |
Ràng buộc |
Mô tả |
| CustomerID |
INT |
PK, AUTO_INCREMENT |
Mã khách hàng |
| FullName |
VARCHAR(100) |
NOT NULL |
Họ và tên khách hàng |
| PhoneNumber |
VARCHAR(15) |
NOT NULL, UNIQUE |
Số điện thoại |
| Address |
TEXT |
NULL |
Địa chỉ khách hàng |
2. Bảng Phiếu sửa chữa (RepairTicket)
| Tên cột |
Kiểu dữ liệu |
Ràng buộc |
Mô tả |
| RepairTicketID |
INT |
PK, AUTO_INCREMENT |
Mã phiếu sửa chữa |
| VehicleID |
INT |
FK → Vehicle(VehicleID) |
Xe được sửa chữa |
| EmployeeID |
INT |
FK → Employee(EmployeeID) |
Nhân viên tiếp nhận |
| CreateDate |
DATETIME |
NOT NULL |
Ngày lập phiếu |
| Status |
VARCHAR(20) |
NOT NULL |
Trạng thái phiếu sửa chữa |
3. Bảng Công việc sửa chữa (RepairJob)
| Tên cột |
Kiểu dữ liệu |
Ràng buộc |
Mô tả |
| RepairJobID |
INT |
PK, AUTO_INCREMENT |
Mã công việc sửa chữa |
| RepairTicketID |
INT |
FK → RepairTicket(RepairTicketID) |
Phiếu sửa chữa liên quan |
| EmployeeID |
INT |
FK → Employee(EmployeeID) |
Nhân viên thực hiện |
| JobDescription |
TEXT |
NOT NULL |
Mô tả công việc |
| LaborCost |
DECIMAL(10,2) |
NOT NULL |
Chi phí công |
| Status |
VARCHAR(20) |
NOT NULL |
Trạng thái công việc |
| SparePartID |
INT |
FK → SparePart () |
Phụ tùng được cấp |
4. Bảng Nhân viên (Employee)
| Tên cột |
Kiểu dữ liệu |
Ràng buộc |
Mô tả |
| EmployeeID |
INT |
PK, AUTO_INCREMENT |
Mã nhân viên |
| FullName |
VARCHAR(100) |
NOT NULL |
Họ và tên |
| PhoneNumber |
VARCHAR(15) |
NOT NULL, UNIQUE |
Số điện thoại |
| Role |
VARCHAR(50) |
NOT NULL |
Vai trò |
5. Bảng Phụ tùng (SparePart)
| Tên cột |
Kiểu dữ liệu |
Ràng buộc |
Mô tả |
| SparePartID |
INT |
PK, AUTO_INCREMENT |
Mã phụ tùng |
| PartName |
VARCHAR(100) |
NOT NULL |
Tên phụ tùng |
| Brand |
VARCHAR(50) |
NOT NULL |
Hãng sản xuất |
| Price |
DECIMAL(10,2) |
NOT NULL |
Giá tiền |
| StockQuantity |
INT |
NOT NULL |
Số lượng tồn kho |
6. Bảng Cấp phát phụ tùng (SparePartAllocation)
| Tên cột |
Kiểu dữ liệu |
Ràng buộc |
Mô tả |
| AllocationID |
INT |
PK, AUTO_INCREMENT |
Mã cấp phát |
| RepairJobID |
INT |
FK → RepairJob(RepairJobID) |
Công việc sửa chữa liên quan |
| SparePartID |
INT |
FK → SparePart(SparePartID) |
Phụ tùng sử dụng |
| Quantity |
INT |
NOT NULL |
Số lượng cấp phát |
7. Bảng Hóa đơn (Invoice)
| Tên cột |
Kiểu dữ liệu |
Ràng buộc |
Mô tả |
| InvoiceID |
INT |
PK, AUTO_INCREMENT |
Mã hóa đơn |
| RepairTicketID |
INT |
FK → RepairTicket(RepairTicketID) |
Phiếu sửa chữa liên quan |
| TotalLaborCost |
DECIMAL(10,2) |
NOT NULL |
Tổng chi phí công |
| TotalSparePartCost |
DECIMAL(10,2) |
NOT NULL |
Tổng chi phí phụ tùng |
| TotalAmount |
DECIMAL(10,2) |
NOT NULL |
Tổng tiền thanh toán |
| PaymentStatus |
VARCHAR(20) |
NOT NULL |
Trạng thái thanh toán |
Tóm tắt
Hệ thống này có 8 bảng chính, với khóa chính và khóa ngoại rõ ràng, giúp quản lý thông tin về khách hàng, xe, sửa chữa, phụ tùng và thanh toán. Mô hình này đảm bảo tính nhất quán dữ liệu và thuận tiện trong quản lý.
Áp dụng kiến thức đã học, hãy khảo sát và phân tích cơ sở dữ liệu cho bài toán thực tế sau:
Một khách sạn cần xây dựng hệ thống quản lý đặt phòng, bao gồm thông tin khách hàng, phòng, dịch vụ đi kèm, nhân viên, hóa đơn thanh toán và lịch sử lưu trú.
Yêu cầu: Biên soạn kết quả làm bài hoặc nộp file word phân tích