Lista keskustelualueista
Sinulla ei ole oikeutta kirjoittaa tälle alueelle. Tälle alueelle kirjoittamiseen vaadittu minimi jäsenyystaso on Brain-Ratsu.
Zdárek všem, prosím o radu v následujícím problému: potřebuji v Acessu vytvořit databázi s relacema mezi několikama tabulkama
mimo jiné tu mám Objednávky, Rozpis objednávky a sortiment. (dále číslo stolu, obsluhy apod.)
vše udělám vpohodě, určím primární klíče a vytvořím vazby, to je ok.
Jediný problém mám s rozpisem objednávky. Jak ho udělat správně? co mám nastavit jako primární klíč? mám tu položky - číslo objednávky, cena objednávky, stůl, který objednal, obsluha, která kasíruje a pak sortiment. Ani jeden z těhle údajů nemůže být primárním klíčem (protože se může opakovat). A dále, jak správně, či nejlépe doplnit sortiment? (Zatím řeším tak, že mám vypsán veškerý sortiment a u každého mám počet kusů, někde je tedy nula.)
snad jsem napsal srozumitelně... :o) Předem děkuji
oportunity: Číslo objednávky se může opakovat? Pak asi záleží na tom, co tu objednávku jednoznačně identifikuje, když se číslo opakuje, takže třeba číslo objednávky + obsluha? Nebo číslo objednávky + datum? Sortiment asi doplnit tam, kde je ta nula, ne? Nebo kde se blíží k nule... Takže pokud potřebuješ dostat seznam toho, co je potřeba doplnit, tak ne vypsat veškerý sortiment, ale vypsat sortiment, kde je počet kusů 0?
Vocilka: podle mě nemá na mysli doplnění sortimentu, který je spotřebován, ale jak do rozpisu objednávky přiřadit jednotlivé objednané položky ze sortimentu...
Vocilka: no to asi ne, ale právě číslo objednávky je primárním klíčem v tabulce "objednávky". dočetl a dopátral jsem se toho, že bych to měl v "rozpisu" nastavit jako "cizí klíč", ale to v acessu nikde nejni... :oD
oportunity: Jako primární klíč použij UID(unikátní identifikátor). Tzn inkrementálně se zvyšující číslo identifikující každou položku v databázi. Toto číslo nemá jiný význam než pořadové číslo záznamu v databázi. Stačí tak?
oportunity: podle mě by rozpis objednávky měl k objednávce přiřazovat jednotlivé položky sortimentu, takže jako primární klíč by byl určitě UID jak psal Krecik, a pak by už jen obsahoval položky číslo objednávky a číslo sortimentu (tedy odkaz na jednu z objednaných položek do tabulky sortimentu) a možná ještě počet kusů (pokud je možné objednat stejnou položku sortimentu vícekrát), a potom by s daným číslem objednávky bylo v rozpisu tolik řádků, kolik různých položek ze sortimentu v rámci této objednávky bylo objednáno.
Stůl a obsluha podle mě patří spíš do tabulky objednávky - předpokládám, že objednávka vzejde od jednoho stolu (jiný stůl jiná objednávka, a pokud by více stolů objednávalo zároveň na společnou objednávku, tak by se zkrátka zadal jen "hlavní stůl", jinak by se vztah objednávka-stůl asi musel řešit samostatnou spojovací tabulkou - něco jako "rozpis stolů" v podobném stylu, jako ten rozpis objednávky), totéž obdobně pro obsluhu (stůl/objednávku kasíruje na závěr jedna obsluha).
No a cena objednávky (pokud je myšlena výsledná celková cena), se pak spočítá podle rozpisu objednávky ze všech řádků s daným číslem objednávky, kde mám vždy počet objednaných kusů daného sortimentu a cena jednoho kusu je předpokládám v tabulce sortimentu...
Ale nevím, jestli sem správně pochopil zadání a specialistou na databáze taky nejsem, tak to ber jen jako moji selskou úvahu
whikki: děkuji za rady (všem):o) dost pomohly :o))) Tvá odpověď je přesně dle zadání hehe...
jen mi stále není jasná jedna věc - když dám do tabulky rozpis objednávek položku sortiment + počet kusů, jak mám navrhnout tu tabulku, když na každém rozpisu může být jiný počet sortimentu, to bych měl v každém řádku jiný počet sloupců....proto mě nenapadlo nic jiného, než tam mít všechny....to pak je každý řádek stejný :o))
oportunity: Aha, tak to jsem blbě pochopila, už jsem v obraze. V tabulce Rozpis objednávky budeš mít Číslo objednávky a třeba Pořadí položky objednávky (nebo ostatními navrhované UID), a ty 2 věci dohromady budou primární klíč. Takže pro jednu objednávku bude v tabulce Rozpis objednávky víc řádků se stejným číslem objednávky a různým pořadovým číslem, čímž se řeší to, že nepotřebuješ různý počet sloupců v různých objednávkách. Řádek bude stejný, jen pro některou objednávku bude jeden a pro některou jich bude víc.
oportunity: Klíč bude jeden, ale bude složen ze 2 sloupců. Mělo by to jít i u Accessu... Každopádně (kdyby to nešlo i kdyby to šlo) můžeš použít jen unikátní ID, které nebude odkazovat nikam, bude jen číslem řádku v tabulce Rozpis objednávky... (Access ho sám vytvoří jako datový typ automatické číslo).
PS: Tak jsem tady http://office.microsoft.com/cs-cz/access/HA100140991029.aspx vyčetla, že složený primární klíč (z více sloupců) se u Accessu dělá tak, že ty sloupce označíš kliknutím s klávesou Ctrl a pak dáš ikonku klíče (nebo Úpravy / Primární klíč)
oportunity: není zač, jsem rád, že to pomohlo. Myslel jsem to přesně tak, jak to doplnila Vocilka, ale neuměl sem to tak srozumitelně napsat Ale s konkrétní realizací už neporadím, v Accessu sem nikdy nic nedělal (kromě cvičného příkladu v rámci povinného kurzu "počítačové gramotnosti")