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
 
 » g5mark 17:03
 » XepeR 17:03
 » Dexter 16:58
 » DJopek 16:53
 » NimnuL 16:51
 » KHot 16:47
 » AfiP 16:45
 » NWN 16:45
 » Kenny 16:40
 » Magnus 16:37
 » Saszkin 16:36
 » elliot_pl 16:31
 » Artaa 16:30
 » Sherif 16:30
 » soyo 16:30
 » hokr 16:17
 » PaKu 16:14
 » Tomasz 16:08
 » myszon 16:08
 » exmac 15:54

 Dzisiaj przeczytano
 41118 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