[Thực hành] Vẽ thiết kế của CSDL có sẵn
NỘI DUNG BÀI VIẾT
Mục tiêu
Luyện tập vẽ thiết kế CSDL.
Mô tả
Sử dụng một CSDL có sẵn, tìm hiểu về các bảng ứng với các trường khóa chính, khóa ngoại của bảng đó. Mối quan hệ giữa các bảng. Vẽ lại sơ đồ quan hệ giữa các bảng trong CSDL classicmodels.
Các bước thực hiện
Bước 1: Tải CSDL mẫu classicmodels về tại đây và import vào MySQL: https://james.codegym.vn/pluginfile.php/31818/mod_page/content/8/mysqlsampledatabase.zip
Bước 2: Mở CSDL vừa nhập vào, quan sát các bảng có trong CSDL classicmodels. Gồm 8 bảng lần lượt là customers, employees, offices, orderdetails, orders, payments, productlines, products.
Bước 3: Quan sát từng bảng trong csdl classicmodels. Phân tích từng bảng với các trường khóa chính, khóa ngoại.
Bảng customers lưu thông tin về khách hàng.
- Trong bảng customers chúng ta sẽ thấy danh sách các trường của bảng, ứng với mỗi trường là các kiểu dữ liệu và một số các ràng buộc tương ứng.
- Trường customerNumber có kiểu dữ liệu (type) là int(11), ràng buộc Null là No tức là không được để trống, là trường khóa chính của bảng.
- Trường salesRepEmployeeNumber có kiểu dữ liệu là int(11), ràng buộc Null là Yes tức là có thể để trống, là trường khóa ngoại của bảng – trường khóa ngoại là trường dùng để liên kết giữa hai bảng với nhau. Mỗi khách hàng được chăm sóc bởi một người bán hàng. Do đó bảng customers sẽ có mối quan hệ với bảng employees qua trường salesReEmployeeNumber của bảng customers và trường employeeNumber của bảng employees.
- Ngoài ra các trường khác để mô tả thông tin về khách hàng như contactLastName (họ), contactFirstName (tên), phone (điện thoại), addressLine1 (địa chỉ 1), addressLine2 (địa chỉ 2), city (thành phố), state, postalcode, country, creditlimit.
Tương tự như vậy xét đến Bảng Orders lưu thông tin về đơn hàng
- Trong bảng Orders trường orderNumber có kiểu dữ liệu int(11), ràng buộc không được để trống (not null), là trường khóa chính của bảng.
- Ngoài ra các trường khác để mô tả chi tiết hơn về đơn hàng như orderdate, requireddate, shippeddate, status, comments.
Tương tự như vậy xét đến Bảng OrderDetails lưu thông tin về chi tiết đơn hàng
- Trong bảng OrderDetails trường orderNumber có kiểu dữ liệu int(11), ràng buộc không được để trống (not null), là trường khóa chính của bảng, đồng thời là trường khóa ngoại tham chiếu bảng orders.
- Trường productCode có kiểu dữ liệu varchar(15), ràng buộc not null, là trường khóa chính của bảng, đồng thời là trường khóa ngoại, để tham chiếu sang bảng products. Lưu ý mỗi một bảng chỉ có 1 khóa chính, ở đây ta thấy hai trường ordernumber và productcode kết hợp với nhau tạo thành 1 khóa chính của bảng orders chứ không phải là bảng orders có 2 khóa chính.
- Ngoài ra các trường khác để mô tả chi tiết hơn về đơn hàng như quantityordered, priceeach, orderlinenumber.
Tương tự như vậy xét đến Bảng Payments lưu thông tin về các giai đoạn thanh toán tiền của khách hàng.
- Trong bảng payments trường customernumber có kiểu dữ liệu int(11), ràng buộc không được để trống (not null), là trường khóa ngoại tham chiếu bảng customers, cũng đóng vai trò kết hợp với trường checknumber tạo thành khóa chính của bảng payments.
- Ngoài ra có thêm các trường khác: paymentDate, amount.
Tương tự như vậy xét đến Bảng Products chứa thông tin về sản phẩm
- Trong bảng products, trường productcode là khóa chính, productline là khóa ngoại tham chiếu sang bảng productlines (bảng danh sách loại hàng).
- Ngoài ra có thêm các trường khác như productname, productvendor, quantitystock…
Bảng productLines chứa thông tin về loại sản phẩm
- Trong bảng productlines, trường productline đóng vai trò là khóa chính. Tham chiếu sang trường productline trong bảng products.
Tương tự như vậy xét đến Bảng Employees lưu thông tin về nhân viên
- Trong bảng employees, trường employeesnumber đóng vai trò là khóa chính, tham chiếu đến bảng customers qua trường salesReEmployeeNumber. Đồng thời trường này tham chiếu đến chính bảng employees qua trường reportsTo để xác định xem 1 nhân viên cần báo cáo cho nhân viên nào hay nhân viên nhận được báo cáo chính là người quản lý.
- Trường officeCode đóng vai trò khóa ngoại tham chiếu sang bảng offices.
Tương tự như vậy xét đến Bảng Offices lưu thông tin về văn phòng làm việc của nhân viên.
- Trong bảng offices, trường officecode là trường khóa chính, ngoài ra có các trường khác như city, phone, addressline1 …
Bước 4: Sau khi phân tích các bảng ta có sơ đồ quan hệ giữa các bảng được vẽ như sau:
Các ký hiệu * ở các trường thể hiện là trường khóa chính.
Tổng kết
Qua bài tập này bạn đã luyện tập:
- Phân tích cấu trúc của một bảng trong csdl gồm các trường dữ liệu, ứng với mỗi trường là kiểu dữ liệu và các ràng buộc.
- Phân tích các khóa chính, khóa ngoại của các bảng.
- Vẽ sơ đồ quan hệ giữa các bảng thông qua trường khóa chính – khóa ngoại.
Leave a Reply