..:: slovenska php stran ::..
uporabniško ime:
geslo:
- napiši
- arhiv
- sveže
- napiši
- arhiv
- Spletni ko...
- MySql Iska...
- Preprosta ...
- PHP - dina...
- Google - i...
- Števec obi...
- PHP - krat...
- PHP in MYS...
- mail skrip...
- prva stran
- izmenjava pasic
- pozabili geslo
Slo-comp
www.matjazev.net
Smrkec.com - Mnogo stvari na enem mestu
Pikslar.com
100si
stran: [1] 2 zadnja stran naslednja stran
gregorb
član

št. sporočil: 23
datum: 26.07.2010 | čas: 00:36

Pozdravljeni,

Zanima me kako mi predlagate postaviti tabelo glede na različne načine plačilnih sistemov.
Hočem vse shranjevati v eno samo tabelo.

Vendar se mi poraja kar nekaj vprašanj.

Imam plačilne sisteme:
- kreditne kartice
- moneybookers
- neteller
- paypal

Namesto, da bi ustvaru vsako tabelo posebej za plačilni sistem, je smiselno vse shranjevat v eno samo tabelo.

Uporabljam MSSQL.

Trenutno imam tabelo tbl_PaymentDetails
in uporabljam samo dva stolpca: AttributeName in Value.

Namesto, da bi ustvaril nov stolpec CreditCardNumber, itd,
vpisujem te podatke v AttributeName, v Value pa shranim vrednosti.

Ne vem kaj mi predlagate, ali, da ustvarim več stolpcev:
CardID CardType CardNumber ExpiryMonth ExpiryYear NameOnCard EmailAddress

Ali je smiselno, da imam samo AttributeName in Value.

Če ustvarim več stolpcev, kot sem navedel zgoraj, je problem, kaj shranim pod CardID, CardType in vse ostale stolpce, razen pod EmailAddress shranim podatek. Vsi ostali stolpci so prazni.

Prosim za pomoč.




Grega
CWIZO
član


št. sporočil: 3297
datum: 26.07.2010 | čas: 09:39

Povej kaj točno moraš sploh shranjevati, ni čisto razvidno iz tvojega posta.
Za key/value pa po vsej verjetnosti ne rabiš relacijske baze.




.:3delavnica.com:.
Another day, another bug
gregorb
član

št. sporočil: 23
datum: 26.07.2010 | čas: 10:31

Podatki za shranjevanje:
CardID CardType CardNumber ExpiryMonth ExpiryYear NameOnCard EmailAddress in verjetno še kaj dodatnega




Grega
CWIZO
član


št. sporočil: 3297
datum: 26.07.2010 | čas: 11:13

To nam nič ne pove.
Kakšno vrsto podatkov bi rad shranjeval? Transakcije, uporabnikove podatke o plačilnih sredstvih, ki jih ima, ... ?




.:3delavnica.com:.
Another day, another bug
gregorb
član

št. sporočil: 23
datum: 26.07.2010 | čas: 11:18

Saj sem napisal plačilne sisteme.
Samo kar je v zvezi s plačilnimi sistemi.
Samo podatke o plačilnih karticah, in e-denarnice.
To je vse.




Grega
CWIZO
član


št. sporočil: 3297
datum: 26.07.2010 | čas: 11:34

Ja različne kartice najbrž lahko združiš v eno tabelo, ker majo več ali manj vse iste podatke (ime, datum veljavnosti, varnostna koda, ...), za paypal pa moneybookers pa najbrž drugo tabelo, ker imaš najbrž druge podatke.


ps: lahko zaupaš za katero e-trgovino to gre? Oz. kako se bo imenovala ko bo izdelana.




.:3delavnica.com:.
Another day, another bug
gregorb
član

št. sporočil: 23
datum: 26.07.2010 | čas: 12:14

Gre za klasično spletno stavnico.

Ne vem eni priporočajo tako drugi tako.

Recimo, če imam stolpec AttributeName, lahko tukaj noter shranim vse podatke o plačilnih sistemih.
Ne bi rad imel 10 tabel, za 10 vrst plačilnih sistemov.
Saj to pravi marsikdo, da je nesmiselno, ker lahko vse podatke spraviš v eno tabelo





Grega
CWIZO
član


št. sporočil: 3297
datum: 26.07.2010 | čas: 12:27

Sej pravim, pogledaš skupne lastnosti različnih sistemov pa jih pogruperaš. Če maš v eni tabeli za en ali dva stolpca prazen podatke še ni tako zlo narobe. Če imaš pa tabelo z 15imi stolpci od tega za večino recordov rabiš samo 2, 3 je pa nekaj narobe v dizajnu.



.:3delavnica.com:.
Another day, another bug
glavic
član

št. sporočil: 500
datum: 26.07.2010 | čas: 15:40

čez cel array en json_encode in shrani v eno polje k naročilu.

sporočilo je spremenil glavic [26.07.2010 ob 15:40]

s-lime
član

št. sporočil: 814
datum: 26.07.2010 | čas: 22:12

glavic, ta nasvet je pa totalno mim.

p.s.: Kratkoročno je mogoče vredu, samo čez čas bo mogče treba delat kake subquerije po tem, + maš nepotreben space overhead... Recimo ko boš rabil vse transakcije z Viso, boš rabil prebrat celo tabelo in potem filtirat s PHP, namesto da bi to prepustil algoritmom ki jih ima MySQL.


sporočilo je spremenil s-lime [26.07.2010 ob 22:20]

fatg
član

št. sporočil: 1695
datum: 27.07.2010 | čas: 10:38

meni se ne zdi slab predlog. V posamezna polja daš razne čase, stanje plačila, znesek, tip, plačilni sistem (visa, moneta, ...), skratka vse skupne podatke, ostalo pa vržeš v json polje. Če kdaj kaj posebej potrebuješ, pa narediš skripto, ki se sprehodi po bazi, dekodira json in poišče še znotraj tega. Normalizacija baze je v nekaterih primerih overrated. :)



you\'re never too fat to do it
glavic
član

št. sporočil: 500
datum: 28.07.2010 | čas: 08:04

jaz te podatke shranjujem tako ker jih trenutno ne rabim. rabim vedeti samo ali je bilo plačano ali ne, in to je že svoje polje v tabeli. ostalo ni važno in shranim samo kot log v json array.
če bom kdaj potreboval kakšen dodaten podatek, bom naredil novo polje, in se sprehodil čez bazo in prepisal, kot je to omenil fatg.




s-lime
član

št. sporočil: 814
datum: 30.07.2010 | čas: 18:08

Ok, fatg je predlagal kombinacijo zgornjega in tega kar je glavic predlagal, to bi mogoče bilo sprejemljivo. Ne glede na to, se to men zdi tak "dirty" način.

Če bi blo res tko da bi blo zelo malo skupnih polj, bi jaz dal dodatno tabelo ala:

id: INT
id_transakcije: INT
key: ENUM(CardID, CardType, CardNumber, ExpiryMonth);
value: varchar

Ni popolno, amapak bi šlo. Slabost je da porabiš dodatne byte za idje (pa vseeno manj kot z json_encode), pa da morejo bit vsi valui istega tipa (varchar v tem primeru), je pa boljša opcija za delat subquerije potem.




gregorb
član

št. sporočil: 23
datum: 30.07.2010 | čas: 19:06

Torej na kratko uporabil bi eno tabelo in naredil tako:
UserId | CardId | Credit card number | Credit on name | Email

78432    3333     432784278432789    jjifdsiasjiojiod      NULL

Ker želim vse plačilne sisteme shranjevati v eno tabelo, je v primeru, da je shranjena samo kreditna kartica, Polje Email NULL?

Ali je to smiselno?




Grega
s-lime
član

št. sporočil: 814
datum: 30.07.2010 | čas: 19:22

Ja zaenkrat je smiselno, zna pa se zaplesti v prihodnje, če boš hotel dodat kako novo plačilno sredstvo, ki bo imelo ena čist x polja.



gregorb
član

št. sporočil: 23
datum: 30.07.2010 | čas: 19:53

hm imaš prav, v tem primeru se pa zna zapletat. Glede na to, da je velika verjetnost, da bom dodajal plačilne sisteme, je to izredno riskantno.

Trenutno samo za test imam takole:
UserId
CardId
AttributeName
Value


To pomeni, da v AttributeName dam ime Credit card number, credit on name, itd...

V Value pa napišem tako credit card number, credit on name...

Trenutno izgleda tako:
Attribute name | Value
Credit card num  11111111111111111
Credit on name   dasjiidoaios
Paypal                 dioasdauios@gmail.com
Moneybookers    iodasjiodioas@gmail.com

Kaj pa tak način je smiseln?

Malo problemov imam s pridobivanjem podatkov, vendar se to da uredit.
Tukaj mislim, da če dodam še 100 različnih sistemov ne bo problema, ker se tako ali tako vse zapiše v eno samo polje.










Grega
s-lime
član

št. sporočil: 814
datum: 30.07.2010 | čas: 22:54

