TwojePC.pl © 2001 - 2024
|
|
A R C H I W A L N A W I A D O M O Ś Ć |
|
|
|
[mysql] Sposób na uniknięcie dublowanych wpisów do bazy , kubazzz 4/05/09 13:57 Zakładając, że mamy bazę z tabelą o takiej strukturze:
ID - typ towaru - producent - kategoria - cena
Zadne pole nie moze byc samo w sobie unique bo sa rozne towary tego samego producenta, tej samej kategorii albo z ta sama cena.
Nie ma tez jednoznaczego parametru przypisanego dla kazdego towaru, takiego jak kod produktu.
Zeby uniknac zdublowanych wpisow to wymyslilem cos takiego:
biore typ towaru+kategoria+producent i robie hash z tego, ktory bedzie trzymany w dodatkowym polu w tabeli, o nazwie hash ;)
i to pole bedzie unique.
pytanie teraz - czy mozna to prosciej zrobic, na poziome silnika mysql?SM-S908 - można , KwiateK 4/05/09 14:06
możesz założyć, że wszystkie kolumny tabeli są kluczem głównym
http://74.125.77.132/...gl=pl&client=firefox-aNie jestem facetem na jedną noc.
Aż tyle czasu to ja nie mam... - można też nie robić z tego klucza głównego , Jolo 4/05/09 14:14
a jedynie stworzyć unikalny indeks na wybranych kolumnach.jest tak nudno, że zaczyna to być
ciekawe...
- Odpalić PHPMyadmina , Norton 4/05/09 14:50
zaznaczyć np 3 pola które mają być unikalne (3 jednocześnie a nie każde po kolei).
Kliknąć w U pod tabelą
zostanie dodany unikalny klucz z połączenia tych 3 pólZmień swój podpis na Boardzie
maks 100 znaków, 3 linie,
zabroniony spam oraz reklama - a tak na marginesie to po co hasze , Norton 4/05/09 14:50
jest przecież concat który można łączyć dowolne pola w jeden ciąg który z łatwością można porównywać w całości lub częściZmień swój podpis na Boardzie
maks 100 znaków, 3 linie,
zabroniony spam oraz reklama - oj niezawsze to dobre rozwiazanie , Deus ex machine 4/05/09 15:35
.) jak masz naprawde pierd.. baze to lepiej tak nie robic"Uti non Abuti" - to chyba nie rozwiazuje problemu , KwiateK 4/05/09 18:10
jesli masz dwa rekordy:
Typ towaru: AB
Producent: CDE
oraz
Typ towaru: ABC
Producent: DE
to konkatenacja jest taka sama. ;)Nie jestem facetem na jedną noc.
Aż tyle czasu to ja nie mam... - jeszcze trzeba określić znak lub ciąg separatora, który nie wystąpi w danych naturalnych , bwana 4/05/09 18:35
pomysł z hashem pewnie miał zapewnić to, by długie "sklejki" nie zajmowały zbyt wiele miejsca. moim zdaniem poza tą niewątpliwą zaletą (oszczędność storage) rozwiązanie to ma dwie wady:
- wydajność (obliczanie hasha trwa),
- niejednoznaczność (a nuż trafią się kombinacje o tym samym hashu?).
Sposób jest prosty. To co ma być unikalne, niech będzie unikalne. Słowem constraint unique na wszystkie trzy kolumny. Jeden na trzy kolumny, nie trzy oddzielne każdy po jednej. Nie wyważajmy otwartych drzwi."you don't need your smile when I cut
your throat"
|
|
|
|
|
All rights reserved ® Copyright and Design 2001-2024, TwojePC.PL |
|
|
|
|