Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Nowa baza danych
arkadi26
post 6.02.2007, 22:35:04
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 3.02.2007

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


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.
Go to the top of the page
+Quote Post
Cienki1980
post 6.02.2007, 23:31:45
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


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.

Ten post edytował Cienki1980 6.02.2007, 23:32:28


--------------------
404
Go to the top of the page
+Quote Post
arkadi26
post 10.02.2007, 18:49:42
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 3.02.2007

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


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
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: 14.08.2025 - 01:24