Wow - bạn có một dự án đầy tham vọng phía trước bạn. Để xác định thiết kế cơ sở dữ liệu tốt là gì không thể, ngoại trừ các nguyên tắc và nguyên tắc được hiểu rộng rãi.
Dưới đây là một vài ý tưởng mà bạn quan tâm:
Tôi làm việc cho một công ty quản lý cơ sở dữ liệu cho một số công ty bán lẻ lớn. Chúng tôi có cơ sở dữ liệu tùy chỉnh được thiết kế cho từng công ty, theo cách họ dự định sử dụng dữ liệu (đối với thư trực tiếp, chiến dịch email, v.v.) và loại phân tích và thông số lựa chọn họ muốn sử dụng. Ví dụ, một công ty bán thiết bị âm nhạc trong cửa hàng và trực tuyến sẽ muốn phân biệt giữa khách hàng đi bộ và trực tuyến, phân loại khách hàng theo loại mặt hàng họ mua (trống, guitar, micrô, bàn phím, thiết bị ghi âm, bộ khuếch đại, vv) và theo dõi số tiền họ đã chi tiêu và những gì họ đã mua, trong 6 tháng qua hoặc năm qua. Họ sử dụng thông tin này để quyết định ai sẽ nhận catalog trong thư. Những thư này rất tốn kém; có thể một hoặc hai đô la cho mỗi khách hàng, vì vậy công ty chỉ muốn gửi các danh mục sản phẩm đến những người có nhiều khả năng mua thứ gì đó nhất. Họ có thể có 15 triệu khách hàng trong cơ sở dữ liệu của họ, nhưng chỉ có 3 triệu trống mua, và chỉ 750.000 đã mua bất cứ thứ gì trong năm qua.
Nếu bạn phân tích cơ sở dữ liệu chúng tôi tạo, bạn sẽ tìm thấy nhiều bảng "công việc" được sử dụng cho các mục đích lựa chọn cụ thể và có thể không được thiết kế đúng cách theo nguyên tắc thiết kế cơ sở dữ liệu. Trong khi các bảng "chính" được thiết kế hiệu quả và có các mối quan hệ và chỉ mục thích hợp, thì các bảng "công việc" này sẽ làm cho nó xuất hiện là toàn bộ cơ sở dữ liệu được thiết kế kém, trong thực tế, các bảng công việc có thể được sử dụng một vài lần, hoặc thậm chí chỉ một lần, và chúng tôi đã không đi vào để xóa chúng ra hoặc thả chúng.Các bảng công việc vượt xa các bảng chính trong cơ sở dữ liệu cụ thể này.
Một cũng phải tính đến khối lượng dữ liệu đang được quản lý. Một cơ sở khách hàng 10 triệu có thể có dữ liệu giao dịch đánh số 10 đến 20 triệu giao dịch mỗi tuần. Hoặc mỗi ngày. Đôi khi, để quản lý, dữ liệu này phải được phân đoạn thành các bảng theo phạm vi ngày và sau đó một chế độ xem sẽ được sử dụng để chọn dữ liệu từ bảng phụ thích hợp. Điều này là hiệu quả cho khối lượng lớn này, nhưng nó có thể xuất hiện lặp đi lặp lại đến một máy phân tích tự động.
Máy phân tích của bạn sẽ cần phải được người dùng định cấu hình trước khi phân tích bắt đầu. Một số mục phải được bỏ qua, trong khi những mục khác có thể cực kỳ quan trọng.
Ngoài ra, cách phân tích thủ tục được lưu trữ và các hàm do người dùng xác định, v.v ... Tôi đã thấy một số mã thực sự xấu xí hoạt động khá hiệu quả. Và, một số mã xấu nhất, kém hiệu quả nhất được viết chỉ dùng một lần.
OK, tôi không có ý tưởng cho thời điểm này. Chúc may mắn với dự án của bạn.
Không quan tâm, bạn có thể làm gì khác ngoài việc kiểm tra các biểu mẫu bình thường? Có rất nhiều tối ưu hóa, phụ thuộc vào việc sử dụng, vì vậy tôi đoán mà không có một số truy vấn bạn thực sự không thể biết được điều gì là tối ưu hay không, phải không? –
Điều tôi thấy thú vị hơn là câu hỏi liệu bạn có thực sự tìm thấy nhiều lược đồ "trung gian đến xấu" với các dự án mã nguồn mở (hợp lý và được phát triển tích cực) hay không hoặc liệu các lược đồ xấu có được cải thiện nhanh chóng hay không thế giới nguồn mở. – stakx
chúng sẽ không được cải thiện một cách nhanh chóng bởi vì bạn phải viết lại tấn mã có nghĩa là nó phức tạp để di chuyển một cá thể hiện có. Và một khi căn bệnh lan truyền, bạn đang viết hacks mọi lúc;) – sled