Potřeboval bych pomoci s návrhem databáze v Androidu. Moje databáze má dvě základní části: seznam poskytovaných produktů(coal, pivo, chipsy). A pak tabulka s zákazníkem, kde by byly všechny jeho objednávky. počet tabulek se zákazníky se bude pohybovat okolo 40. Jenže jak jsem tak Zjistil tak v SQLite nejde dynamicky vytvářet tabulky. Jak tento problém vyřešit?
Fórum › Java
SQLite dynamické vytváření tabulek
Ale když každá objednávka bude diametrálně odlišná, čili nebude se dát navázat na nějakou obecnou tabulku, tak v tom případě mi nezbývá než vytvořit další databázi, která se přizpůsobí dané objednávce? Pouze kdyby každá objednávka měl přesně dané parametry tak by se dal využít tebou popsaný vzorec. Díky za pomoc ;). Doufám, že takto to je správně?
Dělám aplikaci na zaznamenávání objednávek do penzionu. Aplikace by měla vypadat následovně. Seznam ubytovaných hostů, kliknu na hosta, otevře se mi nabídka pokrmů, nápojů plus tam bude tlačítko na přidání mimořádné objednávky. Mimořádná objednávka je něco co není předem specifikováno Př: narozeninový dort. Já nechci tuto mimořádnou věc přidat do celkové nabídky, ale pouze do jedné objednávky. Z toho vyplývá, že nemohu použít nějakou jednotnou tabulku pro všechny zákazníky.
V tom případě je řešení jednoduché. Tvoje databáze bude obsahovat minimálně 3 tabulky. Tabulku se zákazníky (adresář) tabulku s objednávkami, kde bude objednávka navázána na položku adresáře a tabulku "mimořádných objednávek" kde bude vazba na objednávky. Vztahy si doděláš sám...
#10 Flowy
Ahoj, parsovat text je nesmysl. To co popisuješ (jestli jsem to správně pochopil) je vazba M:N. Ta se realizuje prostředníkem, tj. tabulka která obsahuje odkazy na primární klice z obou provázaných tabulek.
Udělám to takto, sice budu muset vymyslet něco na vytváření ID, ale to nevadí, alespoň se naučím něco nového.
#13 libor
Jako ID se téměř vždy používá celé číslo, SQLite umí "autoincrement", čili nemusíš nic na vymýšlení ID řešit. Naopak bych tě od nějakého vymýšlení chtěl odradit, protože je to zbytečné a myslím si že ti to jen přidělá práci. To co máš v tabulkách jako ID bych spíše označil jako KOD, každopádně primární klíče bych nechal na těch IDčkách...
#13 libor
To vůbec není dobrý nápad. Druhá a třetí tabulka se dá sloučit do jedné. Stabilní nabídka může mít příznak, podle kterého se bude objevovat v menu. Doplňková nabídka ten příznak mít nebude.
#16 libor
Místo prosté 0 nebo 1 můžeš udělat kategorie.
Škoda, že SQLite neumí ENUM. Mohl bys mít polévky, hovězí, vepřové, nealko, pivo a ... různé, které by obsluha mohla doplňovat a které by se v jídeláku netiskly. Dá se to však udělat přes další tabulku a cizí klíče.
Já se zatím musím držet při zemi s SQLite jsem začal před týdnem :DD. Učím se tak nějak sám, moc knížek na Android není a v Angličtině se odborná literatura čte blbě, takže vše, co umím, mám z Stackoverflow nebo z YT.
CREATE TABLE Intermediary
(
Table_1_ID NUMBER NOT NULL ,
Table_2_ID NUMBER NOT NULL
) ;
ALTER TABLE Intermediary ADD CONSTRAINT Intermediary_PK PRIMARY KEY ( Table_1_ID, Table_2_ID ) ;
CREATE TABLE Table_1
( ID NUMBER NOT NULL
) ;
ALTER TABLE Table_1 ADD CONSTRAINT Table_1_PK PRIMARY KEY ( ID ) ;
CREATE TABLE Table_2
( ID NUMBER NOT NULL
) ;
ALTER TABLE Table_2 ADD CONSTRAINT Table_2_PK PRIMARY KEY ( ID ) ;
ALTER TABLE Intermediary ADD CONSTRAINT Intermediary_Table_1_FK FOREIGN KEY ( Table_1_ID ) REFERENCES Table_1 ( ID ) ;
ALTER TABLE Intermediary ADD CONSTRAINT Intermediary_Table_2_FK FOREIGN KEY ( Table_2_ID ) REFERENCES Table_2 ( ID ) ;
dik ... pri pisani som si to uvedomil
trik je v tom ze relacia neni ukladana pre table1 ale pre intermediary a toto odkazuje na table1 row ktory potrebuje ... samozrejme v intermediary moze byt viac riadkov odkazujucich na ten isty row v table1...
dneska ma taketo riesenie uz napadlo ale ako programatorovy v OOP sa mi to zdalo ako nevhodne riesenie (v prvom rade by table1 mala vediet o svojich vlastnostiach a nie aby bolo nutne prehladavat vsetky vlastnosti ci nahodou niesu priradene pre danu row v table1) ... ale pri selecte v sql je to vlastne jedno
nad vztahmi som rozmyslal uz predtym ale ked som robil len dizajn tak som nerozmyslal nad implementaciou az tak do hlbky
umoznuje vlastne sqlite viacclenne primary key (myslim ze sa volaju zlucene)?
#25 libor
To se nevylučuje. Číselné ID zpravidla potřebuješ při vázání tabulek. Kdybys tam měl jména, bylo by to problematické. A kdybys měl dvě stejná jména, tak bys je neměl jak rozlišit, protože primární klíč musí být jedinečný.
#26 Kit
v com by to bolo problematicke? je absolutne jedno akym sposobom je zadany primarny kluc kym splnuje vlastnosti primarneho kluca (je unikatny v tabulke, je zadany pri vytvarani riadku)
#23 libor
hladat podla mena alebo podla id je uplne to iste ... pri hladani pouzijes SELECT * FROM table WHERE meno=? ... to ci pouzijes ako primarny kluc id alebo meno nehra rolu ... jedine ak pouzijes ako primarny kluc id tak je moznost ze meno sa bude opakovat a teda sa ti vrati viac zaznamov ... ak je moznost vylucit pouzitie ID tak to sprav (3NF) ... dovody preco vytvorit id su kebyze nemas istotu ze kazde meno bude unikatne (samozrejme v tomto pripade ju nemas ale bavime sa teoreticky) alebo by tiez nebolo prijemne ak sa nahodou primarny kluc moze menit v case (neni to vylucene ale malo by sa to stat len vynimocne)
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Dynamicke vytvareni promennych — založil antton
Dynamické vytváření funkcí ??? — založil tonez
Dynamické vs klikací vytváření formů — založil Adam
SQLITE - Úprava MySQL dotazu pro použití v SQLITE — založil Ajtak
Moderátoři diskuze