Tôi có một số đối tượng trong Data Warehouse của tôi:Làm cách nào để tạo bảng lịch sử?
Person - với các thuộc tính PersonId, dateFrom, dateTo, và những người khác những thể thay đổi, ví dụ Tên cuối cùng, ngày tháng năm sinh và vân vân - chậm thay đổi chiều hướng
Document - documentId, số lượng, loại
Địa chỉ - AddressID, thành phố, đường phố, nhà, căn hộ
Mối quan hệ giữa (Người và Tài liệu) là Một-Nhiều và (Người và Địa chỉ) là Nhiều người-Nhiều.
mục tiêu của tôi là để tạo ra bảng thực tế lịch sử mà có thể trả lời chúng tôi câu hỏi sau:
- người gì với những gì tài liệu sống tại địa chỉ được xác định vào ngày xác định?
2, Lịch sử của người dân địa chỉ được xác định có trong khoảng thời gian xác định?
Điều này không chỉ cho những gì DW được thiết kế, nhưng tôi nghĩ rằng đó là điều khó khăn nhất trong thiết kế của DW.
Ví dụ: Hoa hậu Brown với personId = 1, tài liệu có documentId = 1 và documentId = 2 đã được sống tại địa chỉ có addressId = 1 từ 01/01/2005 đến 02/02/2010 và sau đó được chuyển đến addressId = 2 nơi đã sống từ ngày 02/03/2010 đến ngày hiện tại (NULL?). Nhưng cô đã đổi tên thành Mrs Green từ ngày 04/05/2006 và tài liệu đầu tiên của cô với documentId = 1 thành documentId = 3 kể từ 06/07/2007. Mr Black với personId = 2, documentId = 4 đã được sống tại addressId = 1 kể từ ngày 02/03/2010 đến ngày hiện tại.
Kết quả dự kiến trên truy vấn của chúng tôi cho câu hỏi 2 nơi AddressID = 1, và khoảng thời gian là từ 01/01/2000 đến nay, phải như:
Hàng:
last_name="Brown", documentId=1, dateFrom=01/01/2005, dateTo=04/04/2006
last_name="Brown", documentId=2, dateFrom=01/01/2005, dateTo=04/04/2006
last_name="Green", documentId=1, dateFrom=04/05/2006, dateTo=06/06/2007
last_name="Green", documentId=2, dateFrom=04/05/2006, dateTo=06/06/2007
last_name="Green", documentId=2, dateFrom=06/07/2007, dateTo=02/01/2010
last_name="Green", documentId=3, dateFrom=06/07/2007, dateTo=02/01/2010
last_name="Black", documentId=4, dateFrom=02/03/2010, dateTo=NULL
tôi đã một ý tưởng để tạo bảng thực tế với khóa tổng hợp (personId, documentId, addressId, dateFrom) nhưng tôi không có ý tưởng làm thế nào để tải bảng này và sau đó nhận được kết quả mong đợi với cấu trúc này.
Tôi sẽ rất vui lòng được trợ giúp!
@Marcus D Cảm ơn bạn. Tôi nghĩ tương tự nhưng không có bàn phím "k" trong bảng thực tế (Tôi có hiểu tên của bạn đúng không? KcPerson - chìa khóa thay thế cho việc xác định một hàng và kPerson - khóa tự nhiên để nhận dạng một người?). – Argnist
Nhưng FactHistory (FKs = kcPerson, kPerson, kcDocument, kDocument, kcAddress, kAddress, kDateFrom, kDateTo) cho rằng chúng ta phải cập nhật thông tin cũ 'kDateTo - đây không phải là điều tốt. Có thể tốt hơn để có một kDateFrom ... Và một câu hỏi nữa. Loại 2 scd trong DimDocument hoặc DimAddress - cho bộ tài liệu/địa chỉ của một Person hoặc cái gì? – Argnist
@Argnist. chúng tôi sẽ sử dụng hai khóa thay thế nguyên kcPerson và kPerson.kperson sẽ là một chìa khóa thay thế trỏ đến cá nhân duy nhất (bất kể thay đổi tên/thay đổi giới tính, vv), kcperson sẽ là một chìa khóa thay thế trỏ đến trường hợp cụ thể của người đó (tên/giới tính cụ thể của họ). Có một kiểm tra của liên kết tôi bao gồm. Chúng tôi không giữ các khóa tự nhiên trên bảng thực tế. luôn luôn thay thế các phím - nhanh hơn nhiều, cũng xoay quanh vấn đề khi người dùng doanh nghiệp của bạn muốn thay đổi tên khóa tự nhiên, nhưng giữ lại một liên kết đến lịch sử (có chúng tôi đã có nó xảy ra !!) –