Ukládání kombinace položek do tabulky   zodpovězená otázka

Databáze

Snažím se vymyslet co nejlepší způsob, jakým ukládat kombinaci položek do tabulky. Příklad: Existují položky A, B, C a každý řádek v tabulce má sloupec, který nějakým způsobem musí uchovávat kombinaci těchto položek. Může to být třeba AB, ABC nebo jen C.

Zatím jsou mi známé 2 způsoby: Na úrovni aplikace mít <Flags()>Enum, ze kterého se pomocí Or nebo And namíchá potřebná kombinace. Do databáze by se potom ukládalo jako obyčejné číslo. Druhý způsob je vytvořit si druhou tabulku všech povolených kombinací a na tu se potom odkazovat, to se mi ale vůbec nelíbí.

Ví někdo o lepším způsobu? (ukládat do databáze kombinace jako varchar ani nezmiňujte)

Databáze je omezený SQL Server Compact Edition.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Na to neexistuje jednoznačná odpověď. Záleží především na způsobu práce s daty. Tedy konkrétně:

- jak často se budou položky A,B,C měnit / rozšiřovat

- kolik položek A,B,C bude

- je potřeba mít data k dispozici na vyžádání SQL dotazem (analytické pohledy atp.) nebo se bude k datům přistupovat výhradně skrz nějaký BO

Existuje ještě třetí varianta - mít na každou hodnotu bool sloupec. To má ale smysl pouze pokud bude existovat těch položek menší počet, nebudou se často měnit a je potřeba se pohodlně pomocí SQL na ty varianty dotazovat.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Díky za odpověď.

- Měnit nebo rozšiřovat se nebudou prakticky vůbec

- Bude jich přesně 6

- K datům se bude přistupovat velmi jednoduše pomocí typového DataSetu a data budou vždy pouze pro čtení

- Zmiňovanou třetí variantu jsem také zvažoval, ale nakonec jsem jí vypustil z důvodu, kdyby náhodou bylo někdy položky potřeba rozšířit

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pro takové jednoduché případy si myslím, že je nejlepší se rozhodnout mezi variantou samostatných sloupců a bitové masky v jednom poli.

Osobně jsem spíš pro samostatné sloupce. Tolik práce navíc to není, data jsou přehlednější a pokud by se někdy sloupec přidával, nebude to zas tolik práce. Vycházím z předpokladu, že změny v databázi stejně budou a proto je přidání sloupce to nejmenší. Ale samozřejmě to neplatí pro všechny případy. Obecně asi lepší řešení (než tyto dvě) není a je celkem jedno, které zvolíte.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Já to možná udělám úplně celé jinak, protože kombinace položek dost komplikuje zobrazení v uživatelském rozhraní, například v DataGridViewu. A já bych chtěl, aby pokud možno uživatel v jednom sloupci viděl všechny položky, které tvoří kombinaci.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback