Aktualizacja tabeli pomocniczej wiele-do-wielu

0

Witam,

W moim modelu posiadam tabele pomocniczą realizującą relację wiele-do-wielu. Jak prawidłowo mam aktualizować/dodawać pozycje w takiej bazie, by nie dublować wpisów? Podam konkretny przykład:

Tabela 1. Obraz
Id | Opis

Tabela 2. Paleta
Id | Kolory

Tabela 3. PaletyObrazu (wiele-do-wielu)
Id | IdObrazu | IdPalety

Jeśli teraz do danego obrazu dodam kolejną paletę (każdy obraz może posiadać wiele palet przypisanych jemu), to jak poprawnie mam zaktualizować tabele nr 3, skoro nie wiem która konkretnie paleta została dodana a dysponuję jedynie listą palet w tym obrazie (IList<Paleta> ListaPalet)
Czy najpierw powinienem wykasować wszystkie pozycje (relacje) związane z tym obrazem (DELETE FROM PaletyObrazu WHERE IdObrazu = 1) a później wprowadzić wszystkie jej palety do tabeli (foreach INSERT ...)?

PS. Jak powinienem łączyć poprawnie polecenie DELETE z INSERT by poszło jednym poleceniem SQL?

Prosiłbym o jakieś porady. Z góry dziękuję.

0

no to nie wiesz co dodajesz? Przecież wiesz co było i wiesz co jest. BTW pomysł z usuwaniem tylko po to aby za chwilę dodać jest najgorszy z możliwych.
Nie da się połączyć delete i insert.

0
devils.namespace napisał(a)

Witam,

W moim modelu posiadam tabele pomocniczą realizującą relację wiele-do-wielu. Jak prawidłowo mam aktualizować/dodawać pozycje w takiej bazie, by nie dublować wpisów? Podam konkretny przykład:

Tabela 1. Obraz
Id | Opis

Tabela 2. Paleta
Id | Kolory

Tabela 3. PaletyObrazu (wiele-do-wielu)
Id | IdObrazu | IdPalety

Mogę się mylić, ale wydaje mi się, że najsensowniejszym rozwiązaniem byłoby założenie na Tabeli 3 klucza złożonego, składającego się z IdObrazu i IdPalety - uchroni Cię to przed dublowaniem wpisów. Wtedy możesz też od razu wywalić atrybut Id, bo i tak nie niesie on ze sobą żadnej użytecznej informacji.

0

Właśnie o uniknięcie dublowania wpisów mi chodziło. To chyba dobre rozwiązanie, przetestuję i dziękuję za wskazówkę.

1 użytkowników online, w tym zalogowanych: 0, gości: 1