CHƯƠNG 3. PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
3.3 Thao tác với cơ sở dữ liệu
3.3.2 Phân tích từng bảng
1. Bảng Employees:
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.
7. Bảng CustomerPhoneNumber:
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.
9. Bảng PartialPayment:
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ảng Suppliers.
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.
13. Bảng SupplierPhoneNumber:
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.
14. Bảng CurrentPrice:
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.
15. Bảng InventoryReceipt:
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
Employees
- 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.
OfficeStaff
- Lược đồ quan hệ chỉ có một thuộc tính nên nó là dạng chuẩn 3NF.
OperationStaff
- Lược đồ quan hệ chỉ có một thuộc tính nên nó là dạng chuẩn 3NF.
PartnerStaff
- Lược đồ quan hệ chỉ có một thuộc tính nên nó là dạng chuẩn 3NF.
Manager
- Lược đồ quan hệ chỉ có một thuộc tính nên nó là dạng chuẩn 3NF.
Order
- 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.
Suppliers
- 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.
PartialPayment
- 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.
Categories
- 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.
Bolts
- 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.
Customers
- 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.
CurrentPrice
- 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.
CustomerPhoneNum
- 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.
Inventory Receipt
- 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.
SupplierPhoneNum
- 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.
Accounts
- 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.