Hãy dùng thử!
Cơ sở dữ liệu và ứng dụng web có thể mang lại lợi thế lớn cho doanh nghiệp. Thiết kế cơ sở dữ liệu rất quan trọng để đạt được mục tiêu của bạn, cho dù bạn muốn quản lý thông tin nhân viên, cung cấp báo cáo hàng tuần chống lại dữ liệu hay theo dõi đơn hàng của khách hàng. Việc đầu tư thời gian để hiểu rõ thiết kế cơ sở dữ liệu sẽ giúp bạn xây dựng các cơ sở dữ liệu hoạt động ngay lần đầu tiên và đáp ứng nhu cầu thay đổi.
Quan trọng: Ứng dụng Access trên web khác với cơ sở dữ liệu trên máy tính. Bài viết này không thảo luận về thiết kế ứng dụng web.
Khái niệm và thuật ngữ
Hãy bắt đầu bằng cách tìm hiểu một số thuật ngữ và khái niệm cơ bản. Để thiết kế một cơ sở dữ liệu hữu ích, bạn tạo các bảng tập trung vào một chủ đề. Trong bảng, bạn ghi lại tất cả dữ liệu cần thiết cho chủ đề đó trong các trường, giữ đơn vị dữ liệu nhỏ nhất có thể.
Cơ sở dữ liệu quan hệ |
Cơ sở dữ liệu trong đó dữ liệu được chia thành các bảng, vốn giống như bảng tính. Mỗi bảng chỉ có một chủ đề, chẳng hạn như khách hàng (một bảng) hoặc sản phẩm (bảng khác). |
Bản ghi và trường |
Lưu trữ cho dữ liệu cụ thể trong bảng. Hàng (hoặc bản ghi) lưu trữ từng điểm dữ liệu duy nhất, chẳng hạn như tên của khách hàng. Các cột (hoặc các trường) phân tách thông tin được ghi lại về từng điểm dữ liệu vào đơn vị nhỏ nhất có thể—tên có thể là một cột và họ có thể là một cột và họ có thể là tên khác. |
Khóa chính |
Một giá trị đảm bảo mỗi bản ghi là duy nhất. Ví dụ, có thể có hai khách hàng cùng tên, Elizabeth Andersen. Nhưng một trong những hồ sơ của Elizabeth Andersen có số 12 là khóa chính của nó và cái còn lại có khóa chính là 58. |
Mối quan hệ giữa cha mẹ và con |
Mối quan hệ chung giữa các bảng. Ví dụ: một khách hàng có thể có nhiều đơn hàng. Bảng cha mẹ có khóa chính. Bảng con có khóa ngoại, là các giá trị từ khóa chính cho biết cách các bản ghi bảng con được liên kết với bảng mẹ. Các phím này được liên kết bằng một mối quan hệ. |
Thiết kế cơ sở dữ liệu tốt là?
Hai nguyên tắc là cơ bản để thiết kế cơ sở dữ liệu tốt:
-
Tránh thông tin trùng lặp (còn được gọi là dữ liệu dư thừa). Nó lãng phí không gian và làm tăng khả năng xảy ra lỗi.
-
Đảm bảo rằng dữ liệu chính xác và đầy đủ. Thông tin không đầy đủ hoặc sai chảy qua trong các truy vấn và báo cáo và cuối cùng có thể dẫn đến các quyết định sai thông tin.
Để trợ giúp với các sự cố này:
-
Chia thông tin cơ sở dữ liệu thành các bảng theo đối tượng với một tiêu điểm hẹp. Tránh trùng lặp thông tin trong nhiều bảng. (Ví dụ: tên khách hàng chỉ nên đi vào một bảng.)
-
Kết hợp các bảng với nhau bằng các phím thay vì sao chép dữ liệu.
-
Bao gồm các quy trình hỗ trợ và đảm bảo tính chính xác và toàn vẹn của thông tin cơ sở dữ liệu.
-
Thiết kế cơ sở dữ liệu của bạn với các nhu cầu xử lý dữ liệu và báo cáo trong tâm trí.
Để cải thiện tính hữu dụng lâu dài cho cơ sở dữ liệu của bạn, hãy làm theo năm bước thiết kế sau:
Bước 1: Xác định mục đích của cơ sở dữ liệu
Trước khi bạn bắt đầu, hãy có mục tiêu cho cơ sở dữ liệu của bạn.
Để giữ cho thiết kế của bạn luôn tập trung, hãy tóm tắt mục đích của cơ sở dữ liệu và tham khảo tóm tắt thường xuyên. Ví dụ: nếu bạn muốn có một cơ sở dữ liệu nhỏ cho doanh nghiệp tại nhà, bạn có thể viết một nội dung đơn giản, chẳng hạn như "Cơ sở dữ liệu khách hàng lưu giữ danh sách thông tin khách hàng cho mục đích sản xuất thư và báo cáo". Đối với cơ sở dữ liệu doanh nghiệp, bạn có thể cần nhiều đoạn văn để mô tả thời điểm và cách mọi người có vai trò khác nhau sẽ sử dụng cơ sở dữ liệu và dữ liệu của cơ sở dữ liệu đó. Create một tuyên bố nhiệm vụ cụ thể và chi tiết để tham khảo trong suốt quá trình thiết kế.
Bước 2: Tìm và sắp xếp thông tin bắt buộc
Thu thập tất cả các loại thông tin bạn muốn ghi lại, chẳng hạn như tên sản phẩm và số đơn hàng của bạn.
Bắt đầu với các phương pháp theo dõi và thông tin hiện có của bạn. Ví dụ: có thể bạn hiện đang ghi lại đơn đặt hàng trong sổ cái hoặc bạn giữ thông tin khách hàng trên biểu mẫu giấy. Sử dụng các nguồn này để liệt kê thông tin bạn hiện chụp (ví dụ: tất cả các hộp trên biểu mẫu của bạn). Nơi bạn hiện không ghi lại những thông tin quan trọng, hãy suy nghĩ về những thông tin riêng biệt mà bạn cần. Mỗi kiểu dữ liệu riêng lẻ sẽ trở thành một trường trong cơ sở dữ liệu của bạn.
Đừng lo lắng về việc tạo danh sách đầu tiên hoàn hảo—bạn có thể tinh chỉnh danh sách theo thời gian. Tuy nhiên, hãy cân nhắc tất cả những người sử dụng thông tin này và hỏi ý tưởng của họ.
Tiếp theo, hãy nghĩ về những gì bạn muốn ra khỏi cơ sở dữ liệu và các loại báo cáo hoặc thư bạn muốn tạo. Sau đó, đảm bảo rằng bạn đang chụp các thông tin cần thiết để đáp ứng các mục tiêu đó. Ví dụ: nếu bạn muốn một báo cáo hiển thị doanh số theo khu vực, bạn cần ghi lại dữ liệu bán hàng ở mức khu vực. Hãy thử phác thảo báo cáo với thông tin thực tế mà bạn muốn xem. Sau đó, liệt kê dữ liệu bạn cần để tạo báo cáo. Thực hiện tương tự cho việc gửi thư hoặc các đầu ra khác mà bạn muốn từ cơ sở dữ liệu.
Ví dụ
Giả sử bạn cung cấp cho khách hàng cơ hội chọn tham gia (hoặc không tham gia) cập nhật email định kỳ và bạn muốn in danh sách những người đã chọn tham gia. Bạn cần cột Gửi Email trong bảng Khách hàng, với các giá trị cho phép là Có và Không.
Đối với những người sẵn dùng để nhận email, bạn cần có địa chỉ email, địa chỉ này cũng yêu cầu một trường. Nếu bạn muốn đưa vào lời chào thích hợp (chẳng hạn như Mr., Mrs. hoặc Ms.), hãy đưa vào trường Lời chào. Nếu bạn muốn địa chỉ khách hàng theo tên của họ trong email, hãy thêm trường Tên.
Mẹo: Hãy nhớ ngắt từng phần thông tin thành phần nhỏ nhất hữu ích, chẳng hạn như tên và họ cho bảng khách hàng. Nói chung, nếu bạn muốn sắp xếp, tìm kiếm, tính toán hoặc báo cáo dựa trên một mục thông tin (chẳng hạn như họ của khách hàng), bạn nên đặt mục đó vào trường riêng của nó.
Bước 3: Chia thông tin vào các bảng
Chia các mục thông tin của bạn vào các thực thể hoặc đối tượng chính, chẳng hạn như sản phẩm, khách hàng và đơn hàng. Mỗi đối tượng sẽ trở thành một bảng.
Sau khi bạn có danh sách các thông tin bắt buộc, hãy xác định các thực thể chính (hoặc đối tượng) mà bạn cần để sắp xếp dữ liệu của mình. Tránh trùng lặp dữ liệu giữa các thực thể. Ví dụ: danh sách sơ bộ cho cơ sở dữ liệu doanh số sản phẩm có thể trông như sau:
Các thực thể chính là: khách hàng, nhà cung cấp, sản phẩm và đơn hàng. Vì vậy, hãy bắt đầu với bốn bảng đó: một bảng dữ kiện về khách hàng, một bảng dữ kiện về nhà cung cấp, v.v. Đây có thể không phải là thiết kế cuối cùng của bạn, nhưng đó là điểm khởi đầu tốt.
Lưu ý: Cơ sở dữ liệu tốt nhất chứa nhiều bảng. Tránh cám dỗ để đặt tất cả các thông tin của bạn trong một bảng duy nhất. Điều này dẫn đến thông tin trùng lặp, kích cỡ cơ sở dữ liệu lớn hơn và lỗi tăng lên. Thiết kế để ghi lại mỗi dữ kiện chỉ một lần. Nếu bạn thấy thông tin lặp lại, chẳng hạn như địa chỉ nhà cung cấp, hãy cơ cấu lại cơ sở dữ liệu của bạn để đặt thông tin đó vào một bảng riêng biệt.
Để hiểu tại sao số lượng bảng tốt hơn, hãy cân nhắc bảng hiển thị ở đây:
Mỗi hàng chứa thông tin về cả sản phẩm và nhà cung cấp của sản phẩm. Vì bạn có thể có nhiều sản phẩm từ cùng một nhà cung cấp nên thông tin tên và địa chỉ nhà cung cấp phải được lặp lại nhiều lần. Như vậy rất tốn dung lượng ổ đĩa. Thay vào đó, chỉ ghi lại thông tin nhà cung cấp một lần trong bảng Nhà cung cấp riêng, rồi liên kết bảng đó với bảng Sản phẩm.
Vấn đề thứ hai với thiết kế này là hiển nhiên khi bạn cần sửa đổi thông tin về các nhà cung cấp. Giả sử bạn cần thay đổi địa chỉ của nhà cung cấp. Vì địa chỉ xuất hiện ở nhiều nơi nên bạn có thể vô tình thay đổi địa chỉ ở chỗ này nhưng quên thay đổi địa chỉ ở những chỗ khác. Việc ghi lại địa chỉ của nhà cung cấp chỉ ở một nơi sẽ giải quyết được vấn đề đó.
Cuối cùng, giả sử chỉ có một sản phẩm do Coho Winery cung cấp và bạn muốn xóa sản phẩm nhưng giữ lại thông tin tên và địa chỉ nhà cung cấp. Với thiết kế này, bạn sẽ xóa bản ghi sản phẩm mà không làm mất thông tin nhà cung cấp như thế nào? Không thể. Vì mỗi bản ghi đều chứa dữ kiện về sản phẩm ngoài dữ kiện về nhà cung cấp nên không thể xóa dữ kiện này mà không xóa bản ghi còn lại. Để tách riêng các dữ kiện này, hãy tách bảng này thành hai: bảng đầu tiên cho thông tin sản phẩm và bảng thứ hai dành cho thông tin nhà cung cấp. Sau đó, khi xóa bản ghi sản phẩm, bạn chỉ xóa dữ kiện về sản phẩm— chứ không xóa dữ kiện về nhà cung cấp.
Bước 4: Chuyển các mục thông tin thành các cột
Quyết định loại thông tin bạn cần lưu trữ trong từng bảng. Những phần dữ liệu cụ thể này sẽ trở thành các trường trong bảng. Ví dụ: bảng Nhân viên có thể bao gồm các trường như Họ, Tên và Ngày Tuyển dụng.
Sau khi bạn đã chọn chủ đề cho bảng cơ sở dữ liệu, các cột trong bảng đó sẽ chỉ lưu trữ dữ kiện về chủ đề đơn lẻ đó. Ví dụ: bảng sản phẩm chỉ nên lưu trữ dữ kiện về sản phẩm— chứ không phải về nhà cung cấp của họ.
Để quyết định thông tin nào cần theo dõi trong bảng, hãy sử dụng danh sách bạn đã tạo trước đó. Ví dụ: bảng Khách hàng có thể bao gồm: Tên, Họ, Địa chỉ, Gửi Email, Lời chào và Địa chỉ Email. Mỗi bản ghi (khách hàng) trong bảng chứa cùng một tập hợp cột, vì vậy bạn lưu trữ chính xác cùng một thông tin cho từng khách hàng.
Create sách đầu tiên của bạn, rồi xem lại và tinh chỉnh danh sách đó. Hãy nhớ chia nhỏ thông tin thành các trường nhỏ nhất có thể. Ví dụ: nếu danh sách ban đầu của bạn có Địa chỉ dưới dạng một trường, hãy chia địa chỉ đó thành Địa chỉ Đường, Thành phố, Tiểu bang và Mã Zip—hoặc nếu khách hàng của bạn là người toàn cục, sẽ chuyển thành nhiều trường hơn. Ví dụ, bằng cách đó, bạn có thể gửi thư ở định dạng thích hợp hoặc báo cáo theo đơn đặt hàng theo bang.
Sau khi đã tinh chỉnh các cột dữ liệu trong từng bảng, bạn đã sẵn sàng chọn khóa chính cho từng bảng.
Bước 5: Chỉ định khóa chính
Chọn khóa chính cho mỗi bảng. Khóa chính, chẳng hạn như ID Sản phẩm hoặc ID Đơn hàng, sẽ nhận dạng duy nhất từng bản ghi. Nếu bạn không có mã định danh duy nhất, rõ ràng, hãy sử dụng Access để tạo một mã định danh cho bạn.
Bạn cần một cách để xác định duy nhất từng hàng trong mỗi bảng. Bạn còn nhớ ví dụ trước đó khi hai khách hàng có cùng tên? Vì họ chia sẻ tên, bạn cần một cách để nhận dạng riêng từng tên.
Vì vậy, mỗi bảng nên có một cột (hoặc tập hợp cột) xác định duy nhất từng hàng. Đây được gọi là khóa chính và thường là số duy nhất, chẳng hạn như số ID nhân viên hoặc số sê-ri. Access sử dụng khóa chính để nhanh chóng liên kết dữ liệu từ nhiều bảng và tập hợp dữ liệu cho bạn.
Đôi khi, khóa chính bao gồm hai hoặc nhiều trường. Ví dụ: bảng Chi tiết Đơn hàng lưu trữ các khoản mục cho đơn hàng có thể sử dụng hai cột trong khóa chính: ID Đơn hàng và ID Sản phẩm. Khi khóa chính triển khai nhiều cột, khóa còn được gọi là khóa tổng hợp.
Nếu bạn đã có mã định danh duy nhất cho thông tin trong bảng, chẳng hạn như số sản phẩm nhận dạng riêng từng sản phẩm trong danh mục của bạn, hãy sử dụng mã định danh đó nhưng chỉ khi các giá trị đáp ứng các quy tắc này cho khóa chính:
-
Mã định danh sẽ luôn khác nhau đối với từng bản ghi. Không cho phép các giá trị trùng lặp trong khóa chính.
-
Luôn có một giá trị cho mục. Mọi bản ghi trong bảng của bạn phải có khóa chính. Nếu bạn đang sử dụng nhiều cột để tạo khóa (như Dòng Phần và Số Phần), cả hai giá trị phải luôn xuất hiện.
-
Khóa chính là một giá trị không thay đổi. Vì các khóa được tham chiếu bởi các bảng khác nên mọi thay đổi đối với khóa chính trong một bảng có nghĩa là thay đổi đối với khóa ở mọi nơi khóa được tham chiếu. Thay đổi thường xuyên làm tăng rủi ro lỗi.
Nếu bạn không có mã định danh rõ ràng, hãy sử dụng một số tùy chọn, duy nhất làm khóa chính. Ví dụ: bạn có thể gán cho mỗi đơn hàng một số đơn hàng duy nhất cho mục đích duy nhất là xác định đơn hàng.
Mẹo: Để tạo một số duy nhất làm khóa chính, hãy thêm một cột bằng cách dùng kiểu dữ liệu Số Tự động. Kiểu dữ liệu Số Tự động tự động gán giá trị số duy nhất cho từng bản ghi. Kiểu mã định danh này không chứa thông tin thực tế mô tả hàng mà nó đại diện. Khóa này lý tưởng để sử dụng làm khóa chính vì các số không thay đổi—không giống như khóa chính chứa dữ kiện về một hàng, chẳng hạn như số điện thoại hoặc tên khách hàng.