Ne razumem te čist 100%... Če delaš tako kot jst mislim, potem se ti user_id pa card_id ponavlja. Jaz bi tako organiziral bazo:

1. tabela: USERS
id_user (PRIMARNI KLJUČ), ostalo...

2. tabela: TRANSACTIONS
id_transaction (PRIMARNI KLJUČ), id_user (TUJI KLJUČ), vrednost (+/-), nacin = ENUM(PayPal, Visa, ...)

3. tabela: TRANSACTION_DATA
id (PRIMARNI KLJUČ), id_transaction (TUJI KLJUČ), key = ENUM(CardID, CardType, CardNumber, ExpiryMonth, ...), value

V tretji tabeli mej ključ kot enume, če boš imel stringe bo lahko prišlo do napak, pa še joini bodo hitrejši.
Na tak način organiziranja baze, boš vedno lahko naredil join in potem iskal po tretji tabeli WHERE key="CardNumber" AND value="893472934", imaš pa tudi fleksibilno dodajanje parametrov.

Poljubno lahko daš skupi 2 in tretjo tabelo, sam potem se ti podvaja id_user na vsakem ključu, kar pa ni dobro. Poljubno lahko vn daš tud primarni ključ tretje tabele.

Glede na tvoje potrebe bi jaz tako naredil.


sporočilo je spremenil s-lime [30.07.2010 ob 22:57]

gregorb
član

št. sporočil: 23
datum: 30.07.2010 | čas: 23:21

Kam pa shranim mail od paypala?

V 3 tabelo?

Če sem te razumu bi ti naredu tako:

1. tabela: USERS
UserId | FirstName
148        Gregor
904
111

2. tabela: TRANSACTIONS
UserId | PaymentMethod
148        Visa


3. tabela: TRANSACTION_DATA
UserId | AttributeName                 | Value
148        Credit card number            111111111111111111
148        Number on card                  111111111111111111
148        Moneybookers                      dashdahsuid@gmail.com
148        PayPal                                   4324732747892@gmail.com


Pol pa če hočeš dobit podatek kličeš where UserId=148

Pa pol dodaš samo še polje CardId

Imam prav?


Potem pa moraš v četrto tabelo transactions spravit vse kar je vezano z računom.

tbl_transactions zgleda takole:
- UserId
- Transaction
- Amount


Tu pa nato določim Amount = numeric.

Povej, če imam prav, če ne me popravi.

Hvala!








Grega
gregorb
član

št. sporočil: 23
datum: 31.07.2010 | čas: 01:13

in kako boš pa v dropdownlist nafilal podatke
VISA 74326463243 5/10 ? Če uporabljaš 3 tabele kot si rekel.
Verjetno z JOIN?

ko boš utegnu povej še za prejšnji odgovor.


sporočilo je spremenil gregorb [31.07.2010 ob 01:15]

Grega
s-lime
član

št. sporočil: 814
datum: 31.07.2010 | čas: 11:11

Ne vem česa ne razumeš. Primer tabel

USERS
id, ime
1, janez
2, miha
3, kekec

TRANSACTIONS
id_transaction, id_user, vrednost, nacin
1, 1, +30 evrov, PayPal
2, 1, -15 evrov;, Visa
3, 2, 10 evrov, Mastercard

TRANSACTION_DATA
id, id_transaction, key, value
1, 1, EmailOdPayPala, fdsfs@fdfd.com
2, 1, NekiDruzgaOdPayPala, xxx
3, 2, NekiOdVise, xxx
4, 2, ŠeNEekiodVise, xxx
4, 3, NekiOdMastercarda, xxx
5, ...
...

Razumeš to? Sam da ti pač ni treba met odVise, ampak maš enostavno CardNumber, pa lahko to polje ponucaš pr vseh karticah.

V danem primeru ma janez 2 transakciji, miha eno, kekec pa nobene, vsaka transakcija ma svoj način plačila, vsak način plačila ma pa svoje parametre.


sporočilo je spremenil s-lime [31.07.2010 ob 11:13]

stran: [1] 2 zadnja stran naslednja stran
stran je še vedno v izdelavi zato nekatere stvari manjkajo oz. niso dokončane
forum -
teme zadnjih 24h -
iskanje -
statistika -
pravila -
Ali ste veseli nove ankete?

Itak!
Ne!
Anketa?

0.0170199871063
Število obiskov od 19.julija 2002: 1.283.130
php-si.com ne odgovarja za prispevke članov.
Copyright © 2002 php-si.com. Vse pravice pridržane