5

Nếu bạn phải xây dựng kho dữ liệu quan hệ theo tỷ lệ kinh thánh bằng SQL Server 2008, bạn có sử dụng khóa ngoài để thực thi toàn vẹn dữ liệu hay bạn sử dụng một số phương tiện khác?Tính toàn vẹn tham chiếu trong kho dữ liệu quan hệ. Nó có đáng không? và lựa chọn thay thế là gì?

Tôi thích chìa khóa nước ngoài vì bạn chỉ cần lấy chúng ngay một lần và chúng luôn ở đó để bảo vệ tính toàn vẹn. Tôi đã nghĩ đến việc vô hiệu hóa, tải, kích hoạt tuyến đường.

Mọi suy nghĩ?

Xin cảm ơn trước.

+1

Hãy xem [** câu hỏi/câu trả lời tương tự **] (http://stackoverflow.com/questions/2819424/in-a-star-schema-are-foreign-key-constraints-between-facts -và kích thước-necce/2822941 # 2822941). –

+1

Không chắc liệu tôi có nên thêm ở đây hay câu hỏi tương tự nhưng ... Nếu tính toàn vẹn là một vấn đề bạn luôn có thể đúng chức năng toàn vẹn hoặc các thủ tục được lưu trữ tìm kiếm sự kiện "mồ côi". (Hàng nơi các phím nước ngoài không có ý nghĩa). Sau đó, bạn có thể xóa sạch chúng sau/trong/trước chu kỳ tải tiếp theo trên cơ sở dữ liệu của bạn. – Markus

+0

/right/write .... –

Trả lời

1

Ồ, tôi chắc chắn nhất sẽ làm như vậy! Những gì bạn phải nhớ là cơ sở dữ liệu của bạn là kho dữ liệu của bạn, nó không chỉ là lưu trữ dữ liệu cho giao diện người dùng. Đây là sự khác biệt tinh tế, nhưng điều quan trọng là khi bạn bắt đầu xem xét tương lai. Ngay bây giờ, bạn (có lẽ) sở hữu các ứng dụng quản lý, nhưng ai sẽ nói rằng trong tương lai, điều này vẫn sẽ xảy ra?

Bằng cách tắt quá trình xác thực khi bạn có thể vào cơ sở dữ liệu, bạn sẽ tương thích với ứng dụng của mình - ít nhất là nếu ai đó cố gắng phát triển dựa vào cơ sở dữ liệu của bạn, nhiều giả định của bạn sẽ giữ.

Những hạn chế của việc này ở phía cơ sở dữ liệu là chèn chậm hơn, vì vậy bạn cần phải cân nhắc mức độ nghiêm trọng của ứng dụng đối với việc đọc và viết. Tại nơi làm việc, chúng tôi có nhiều nhu cầu đọc hơn viết, vì vậy tính toàn vẹn tham chiếu có vẻ hiển nhiên. Tuy nhiên, các bảng của chúng ta lớn (và sẵn sàng để nhập), vì vậy chúng ta đi xuống một bước nhập nhiều bước để tạo các bảng, chèn dữ liệu, tạo các chỉ mục, và sau đó tạo các khóa ngoài và các ràng buộc khác.

Tôi hy vọng điều này sẽ hữu ích!

+0

@ aCiD2, OP hỏi về một ** datawarehouse **. –

+0

@Mark, tôi hiểu điều đó, nhưng điều đó có ảnh hưởng đến anwser của tôi không? – ocharles

+0

@ aCiD2, tôi không nghĩ rằng tham chiếu đến giao diện người dùng có liên quan đến datawarehouses - "hệ thống nguồn" sẽ có liên quan hơn. Ngoài ra còn có câu hỏi liệu quá trình ETL có nên thực thi tính toàn vẹn tham chiếu hay không - thông thường, tôi mong đợi điều này, vì vậy sẽ không cần thiết để thực thi nó trong lược đồ DB.Nhưng sau đó, tôi thường không mong đợi để sử dụng một giản đồ hoàn toàn bình thường làm cơ sở cho một datawarehouse. –

2

Ngay từ đầu, tôi sẽ không xây dựng kho dữ liệu (vật lý) phù hợp với lược đồ quan hệ. Kho dữ liệu được đề xuất có được chuẩn hóa hoàn toàn không, hay từ "quan hệ" trong câu hỏi đơn giản chỉ ra rằng nó sẽ được xây dựng trong một cơ sở dữ liệu SQL?

+0

Sẽ có một lớp được chuẩn hóa để chụp tất cả các chi tiết. Một hoặc nhiều lớp sẽ được xây dựng sau đó dữ liệu tóm tắt sẽ được tải cho phân tích. – David

+0

Do kích thước tiềm năng của nhà kho và thực tế là chúng tôi không biết dữ liệu (y tế) này sẽ được sử dụng như thế nào trong tương lai, chúng tôi cần lưu trữ chi tiết trong lớp đầu tiên ở dạng chuẩn hóa. – David

+0

Lược đồ sao hiếm khi * đáng kể * lớn hơn cùng một dữ liệu được lưu trữ liên quan - điều này là do việc chuẩn hóa liên quan đến việc xây dựng lược đồ hình sao chỉ áp dụng cho các thứ nguyên, thường là các đơn đặt hàng có độ lớn nhỏ hơn các bảng sự kiện. –

1

Có, tôi thường sử dụng khóa ngoại. Điều đó quan trọng trong bất kỳ cơ sở dữ liệu nào, nhưng có lẽ đặc biệt vì vậy nếu nhà kho là một kho chứa phức tạp với nhiều bảng.

Lý do sử dụng ràng buộc toàn vẹn trong kho cũng giống như trong bất kỳ cơ sở dữ liệu nào khác: Nó giảm thiểu nguy cơ dữ liệu không chính xác vào cơ sở dữ liệu; Nó thường là phương pháp kinh tế và hiệu quả nhất trong việc thực hiện các quy tắc toàn vẹn như vậy; Nó có nghĩa là những ràng buộc đó có sẵn cho trình tối ưu hóa để cải thiện khả năng tương thích truy vấn; Các ràng buộc cũng có sẵn cho các công cụ phát triển và người dùng sử dụng dữ liệu và cần phải giải thích cấu trúc của nó.

Các vấn đề liên quan