13

Tôi hiện đang cố gắng tạo cơ sở dữ liệu nơi có tỷ lệ phần trăm rất lớn dữ liệu là thời gian. Sau khi đọc qua nhiều kỹ thuật để làm điều này (nhất liên quan đến chuẩn hóa 6nf) tôi chạy vào Anchor Modeling. Sơ đồ mà tôi đã phát triển mạnh mẽ giống với mô hình Mô hình hóa neo, đặc biệt là do trường hợp sử dụng (Dữ liệu tạm thời + Biết đến không xác định) là rất giống nhau, rằng tôi bị cám dỗ ôm lấy nó đầy đủ. Hai vấn đề lớn nhất mà tôi gặp phải là tôi không thể tìm thấy chi tiết về các tiêu cực của phương pháp này, và tôi không thể tìm thấy bất kỳ tham chiếu nào cho các tổ chức đã sử dụng nó trong sản xuất cho các câu chuyện chiến tranh và gotchas mà tôi cần phải biết của.Ưu và khuyết điểm của Mô hình neo là gì?

Tôi tự hỏi nếu có ai ở đây đủ quen thuộc với một thời gian ngắn giải thích về một số tiêu cực (vì tích cực được quảng cáo rất tốt trong các tài liệu nghiên cứu và trang web của họ) và bất kỳ kinh nghiệm nào sử dụng nó trong môi trường sản xuất.

Trả lời

12

Trong tham chiếu đến anchormodeling.com

Dưới đây là một vài điểm tôi biết

  1. Số DB-đối tượng chỉ đơn giản là quá lớn để duy trì bằng tay, do đó hãy chắc chắn rằng bạn sử dụng thiết kế mọi lúc để phát triển lược đồ.

  2. Hiện tại, nhà thiết kế hỗ trợ đầy đủ MS SQL Server, vì vậy nếu bạn phải mã cổng mọi lúc, bạn có thể đợi đến khi DB mục tiêu của bạn được hỗ trợ đầy đủ. Tôi biết nó có Oracle trong hộp thả xuống, nhưng ...

  3. Đừng mong đợi (cũng không yêu cầu) các nhà phát triển của bạn hiểu nó, họ phải truy cập vào mô hình qua 5NF lượt xem - đó là tốt. Vấn đề là các bảng được nạp thông qua các trigger (thay vì) trong các khung nhìn, có thể (hoặc có thể không) là một vấn đề về hiệu năng.

  4. Mong rằng bạn có thể cần phải viết thêm một số quy trình bảo trì (đối với mỗi thuộc tính thời gian) không được tạo tự động (chưa).Ví dụ, tôi thường cần một thủ tục prune cho các thuộc tính thời gian - để xóa cùng một giá trị-bản ghi cho cùng một ID trên hai sự kiện thời gian liên tiếp.

  5. Lượt xem và lượt truy vấn được tạo giải quyết tốt và có thể bạn sẽ viết gì đó trong tương lai. Tuy nhiên, "những người khác" sẽ viết các truy vấn về lượt xem trên lượt xem - không phải lúc nào cũng giải quyết tốt. Vì vậy, hy vọng rằng bạn có thể cần phải cảnh sát truy vấn nhiều hơn bình thường.

Có điều đáng buồn, gần đây tôi đã sử dụng cách tiếp cận để cấu trúc lại một phần trong kho của mình và nó hoạt động như một sự quyến rũ. Phải thừa nhận rằng, kho không có hầu hết các vấn đề được nêu ở đây.

Tôi khuyên bạn bắt buộc phải tạo hệ thống demo và thử nghiệm, kiểm tra, thử nghiệm ..., đặc biệt là điểm số 3 - tải qua trình kích hoạt.

5

Tôi chưa đọc bất kỳ giấy tờ nào về nó, nhưng vì nó dựa trên 6NF, tôi mong đợi nó sẽ gặp phải bất kỳ vấn đề nào theo 6NF.

