Tôi gặp khó khăn khi tìm ra chính xác làm thế nào để đặt ranh giới tốt cho thời điểm và nơi sử dụng bảng tra cứu trong cơ sở dữ liệu. Hầu hết các nguồn mà tôi đã xem đều nói rằng tôi không bao giờ có thể có quá nhiều, nhưng tại một số điểm, có vẻ như cơ sở dữ liệu sẽ được chia thành nhiều phần, trong khi nó có thể hiệu quả, nó không còn có thể quản lý được. Đây là một ví dụ tổng hợp về những gì tôi đang làm việc với:
Giả sử tôi có một bảng gọi là Nhân viên:
ID LName FName Gender Position
1 Doe John Male Manager
2 Doe Jane Female Sales
3 Smith John Male Sales
Giả vờ một lúc rằng dữ liệu phức tạp hơn và chứa hàng trăm hàng. Điều rõ ràng nhất tôi thấy có thể được chuyển sang bảng tra cứu sẽ là Vị trí. Tôi có thể tạo một bảng có tên là Vị trí và dán các khóa ngoại từ bảng Vị trí vào bảng Nhân viên trong cột Vị trí.
ID Position
1 Manager
2 Sales
Nhưng tôi có thể tiếp tục chia thông tin thành các bảng tra cứu nhỏ hơn bao xa trước khi nó không thể quản lý được? Tôi có thể tạo bảng Giới tính và có 1 tương ứng với Nam và 2 tương ứng với Nữ trong một bảng tra cứu riêng. Tôi thậm chí có thể đặt LNames và FNames vào các bảng. Tất cả các mục nhập "John" được thay thế bằng khóa ngoại là 1 trỏ đến bảng FName có ID là 1 tương ứng với John. Tuy nhiên, nếu bạn đi xuống lỗ thỏ này quá xa như thế này, thì bảng Nhân viên của bạn sẽ bị giảm xuống thành một mớ khóa ngoại:
ID LName FName Gender Position
1 1 1 1 1
2 1 2 2 2
3 2 1 1 2
Mặc dù điều này có thể hoặc không hiệu quả hơn đối với máy chủ để xử lý, nhưng điều này chắc chắn là không thể đọc được đối với một người bình thường có thể đang cố gắng duy trì nó và gây khó khăn hơn cho nhà phát triển ứng dụng khi cố gắng truy cập. Vì vậy, câu hỏi thực sự của tôi là bao xa là quá xa? Có "thực hành tốt nhất" cho loại điều này hoặc một bộ hướng dẫn tốt ở đâu đó không? Tôi không thể tìm thấy bất kỳ thông tin trực tuyến nào thực sự đưa ra một bộ hướng dẫn tốt, có thể sử dụng được cho vấn đề cụ thể này mà tôi đang gặp phải. Thiết kế cơ sở dữ liệu là mũ cũ đối với tôi nhưng thiết kế cơ sở dữ liệu TỐT còn rất mới nên các câu trả lời kỹ thuật quá mức có thể nằm trên đầu tôi. Bất kỳ trợ giúp sẽ được đánh giá cao!