Twoje PC  
Zarejestruj się na Twoje PC
TwojePC.pl | PC | Komputery, nowe technologie, recenzje, testy
B O A R D
   » Board
 » Zadaj pytanie
 » Archiwum
 » Szukaj
 » Stylizacja

 
M E N U
  0
 » Nowości
0
 » Archiwum
0
 » Recenzje / Testy
0
 » Board
0
 » Rejestracja
0
0
 
Szukaj @ TwojePC
 

w Newsach i na Boardzie
 
OBECNI NA TPC
 
 » mo2 07:47
 » exmac 07:44
 » Blum 07:42
 » Zbyl 07:41
 » Logic-3 07:41
 » DYD 07:33
 » Ramen 07:31
 » leosh 07:31
 » Kelso1 07:29
 » m&m 07:28
 » Glock19 07:26
 » steve 07:20
 » rad 07:17
 » dugi 07:15
 » mark_d 07:10
 » Adolph 07:04
 » @GUTEK@ 07:03
 » AfiP 06:58
 » infinity 06:57
 » buddookan 06:57

 Dzisiaj przeczytano
 13812 postów,
 wczoraj 40350

 Szybkie ładowanie
 jest:
wyłączone.

 
ccc
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

  1. 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-a

    Nie jestem facetem na jedną noc.
    Aż tyle czasu to ja nie mam...

    1. 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...

  2. 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ól

    Zmień swój podpis na Boardzie
    maks 100 znaków, 3 linie,
    zabroniony spam oraz reklama

    1. 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ęści

      Zmień swój podpis na Boardzie
      maks 100 znaków, 3 linie,
      zabroniony spam oraz reklama

      1. 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"

      2. 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...

        1. 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