6NF yêu cầu mỗi bảng bao gồm khóa ứng cử viên và không có nhiều hơn một cột không phải khóa. Vì vậy, trong trường hợp xấu nhất, bạn sẽ cần chín kết nối để tạo ra một tập hợp kết quả 10 cột. Nhưng bạn cũng có thể thiết kế một cơ sở dữ liệu sử dụng 200 bảng trong 5NF, 30 bảng trong BCNF và chỉ có 5 bảng trong 6NF. (Tôi nghĩ rằng sẽ không còn được Neo mô hình cho mỗi se, mà dường như đặt tất cả các bảng trong 6NF, nhưng tôi có thể sai về điều đó.)

The Manical tháng- vẫn còn có liên quan ở đây.

Câu hỏi quản lý, do đó, không phải là có nên xây dựng hệ thống thí điểm hay không. Bạn sẽ làm điều đó. Câu hỏi duy nhất là liệu có nên lập kế hoạch trước để xây dựng một trò ném bóng hay hứa sẽ chuyển giao cho khách hàng.

Fred Brooks, Jr., trong The Mythical Man-Month, p 116.

Làm thế nào với giá rẻ, bạn có thể xây dựng một nguyên mẫu để kiểm tra trường hợp xấu nhất dự kiến ​​của bạn?

+0

Cát, không phải là tôi không đồng ý với những gì bạn nói ở đây, nhưng có sự khác biệt giữa một mô hình được thực hiện (và hành động vẽ bất kỳ mẫu giấy nào) và thực hiện mô hình đó (hành động xác định cấu trúc cơ sở dữ liệu để thực hiện mô hình đó). Có luật nào nói rằng một mô hình khái niệm/phi chính thức mà "trông giống như" 6NF nhất thiết cũng phải dẫn đến một cấu trúc cơ sở dữ liệu hợp lý mà _IS_ 6NF? Cá nhân, câu trả lời của tôi sẽ được nhiều hơn dọc theo dòng mà khi bạn đang sử dụng mô hình neo như một kỹ thuật để vẽ mô hình _IN_formal, một thuộc tính duy nhất trong một "thực thể" (tiếp ...) –

+0

... chiếm nhiều inch vuông hơn khi bạn đang sử dụng ER làm kỹ thuật vẽ. Với kết quả không thể tránh khỏi mà đưa ra một kích thước cố định của giấy, mô hình neo không thể truyền đạt càng nhiều (_IN_formal) thông tin như E/R có thể. Chính xác thì điều gì khiến bạn không thể thực hiện một mô hình được vẽ với Anchoring trong 5NF thay vì 6NF? Điều gì ngăn cản bạn thực hiện một mô hình rút ra trong E/R crowfoot trong 6NF đầy đủ dù sao? –

+0

@ErwinSmout: Không có luật quan hệ nào nói rằng một mô hình khái niệm trong 6NF phải dẫn đến một cơ sở dữ liệu trong 6NF. Tôi đã triển khai các mô hình khái niệm 5NF trong Lotus Notes trước đây - đó là về mô hình vật lý 5NF * như bạn có thể nhận được. Nhưng tôi hiểu rằng trong Anchor Modeling, * every * table thực hiện một anchor, một thuộc tính, hoặc một nút * phải * trong 6NF. Các bảng trong 6NF dường như được yêu cầu để hỗ trợ các phương thức nhanh nhẹn của Anchor Modeling; Tôi không nghĩ rằng bạn có thể thả xuống 5NF mà không làm điều gì đó không còn là "Mô hình neo" nữa. (Không có gì sai với điều đó.) –

7

Đối với số điểm 4 ở trên. Kiểm soát phục hồi gần như đã hoàn thành, sao cho bạn có thể ngăn hai giá trị giống nhau liên tiếp theo thời gian.

Và nhận xét chung, việc tham gia không nhất thiết là điều xấu. Đọc: Why joins are a good thing.

Một trong những lợi ích to lớn của 6NF trong Mô hình neo là sự phát triển lược đồ không phá hủy. Nói cách khác, mọi phiên bản trước của mô hình cơ sở dữ liệu đều có sẵn như một tập hợp con trong mô hình hiện tại. Ngoài ra, vì các thay đổi được biểu diễn bằng các phần mở rộng trong lược đồ (bảng mới), việc nâng cấp cơ sở dữ liệu gần như tức thời và có thể được thực hiện một cách an toàn trực tuyến (ngay cả trong môi trường sản xuất). Lợi ích này sẽ bị mất trong 5NF.

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