Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Produkty - powiazania., Jak uniknąć redundancji?
anas
post 22.10.2004, 14:32:25
Post #1





Grupa: Zarejestrowani
Postów: 172
Pomógł: 0
Dołączył: 22.09.2002
Skąd: Gorzów Wlkp

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
dag
post 22.10.2004, 15:48:24
Post #2





Grupa: Zarejestrowani
Postów: 180
Pomógł: 0
Dołączył: 24.12.2003

Ostrzeżenie: (0%)
-----


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 ;-)

Ten post edytował dag 22.10.2004, 15:51:59


--------------------

------------------------------------------------------------------------------------------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 01:47