radac78
14.07.2005, 10:27:25
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.
najprawdopodobniej bedzie trzeba utworzyc wielopolowy klucz unikalny
zanstanow sie dokladnie jak bedzie wygladac Twoj projekt bazy danych
i przedstaw go tutaj...
radac78
14.07.2005, 10:39:09
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 ?
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
14.07.2005, 12:33:43
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
14.07.2005, 12:38:19
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
14.07.2005, 13: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
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
14.07.2005, 13: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.
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
14.07.2005, 13:50:37
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
14.07.2005, 13:58:18
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.