Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Nowa baza danych
Forum PHP.pl > Forum > Bazy danych > MySQL
arkadi26
Witam serdecznie. Spedzilem na tym forum przegladajac dlugo posty w poszukiwaniu odpowiedzi na moj problem. No i nie znalazlem odpowiedzi.

Wiec czego moj problem dotyczy. Postanowilem przebudowac strone na ktorej znajduje sie dosc duzo artykulow (nie jest to sklep internetowy). W zwiazku z tym ze zaszla potrzeba z poziomu przegladarki dodawania nowym produktow postanowilem zaciagnac do tego MySql.
Stanalem na etapie projektowania bazy MySQL, (tak dla info: posiadam konto na home.pl buisness server. Mam tam phpMyAdmin i ostatno przesiadli sie na najnowsze wersje mysql i php.)

Strukture tego wszystkiego tak mniej wiecej sobie wyobrazam. Na stronie glownej bedzie menu (zrobione na podstawie bazy) oraz wybor kategorii.
Kategorie glowne (dla przykladu): TV, ODTW. DVD, Glosniki, itp.
Podkategorie: TV plazmowe, ....
odt. dvd, cd, .....
glosniki centralne, efektowe, ....
aparaty cyfrowe, analogowe .....
W kazdej z tych kategorii oczywiscie bedzie sie znajdowala firma: (np.smile.gif mojafirma, mojafirma2, jakasfirma3, itd,...
Kazdy produkt bedzie opisany jak ponizej:

zdjecie :: krotki opis :: dlugi opis (max 255 znakow) :: ikonki do downloadu (pdf, doc, txt)

wszystko to bedzie w bazie (zdjecia nie sa za duze wiec mysle ze sie nie zrobi z niej wielki i ociezaly kolos - chyba ze jakies inne sugestie, moze same linki ...)

To sa zalozenia.

W phpMyAdmin zalozylem baze danych.
Utworzylem trzy tabele.

tabela kategorie:
idkat int unsigned not null auto_increment primary key
nazwakat char(40) not null

tabela pod_kategorie:
idpod_kat char(13) not null primary key,
idkat int unsigned,
nazwa_pod char(30) not null

produkt:
idproduktu int unsigned not null auto_increment primary key
idkat int unsigned
idpod_kat int unsigned
obrazek char(30)
tytul char(100) not null
opis char (255)
down char(20) -- tu beda ikony do plikow [pdf, doc, txt]

Powiedzmy ze jeszcze admin do logowania sie w celu dodawania materialu na strone.

No i teraz panowie i panie, powiedzcie mi jak ja mam te relacje utworzyc. Niestety w phpMyAdmin nie mam takiej opcji na home.pl.
Bardzo bym jeszcze prosil o sugestie czy stworzone powyzej tabele sa w miare poprawne i jak najlepiej tu ustawic relacje (wiele do wiele).

Nie prosze o gotowe rozwiazania, bo ciagle "szperam w poszukiwaniu rozwiazan" tylko o jakies sensowne sugestie, pomoc typu "wywal to, dodaj to, ja bym tak to zrobil...."

Bardzo dziekuje za wszelkiego rodzaju pomoc.

Pozdrawiam serdecznie.

Arek.
Cienki1980
Takich kilka uwag ode mnie.
Tabela pod_kategorie:
idpod_kat zrób polem int not null auto_increment

Tabela produkt:
jak dla mnie nie potrzebne jest tam pole idkat, wystarczy, że będzie idpod_kat ( oczywiście zakładając, że produkt będzie należał zawsze do jakiejś podkategorii ); Jeżeli to założenie jest błędne, to wtedy to pole jest OK.

Obrazki trzymałbym na serwerze, a w bazie tylko nazwy/linki/ścieżki dostępu do nich.

Co do relacji ... relacja między tabelą kategorie a podkategorie 1 do wielu ( jedna kategoria moze miec wiele podkategori )
potem w zależności od tego co napisałem powyżej ( czy produkt zawsze będzie należał do jakiejś podkategorii a nie kategorii głównej ) to relacje produkt > podkategoria 1 do 1. No chyba, że planujesz sytuacje, gdzie jeden produkt może należeć do wielu kategorii/podkategorii.

Teraz to jakby ja zrobił tę bazę: biggrin.gif
Ja bym zrezygnował z dwóch tabel kategoria i podkategoria na korzyść jednej, w której trzymałbym dane na temat całego drzewka kategorii. Coś w ten deseń:
  1. CREATE TABLE kategoria (
  2. id int NOT NULL AUTO_INCREMENT,
  3. id_parent int DEFAULT '0',
  4. nazwa
  5. );

W id_parent przechowywałbyś kategorię nadrzędną. Pozwala to na stworzenie wielu podziałów kategorii.

W przypadku gdy przewidujesz sytuację, że jeden produkt może należeć do wielu kategorii to należałoby stworzyć dodatkową tabelę:
  1. CREATE TABLE kat_produkt(
  2. id_kategoria int NOT NULL,
  3. id_produkt int NOT NULL
  4. );

No ale to już mocniej rozbudowana baza, która pozwala na pewną dowolność w dodawaniu kategorii oraz produktów do kategorii.
arkadi26
Bardzo dziekuje za sugestie w w/w poscie. Zakladam, ze produkt bedzie zawsze nalezal do jednej kategorii i podkategorii, a podkategoria bedzie nalezala do jednej kategorii (ale sie namieszalo) czyli zostane przy relacja jeden do jeden.

Tylko mecza mnie wlasnie te relacje, jak je w praktyce wprowadzic w phpMyAdmin (juz wiem ze musze uzywac InnoDB bo na MYISAM sie nie da).

Przypominam ze mam serwer na home.pl
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.