Autor | Zpráva | ||
---|---|---|---|
matak Profil |
#1 · Zasláno: 6. 10. 2011, 08:50:01
Prostě položka nabývá stavů
objednáno, dodáno, ok, potvrzeno, nebo částečné plnění objednáno i přijato, dodáno i potvrzeno atd. jak by jste řešili takový zápis v dtb? NAPADÁ mne bitový součet? |
||
nightfish_ Profil * |
#2 · Zasláno: 6. 10. 2011, 08:51:18
ENUM?
|
||
matak Profil |
#3 · Zasláno: 6. 10. 2011, 09:06:06
nj ale to je strašně moc kombinací, navíc systém se kterým synchronizuji používá text ve tvaru: potvrzeno OBJEDNÁNO DODÁNO jako že položka má tři tvary a já tento stav potřebuji porovnávat s mysql a porovnat třeba 50000 řádků, což vůbec nevím jak bych dělal, nějakou funkcí? která rozloží string a hlavně to nepůjde porovnat, lépe by se mi porovnávali čísla vyjadřující stav, navíc je těžké u ENUM porovnat něco, kde to může být prohozeno OBJEDNÁNO DODÁNO potvrzeno
|
||
_es Profil |
#4 · Zasláno: 6. 10. 2011, 09:12:52
matak:
Lepšie je rozdeliť tú položku na niekoľko jednoduchých položiek. A spraviť zapisovanie do databázy tak, aby v tom bol nejaký rozumný systém. |
||
okolojdouci Profil * |
#5 · Zasláno: 6. 10. 2011, 09:20:52
1. tabulka - polozky: ID
2. tabulka - stavy: ID, nazev 3. tabulka - polozky_stavy: ID, IDpolozky, IDstavu, cas (, IDosoby, která stav nastavila, atd) |
||
matak Profil |
#6 · Zasláno: 6. 10. 2011, 09:32:18
nj ale ten druhy system se kterym synchronizuju a se kterym porovnavam tak pouziva textove pole, tam zasahovat nemuzu
|
||
Joker Profil |
#7 · Zasláno: 6. 10. 2011, 10:15:15
matak:
Přece pokud to jde rozdělit na ty jednotlivé stavy aby šly uložit do jednoho sloupce, půjde to uložit i do více sloupců. |
||
matak Profil |
#8 · Zasláno: 6. 10. 2011, 10:21:40
hm a jak porovnáte 50000 záznamů v obou databázích? jedna databáze ukládá textově ve sledu a druhá N:M v tabulkách
|
||
_es Profil |
#9 · Zasláno: 6. 10. 2011, 10:42:13
matak:
„jedna databáze ukládá textově ve sledu“ Nemusíš ten stav ukladať textovo, stačia tri binárne stĺpce na to, či je položka: objednaná, dodaná, potvrdená. |
||
Joker Profil |
#10 · Zasláno: 6. 10. 2011, 10:43:11
matak:
„a jak porovnáte 50000 záznamů v obou databázích?“ To bude problém v každém případě, kvůli špatnému návrhu té první tabulky. Jestli jsem to teda dobře pochopil, tak v první tabulce může být „objednáno potvrzeno dodáno“, „objednáno dodáno potvrzeno“, atd. a je to stejný stav. Ale šlo by použít ENUM a nějakou konverzní tabulku, která by všem ekvivalentním stavům přiřadila správnou hodnotu z ENUM (tj. třeba "objednáno potvrzeno dodáno", "potvrzeno objednáno dodáno" atd. by ve druhém sloupci mělo správnou hodnotu z ENUM). |
||
_es Profil |
#11 · Zasláno: 6. 10. 2011, 10:46:48
Joker:
„Ale šlo by použít ENUM a nějakou konverzní tabulku“ Tri binárne stĺpce sú jednoduchšie. Napríklad sa z nich dá ľahšie zostrojiť dotaz: „Všetky objednané položky, ktoré ešte neboli potvrdené“ a pod. |
||
matak Profil |
#12 · Zasláno: 6. 10. 2011, 10:59:39
nj ale jak to uděláte aby byly nějaké tři sloupce? vzdyt povídám, že je to úplně jiná databáze, to chcete jako udělat kešovací sloupec a při každém requestu, což může být jednou za minutu tak přepočítávát desítky tisíc záznamů ?
|
||
Joker Profil |
#13 · Zasláno: 6. 10. 2011, 11:00:20
_es:
Pravda, že na ty rozdělené sloupce se taky dá udělat konverzní tabulka. Na druhou stranu zas budou složitější dotazy na konkrétní stav, tak záleží na situaci. |
||
Časová prodleva: 13 let
|
0