2009-03-10 27 views
5

Tôi có một cơ sở dữ liệu với một bảng báo cáo. Bảng này trình bày dữ liệu báo cáo và có các ràng buộc. Bây giờ ứng dụng được sử dụng bởi lính cứu hỏa, và họ có thể phải chạy đi và dập tắt một số đám cháy. Vì vậy, ở giữa điền dữ liệu cho bảng này, họ có thể phải chạy đi. Những gì chúng tôi làm là khi phiên chạy hết, chúng tôi lưu dữ liệu vào bảng dự thảo, nơi chúng tôi chỉ đơn giản là sắp xếp đồ thị đối tượng, không có ràng buộc (vì chúng tôi không thể biết mọi thứ có ở trạng thái hợp lệ hay không). Và khi người lính cứu hỏa muốn rút dữ liệu ra, chúng tôi sẽ rút lại bản nháp một lần nữa.Bản thảo của bảng cơ sở dữ liệu

Điều này hoạt động tốt! Tuy nhiên, các lính cứu hỏa muốn có thể tìm kiếm bàn và bảng dự thảo. Vì vậy, ở đây tôi muốn lưu trữ tất cả dữ liệu (bao gồm cả bản nháp) vào một bảng, mà tôi tìm kiếm, vì vậy tôi không phải hợp nhất tìm kiếm từ hai bảng ..

Có một số loại cơ sở dữ liệu không mẫu cho bản nháp? Những gì tôi muốn là một mẫu để lưu trữ dữ liệu mà không có ràng buộc (trong chế độ nháp) và với các ràng buộc (ở chế độ cuối cùng).

Trả lời

1

Đi với giải pháp đơn giản: tạo Chế độ xem chỉ là một liên kết của hai bảng (chúng nên tương đối thẳng vì chúng cho rằng cả hai đều có cấu trúc giống nhau) và sau đó chạy tìm kiếm trên đó nguồn nếu họ muốn bao gồm cả hai.

Tôi sẽ không thực sự hợp nhất dữ liệu hoàn chỉnh và dự thảo tại bất kỳ thời điểm nào: khả năng xảy ra lỗi và sử dụng ngẫu nhiên dữ liệu không được xác nhận có vẻ rất lớn.

Bạn sẽ không làm việc trên giao diện cho IRS ở Vương quốc Anh vào lúc này, phải không? Nếu không, âm thanh như DK đã đi cho một giải pháp tương tự (về nguyên tắc) cho vấn đề này (tôi từng làm việc cho một dịch vụ cứu hỏa và cứu hộ của Anh).

+0

Không hoạt động trên IRS no :-) Chúng tôi sẽ không tăng gấp đôi bảo trì của chúng tôi? Tôi có nghĩa là nếu chúng ta thêm một cột vào một bảng, chúng tôi sẽ phải thêm nó vào bảng khác (và chế độ xem bằng cách này) – khebbie

+0

Có, nhưng bạn sẽ phải làm điều đó, phải không? Bản thân công đoàn sẽ không cần sửa đổi miễn là hai bảng khớp chính xác: chỉ cần sử dụng "[Bảng 1] UNION [Bảng 2];" mà không chỉ định tên trường. – mavnn

1

Tôi không biết về mẫu Cơ sở dữ liệu cho Bản nháp, nhưng tôi khuyên bạn nên giữ bảng riêng nếu bạn yêu cầu xác thực và chỉ cần tìm kiếm trên cả hai bảng.

3

Tôi không biết liệu điều này có đủ điều kiện làm mẫu hay không, nhưng tôi nghĩ rằng cách sạch nhất để thực hiện việc này là tạo ra một khung nhìn hợp nhất hai bảng và tìm kiếm.

+0

đây cũng là suy nghĩ đầu tiên của tôi – user29964

0

Tôi đã suy nghĩ khá dài và khó khăn về vấn đề này, và đây là câu trả lời của tôi:

  1. dự thảo cửa hàng và các tổ chức xác nhận tương ứng của họ trong cùng một bảng. có một cột is_draft

  2. sử dụng is_draft = 1 để tắt xác nhận trong trigger và rà soát những hạn chế, hoặc quy tắc xác nhận ORM của bạn

  3. nhiều lĩnh vực của bạn sẽ phải nullable hoặc có giá trị mặc định

này có nhiều ưu điểm:

  1. dự thảo và các cơ quan xác nhận tương ứng của họ được lưu trữ trong cùng một bảng

  2. bản nháp và đối tượng được xác thực tương ứng có cùng id. Sao nó lại quan trọng?

hãy tưởng tượng bạn bắt đầu báo giá cho khách hàng. lưu nó. nó nhận được một id. bạn đang xem nó trong một trình duyệt web/dấu ngoặc kép/id/55. bạn bắt đầu chỉnh sửa báo giá đó, xóa giá trị bắt buộc vì nó sai. bạn phải đi bên cạnh để tìm nó, nhưng bạn muốn cứu nó. số id không được thay đổi.

nó cũng sẽ gây nhầm lẫn cho mọi người nếu họ đang cộng tác trên cùng một tài liệu và id của nó tiếp tục thay đổi nếu nó di chuyển vào và ra khỏi trạng thái hợp lệ.

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