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
 
 » steve 09:37
 » ARTi 09:33
 » Nazgul 09:29
 » rrafaell 09:29
 » myszon 09:28
 » braveh 09:28
 » jablo 09:26
 » Kenny 09:23
 » rooter666 09:21
 » kicior 09:19
 » Demo 09:19
 » Sherif 09:16
 » NimnuL 09:16
 » rurecznik 09:16
 » Robak 09:14
 » Ament 09:07
 » Lucyferiu 09:04
 » Wedrowiec 09:04
 » Tomasz 08:55
 » emigrus 08:55

 Dzisiaj przeczytano
 41135 postów,
 wczoraj 25974

 Szybkie ładowanie
 jest:
włą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