2009-03-10 12 views
5

Mam bazę danych z tabelą raportów. Ta tabela reprezentuje dane raportu i ma ograniczenia. Teraz aplikacja jest używana przez strażaków i być może będą musieli uciekać i zgasić kilka pożarów. Tak więc w połowie wypełniania danych dla tej tabeli, być może będą musieli uciekać. Po uruchomieniu sesji zapisujemy dane w tabeli roboczej, gdzie po prostu serializujemy wykres obiektów, bez ograniczeń (ponieważ nie wiemy, czy wszystko jest w poprawnym stanie). A kiedy strażak później chce odzyskać dane, po prostu wyciągamy ponownie szkic.Wersja robocza tabeli bazy danych

To działa dobrze! Jednak strażacy chcą teraz móc przeszukiwać stół i stół roboczy. Więc tutaj chciałbym przechowywać wszystkie dane (w tym wersję roboczą) w jednej tabeli, którą przeszukuję, więc nie muszę konsolidować wyszukiwania z dwóch tabel ..

Czy istnieje jakiś rodzaj bazy danych wzór szkiców? To, czego chcę, to wzorzec do przechowywania danych bez ograniczeń (w trybie roboczym) i z ograniczeniami (w trybie końcowym).

Odpowiedz

1

Przejdź do prostego rozwiązania: utwórz widok, który jest po prostu połączeniem dwóch tabel (co powinno być dość proste, ponieważ zakładam, że oba mają (prawie) identyczne struktury), a następnie uruchamiają wyszukiwanie jako źródło, jeśli chcą uwzględnić oba.

W rzeczywistości nie scaliłbym kompletnych i roboczych danych w żadnym momencie: prawdopodobieństwo błędu i przypadkowego użycia nieuzasadnionych danych wydaje się ogromne.

Nie pracowałbyś obecnie nad interfejsem dla IRS w Wielkiej Brytanii, prawda? Jeśli nie, to brzmi jak DK na podobne (w zasadzie) rozwiązanie tego problemu (kiedyś pracowałem dla brytyjskiej straży pożarnej).

+0

Nie działa na IRS nie :-) Czy nie podwoilibyśmy naszej konserwacji? Mam na myśli, że jeśli dodamy kolumnę do jednego stołu, będziemy musieli dodać ją do drugiej tabeli (i widoku przy okazji) – khebbie

+0

Tak, ale musisz już to zrobić, prawda? Sam związek nie będzie musiał być poprawiany, o ile dwie tabele dokładnie się zgadzają: wystarczy użyć "[Tabela 1] UNION [Table2];" bez określania nazw pól. – mavnn

1

Nie znam wzorca bazy danych dla Szkiców, ale proponuję zachować oddzielną tabelę, jeśli potrzebujesz sprawdzenia poprawności i po prostu przeszukujesz obie tabele.

3

Nie wiem, czy to by się kwalifikowało jako wzór, ale myślę, że najczystszym sposobem na zrobienie tego byłoby stworzenie widoku, który tworzy zjednoczenie dwóch tabel i przeszukiwanie go.

+0

to także moja pierwsza myśl – user29964

0

myślałem dość długo i ciężko o tym problemie, a oto moja odpowiedź:

  1. przechowują przeciągi i odpowiadających im zatwierdzonych podmiotów w tej samej tabeli. mieć kolumnę is_draft

  2. użytkowania is_draft = 1, aby wyłączyć sprawdzanie w wyzwalacze i sprawdź ograniczenia, czy Twoje zasady walidacji ORM

  3. wiele swoich dziedzinach będą musiały być pustych lub mają domyślne

ten ma kilka zalet:

  1. przeciągi i ich odpowiednie zatwierdzone podmioty są przechowywane w tej samej tabeli

  2. wersje robocze i odpowiadające im uprawnione podmioty: mają ten sam identyfikator. dlaczego to jest ważne?

Wyobraź sobie, że zaczynasz ofertę dla klienta. Zapisz to. dostaje identyfikator. patrzysz na to w przeglądarce/quotes/id/55. zaczynasz edycję tego cytatu, usuwasz wymaganą wartość, ponieważ była błędna. musisz iść obok, żeby to sprawdzić, ale chcesz go zapisać. numer identyfikacyjny nie powinien się zmieniać.

byłoby to również mylące dla ludzi, jeśli współpracują na tym samym dokumencie i jego id ciągle się zmienia, jeśli porusza się i wychodzi z prawidłowego stanu.

Powiązane problemy