Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Produkty - powiazania.
Forum PHP.pl > Forum > Bazy danych > MySQL
anas
Witam.

Mam problem natury teoretycznej. Jak rozwiazac nastepujacy problem:

- Jest w pewnej bazie tabela ktora reprezentuje produkty o np. takiej strukturze:

- ProduktID
- GrupaTowarowaID
- Nazwa
- itd...

i teraz miedzy produktami moze zajsc relacja taka ze - jeden produkt powiazany jest z wieloma innymi, ale inny produkt moze byc powiazany rowniez w wieloma innymi rowniez z pierwszym produktem ktory ma juz powiazania:

ja rozwiazanie widze w stworzeniu tabeli ktora bedzie przechowywala klucze produktow ktore sie ze soba wiaza:

Przykladowa struktuta takiej tabeli:

- ProduktID
- ProduktID2

i teraz jak mamy jakies produkty to bedzie to wygladalo tak

ProduktID | ProduktID2

1 | 2
1 | 3
1 | 4
1 | 5
1 | 15
15 | 1
15 | 2
15 | 3
2 | 1
2 | 15

I juz widzimy ze 1 polaczone jest z 15, a pozniej 15 z 1 -> i tutaj juz mamy redundancje danych - za to produkt o ID = 2 polaczony jest z produktami o ID = 1 i 15 gdzie wyzej 15 i 1 byla juz polaczona z 2... Jak uniknac tego problemu?

Z gory dzieki za kazda podpowiedz.

Ps. Sprawdzanie czy cos juz jest w jednej ze stron powiazania nie wchodzi w gre - chyba ze na poziomie bazy danych w jakis prosty i optymalny sposob - tak zeby szybko dalo sie wyciagnac dane np. w taki sposob:

  1. SELECT Wartosc AS ProduktONumerze, produktID2 AS PowiązanyZ FROM powiazania WHERE produktID = wartosc


Pozdrawiam

anas
dag
Spróbuj wszystko w jednej tabeli:

- ProduktID
- GrupaTowarowaID
- Nazwa
- Powiązanie ( ProduktID2, ProdukktID5, itd )

np. tabela wypełniona danymi:

  1. <?php
  2.  
  3. //rekord 1
  4. ProduktID = 1
  5. //... //
  6. Powiazanie = 2,5,7
  7.  
  8. //rekord 2
  9. ProdouktID = 2
  10. // ... //
  11. Powiazanie = 3,15
  12.  
  13. ?>



Tworzysz rejestr zaladowanych produktów.

Pobierasz ProduktID = 1, s a następnie powiazane do niego produkty, czyli dzielisz Powiazanie na tablice (np. explode( ',', $Powiazanie)).

Sprawdzasz w rejestrze czy produkt był juz pobrany, jeśli nie był jeszcze załadowany to go ładujesz, a jeśli był to przechodzisz dalej czyli robisz od nowa, pobierasz ProduktID = $Powiazanie[1]... aż dotąd gdy nie będzie już produktów do pobrania.

Nie wiem czy to dobre rozwiązanie, ale napewno coś sam wymyślisz ;-)
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.