James Perry, Richard Newmark
Chương 2
Cơ sở dữ liệu và hệ thống kế toán
Phép nối
Thao tác cơ sở dữ liệu quan hệ quan trọng nhất là phép nối (join operation). Phép nối cung cấp khả năng lôi dữ liệu từ nhiều bảng kết hợp thành một bảng ảo đơn nhất. Thông thường bạn nối 2 bảng với nhau bằng cách dùng thuộc tính chung có ở cả hai bảng. Đây là vai trò của khóa ngoại và khóa chính. Ở dạng chung nhất của phép nối, giá trị khóa ngoại của một bảng được dùng để định vị khóa chính tương ứng trong bảng kia. Rồi dữ liệu chọn từ những dòng khớp nhau ở cả hai bảng được kết hợp lại. Nghĩa là, các dòng ở một bảng được nối (đặt kề) với các dòng ở bảng thứ hai có cùng thuộc tính chung.
Chẳng hạn, giả sử trong cơ sở dữ liệu Ch03.accdb ta muốn nối bảng nhân viên tblEmployee với bảng nơi làm việc tblEmployeeDivision để có thêm thông tin thành phố (city). Bảng nhân viên có cột số EmployeeDivisionID nhằm thay thế cho vị trí làm việc (thành phố - city và bang - state). Số đó được dùng để giúp vị trí làm việc không bị nhập sai khi được nhập nhiều lần vào bảng nhân viên. Bảng tblEmployeeDivision chứa cột tương ứng tên là DivisionID. Chuẩn hóa đã tạo ra 2 bảng thay vì một bảng để không vi phạm các qui tắc 3NF. DivisionID là khóa chính trong bảng tblEmployeeDivision và EmployeeDivisionID là khóa ngoại trong bảng tblEmployee. Phép nối 2 bảng này trên khóa ngoại khóa chính sẽ cho ra kết quả ở Hình 2.17. Để ý rằng cột nối không cần trùng tên ở cả hai bảng. Phép nối minh họa ở Hình 2.17 là kiểu nối thông dụng nhất. Phép nối đó gọi là equijoin (nối tương đương), vì các dòng từ 2 bảng được đặt cạnh nhau dựa trên giá trị cột nối trùng nhau, và cột nối xuất hiện chỉ một lần trong kết quả.
Hình 2.17 Phép nối.
Một kiểu nối khác cũng kết hợp các dòng từ 2 hay nhiều bảng trên cột nối, nhưng những dòng không trùng cột nối vẫn được đưa vào kết quả. Kiểu nối này gọi là outer join (nối ngoại). Outer join hữu ích khi làm báo cáo chứa những thông tin chẳng hạn nhân viên nào không bán được hàng hay sinh viên nào chưa đăng ký lớp học. Các truy vấn outer join sẽ được trình bày ở Chương 4.
Về lý thuyết, không có hạn chế nào về số lượng bảng trong phép nối. Chẳng hạn, một trong những kết quả mà ta có thể tạo ra bằng phép nối là hóa đơn. Bạn có thể tạo một hóa đơn cơ bản bằng cách nối, dùng một câu truy vấn, 4 bảng trong The Coffee Merchant: tblCustomer, tblInvoice, tblInvoiceLine, và tblInventory. Các bảng nối với nhau để tạo nên hóa đơn được nối theo từng cặp cột chung, không phải tất cả đều nối trên cột chung. Chẳng hạn, bảng tblCustomer có thể nối với tblInvoice qua các cột CustID và CustomerID. Tiếp theo, bảng tblInvoice có thể nối với bảng tblInvoiceLine qua cột nối InvoiceID. Và bảng tblInvoiceLine được nối với bảng tblInventory qua cột nối InventoryID.
Không có nhận xét nào:
Đăng nhận xét