Tôi đã được yêu cầu tạo ra thứ gì đó theo dõi chi phí hàng ngày để thu thập trên các tài khoản và tôi đang cố gắng tìm ra một lược đồ bảng cơ sở dữ liệu sẽ hỗ trợ việc này.
Đây là những gì tôi biết
- Công ty có hơn 2,5 triệu tài khoản
- Trong số này, họ hiện làm việc trung bình 200.000 mỗi tháng (thay đổi theo cấp độ nhân viên, hiện đang ở mức thấp)
- Họ có 13 loại chi phí khác nhau mà họ muốn theo dõi và họ đã cảnh báo rằng họ có thể bổ sung thêm trong tương lai
- Họ muốn các chi phí được theo dõi hàng ngày
- Chi phí không được chia trên toàn bộ hàng tồn kho. Chúng được chia thành số tài khoản được làm việc mỗi tháng (200.000) hoặc người dùng có thể nhập số nhận dạng tài khoản để áp dụng chi phí cho một nhóm tài khoản hoặc đơn giản là họ có thể chỉ định tài khoản nào sẽ áp dụng chi phí.
Suy nghĩ đầu tiên của tôi là một cơ sở dữ liệu chuẩn hóa:
Tài khoản Ngày CostTypeId Số tiền
Vấn đề của tôi với điều này là, làm toán. Bảng này sẽ nhận được rất lớn nhanh chóng. Giả sử tất cả 13 loại chi phí được áp dụng cho tất cả các tài khoản đã hoạt động cho tháng hiện tại 200k * 13 * N days in month
, đó là khoảng 75-80 triệu hồ sơ mỗi tháng, hoặc gần một tỷ hồ sơ mỗi năm.
Suy nghĩ thứ hai của tôi là không chuẩn hóa nó một chút
Tài khoản Ngày Tổng chi phí Chi phí1 Chi phí loại2 Chi phí loại3 Chi phí loại4 Chi phí loại5 Chi phí loại6 Chi phí loại7 Chi phí loại8 Chi phí loại9 Chi phí loại10 Chi phí11 Chi phí loại12 Chi phí13
Phương pháp này không chuẩn hóa hơn và có thể tạo tới 6 triệu bản ghi mỗi tháng ( 200k * N days in month
), hoặc khoảng 72 triệu mỗi năm. Nó ít hơn nhiều so với phương pháp đầu tiên, tuy nhiên nếu công ty quyết định Loại chi phí mới trong tương lai, một cột cơ sở dữ liệu khác sẽ cần được thêm vào.
Trong hai phương pháp, bạn thích phương pháp nào? Tại sao? Có một sự thay thế khác mà bạn có thể nghĩ ra sẽ xử lý việc này tốt hơn không?
Tôi quan tâm nhất đến hiệu suất báo cáo, cả báo cáo chi tiết và mùa hè. Công việc phân bổ chi phí ra khỏi tài khoản sẽ được thực hiện hàng đêm khi không có ai xung quanh. Một mối quan tâm thứ yếu là kích thước cơ sở dữ liệu. Cơ sở dữ liệu hiện có đã gần 300 GB và tôi tin rằng dung lượng trên đĩa khoảng 500 GB.
Cơ sở dữ liệu là SQL Server 2005