Autor | Zpráva | ||
---|---|---|---|
Monty Profil * |
#1 · Zasláno: 30. 1. 2008, 20:42:11
Zdravim,
planujem teraz robit posielanie posty medzi uzivatelmi, teda kazdy uzivatel moze niekomu napisat, moze dostat, moze ju vymazat, ale moze napisat rozpisanu, teda su 4 urovne 1- dorucena 2- odoslana 3- rozpisana 4- v kosi Tabulka by mala vyzerat: ID, ID_POSIELA, ID_DOSTAL, PREDMET, SPRAVA, DATUM, PRECITAL, UROVEN Ale chcel by som aby ste mi poradilo rozumne riesenie ako to spravit 'co najlepsie'. Problem je to, ze ako spravit aby spravu videl aj ten co ju dostal a aj ten co ju poslal, resp musi byt zadana asi 2x, pretoze ked ju jeden z nich vymaze aby bola k dispozicii tomu druhemu. Alebo 2 tabulky? Poradite? Urcite ste nieco taketo robili a vyznate sa. Dakujem velmi pekne. |
||
Kajman_ Profil * |
#2 · Zasláno: 30. 1. 2008, 20:58:50
Pokud chcete jednu zprávu v systému, tak ty pro úroveň potřebujete dva sloupečky... jeden z pohledu odesílatele a jeden z pohledu příjemce.
|
||
Monty Profil * |
#3 · Zasláno: 30. 1. 2008, 22:25:55
no a teda ake bunky by mala obsahovat tabulka?
|
||
Kajman_ Profil * |
#4 · Zasláno: 31. 1. 2008, 09:46:58
Místo uroven by mohlo být uroven_z_pohledu_odesilatele a uroven_z_pohledu_prijemce.
|
||
Mastodont Profil |
#5 · Zasláno: 31. 1. 2008, 10:53:42
Kajman_
Proč by pro tu úroveň potřeboval dva sloupečky?? Doručená a odeslaná se dá jasně odvodit z ID_POSIELA, ID_DOSTAL, rozepsanou poštu ten druhý vůbec neuvidí (nesmí vidět!) a koš nemá vůbec vliv. Došlá pošta - select ... where ID_DOSTAL = mojeID and UROVEN <> "kos" OR UROVEN <> "koncept" Odeslaná pošta - select ... where ID_POSIELA = mojeID and UROVEN <> "kos" OR UROVEN <> "koncept" Rozepsaná - select ... where ID_DOSTAL = mojeID and UROVEN = "koncept" Asi tak nějak by to mělo být. |
||
Kajman_ Profil * |
#6 · Zasláno: 31. 1. 2008, 11:15:15
Protože, když ji příjemce dá do koše, tak se do koše dá i odesílateli.
|
||
tiso Profil |
#7 · Zasláno: 31. 1. 2008, 11:18:25 · Upravil/a: tiso
Mastodont - v tom poslednom má byť miesto ID_DOSTAL ID_POSIELA
Pokiaľ sa tá pošta zorazuje len z DB stačia 3 statusy - koš, koncept, odoslaná (pre doručenú i odoslanú poštu) edit: miesto dvoch stĺpcov sa dá použiť jeden a status koš rozdeliť na kos_odosielatel, kos_prijimatel a kos_obaja |
||
Mastodont Profil |
#8 · Zasláno: 31. 1. 2008, 11:42:44 · Upravil/a: Mastodont
Kajman_
Protože, když ji příjemce dá do koše, tak se do koše dá i odesílateli. To je ovšem silně nežádoucí chování. tiso Ano, díky. Ve stavu by se daly používat bitové příznaky, pak stačí jeden sloupec. |
||
koma Profil * |
#9 · Zasláno: 31. 1. 2008, 12:07:58
posta: ID,PREDMET, SPRAVA, DATUM
prepojovaica ID_USER,ID_POSTA,UROVEN(1- dorucena,1a-precitana,2- odoslana,3- rozpisana,4- v kosi ) |
||
Aleš Janda Profil |
#10 · Zasláno: 31. 1. 2008, 12:14:51
Pracovat s jedním řádkem v tabulce ve dvou významech je cesta do pekel. Některé situace by mohly být blbě řešitelné - např. uživatel by si poslal zprávu sám sobě a obě zprávy by pak přesunul do koše; tam by byla dvakrát, podle čeho by se pak daly jednoznačně od sebe odlišit? Nebo co kdybys chtěl v budoucnu více příjemců?
Vřele doporučuju 1) Při poslání brát příchozí zprávu jako úplně novou zprávu, čili ji zkopírovat. To je ale možná méně elegantní řešení 2) Udělat další tabulku "zpravy_ve_slozkach", ve které by bylo nějaké interní id_uzivatele, id_zpravy, precetl, uroven. To id_zpravy by se odkazovalo do té globální tabulky se zprávami. Z globální tabulky by se zprávy vymazaly po odstranění všech řádků na ni odkazujících. |
||
Časová prodleva: 16 let
|
0