Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zabezpieczenie przed ponownym dodaniem
Forum PHP.pl > Forum > Bazy danych
radac78
Witam
Buduje baze do ktorej przez formularz na stronie kazdy uzytkownik moze dodac swoj "obiekt" (pola z nazwa obiektu, adres, itp.) na 30 dni (pozniej obiekt zostaje zablokowany - tj. nie wyswietla sie w bazie obiektow). Uzytkownik moze dodac kilka swoic obiektow ale chce zabezpieczyc przed ponownym dodaniem tych samych obiektow po tych 30 dniach. Nie wiem na podstawie jakiego pola (co porownywac) to zrobic. Przeciez moze byc duzo obiektow o tym samym adresie lub nazwie wiec te pola odpadaja.... bede wdzieczny za jakiekolwiek wskazowki.
mhs
najprawdopodobniej bedzie trzeba utworzyc wielopolowy klucz unikalny
zanstanow sie dokladnie jak bedzie wygladac Twoj projekt bazy danych
i przedstaw go tutaj...
radac78
Zastanawiale sie tez nad porownywaniem wielu pol ale przeciez wystarczy jak ktos np. w nazwie zmini jedna literke to dla bazy bedzie juz inny obiekt, a defakto to ten sam ...

Projekt bazy, wystarczy mysle 2 tabele (1wsza z danymi klienta - tylko dla mojej wiadomosci, 2ga z danymi obiektu - dostepna na www)

Tabela1
KlientID - klucz podstawowy (autoincrement) i kolejne pola jak imie, nazwisko, mail ...

Tabela2
ObiektID - klucz podstawowy, KlientID (powiazany z Tab1), NazwaObiektu, Adres, mail, tel, TypObiektu ...

Czy taki mini projekt wystarczy ?
mhs
a co to jest "Tabela1" oraz "Tabela2" - tak bedziesz nazywal tabele w projekcie bazy danych??

za bardzo to nie wiem co ty chcesz przechowywac w swojej bazie danych

zastanow sie dokladnie jakie dane bedziesz zbieral (nie rzucaj kilkoma przykladami tylko zbierz wszystkie dane) i nastepnie zabierz sie do projektu, dodaj do projektu pola z datami (np. data dodania Twojego obiektu)
a unikalne pola same przyjda... aczkolwiek byc moze bedzie trzeba stworzyc jakies sztuczne klucze
radac78
Tabela1 - to dane klienta a Tabela2 to dane obiektow - rowniedobrze mozna je nazwac "Klienci" i "Obiekty" ale to chyba nie jest najwazniejsze.
Oczywiscie w Tabeli Obiektow bedzie pole z data dodania (pobieranie daty oczywiscie z serwera w momencie dodawania). Wydaje mi sie jednk ze nie to jest tutaj najwazniejsze (oczywiscie moze sie myle).
Czyli:

Klienci:
Imie, Nazwisko, Mail, Tel, Kod, Miasto, Ul., DataDod.

Obiekty:
Miasto, TypOb., Ul., Kod, Tel., Mail, WWW, Opis.

W obydwu Tabelach wystepuja pola przechowujace np. mail - ale to dlatego, ze tab klientow zawiera informacje tylko dla mnie, natomiast tab. obiektow prezentuje informacje wyswietlane na stronie.

Mysle ze to wystarczy do opisania sedna sprawy. 30 dni oczywiscie sprawdze na podstawie daty dodania wpisu tyle, ze tak jak juz wspominalem ... jak zabezpieczyc przed ponownym dodaniem.
Jeszcze raz dzieki za pomoc
SongoQ
Na poziomie bazy danych no to nie ma innego wyjscia jak wstawienie klucza, a po stronie php obsluga do sprawdzania czy dany user / obiekt istnieje.
radac78
Tyle to wiadomo, chodzi o to w jaki sposob to zrobic.
Bo przeciez 1 klient ma prawo dodac kilka swoich obiektow (oby wlasnie nie tych samych). Jednak porownujac obiekty tak naprawde kazde pole mozna zmienic na tyle ze bedzie wygladalo jaki inny, nowy obiekt a defakto bedzie to ten sam. np. obiekt o nazwie "Kasia" bedzie inny dla porownania niż o nazwie "Kasia - cos tam" jednak defakto moze to byc ten sam. Pytam dlatego czy jest jakac metoda aby to zabezpieczyc
mhs
Cytat(radac78 @ 2005-07-14 14:11:08)
Tyle to wiadomo, chodzi o to w jaki sposob to zrobic.
Bo przeciez 1 klient ma prawo dodac kilka swoich obiektow (oby wlasnie nie tych samych). Jednak porownujac obiekty tak naprawde kazde pole mozna zmienic na tyle ze bedzie wygladalo jaki inny, nowy obiekt a defakto bedzie to ten sam. np. obiekt o nazwie "Kasia" bedzie inny dla porownania niż o nazwie "Kasia - cos tam" jednak defakto moze to byc ten sam. Pytam dlatego czy jest jakac metoda aby to zabezpieczyc

A czy potrafisz dla tych obiektow powiedziec co jednoznacznie dane obiekty moze identyfikowac?

bo jak dla mnie:

Kod
Klient_ID |    wlasciwosc a     |  wlasciwosc b    | wlasciwosc  c |

1             |            asdf         |       qwerty        |      jkl;         |
1             |             asdf    1  |         qwerty      |      jkl;         |
1             |           asdf 2       |         qwerty      |      jkl;         |


//gdzie Klient_ID to klucz obcy


te 3 wiersze sa rozne ze wzgledu na wlasciwosc a i teraz udownij mi ze tak nie bedzie w Twoim przypadku...
radac78
... i własnie chodzi o to, że w tym przypadku nie ma pola w tabeli, ktore jednoznacznie je zidentyfikuje a co za tym idzie wyeliminuje dodanie takiego samego (jak w Twoim przykladzie wystarczy dodac jeden znak i porownywanie zawartosci pola bierze w leb).
Dlatego napisalem ten watek - czy jest jakis pomysl na jednoznaczne zidentyfikowanie obiektu, jezeli w zasadzie nie ma pola ktore je jednoznacznie opisze.
mhs
Cytat(radac78 @ 2005-07-14 14:40:33)
... i własnie chodzi o to, że w tym przypadku nie ma pola w tabeli, ktore jednoznacznie je zidentyfikuje a co za tym idzie wyeliminuje dodanie takiego samego (jak w Twoim przykladzie wystarczy dodac jeden znak i porownywanie zawartosci pola bierze w leb).
Dlatego napisalem ten watek - czy jest jakis pomysl na jednoznaczne zidentyfikowanie obiektu, jezeli w zasadzie nie ma pola ktore je jednoznacznie opisze.

wiec wlasnie...

musisz stworzyc (jezeli nie chcesz/mozesz wykorzystac klucza glownego danej tabeli) sztuczny klucz (niech takim przykladem bedzie nip, pesel, jakies id karty czy cos takiego) i wowczas bedziesz mial pole z unikalna wartoscia...

przeciez zaden obiekt (pomijajac duplikaty) nie jest taki sam - musza sie czyms roznic.. jezeli sie czyms roznia to sa to dwa wowczas rozne obiekty... natomiast jezeli bedzie twierdzil ze


Kod
id |   imie   | nazwisko
==============
?  | asdf     | jkl;
?  | asdf     | jkl;


to te same obiekty to napisz mi dlaczego sa to identyczne pozycje
nospor
jeżeli nie ma pola , któe jednoznacznie opisze obiekt, to pozostaje jedynie zaufać użytkownikowi. Jeżeli on mówi że jest to inny obiekt, znaczy że jest i basta.
radac78
tak tez podejzewalem, tyle ze chcialem sie upewnic (ludzilem sie ze jest jakas metoda ...)
Dzieki all za pomoc
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.