Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Mini projekt bazy danych
Forum PHP.pl > Forum > Bazy danych
lisu
1.Chciałbym zrobić cennik firmie handlującej sprzętem komputerowym.
Czy opłaca się robić tabele dla oddzielnych grup produktów (monitory, hdd) i wtedy móc sortować wg cech charakterystycznych dla tych produktów, czy też zrobić jedną tabelę z produktami i drugą ze szczegółami (unikalne id i łatwiejsze zrobienie koszyka).

Co doradzacie

2.Chciałbym zrobić listę swoich albumów mp3 i mieć możliwość wyszukiwania poszczególnych utworów. Czy przechowywać nazwy w jakimś 1 polu oddzielone np '|' czy zrobić oddzielną tabelę. Czy warto w II przypadku robić jeszcze jedną tabelę na 'zależności' (na wypadek gdyby 1 utwór znajdował się na >1 albumach.

chodzi mi o coś takiego: http://sputnik.pl

Z góry THX
itsme
1. Robisz jedna tabele gdzie masz nastepujace pola [id_produktu].[nazwa_produktu].[cena].[grupa] gdzie grupa moze posiadac nastepujace wartosci [monitor].[płyta główna].[itd....]. Dlaczego w jednej tabeli? Ponieważ w 2 tabeli i tak byś trzymał tylko i wyłącznie wartości z pola [grupa] zas w tabeli PRODUKTY albo [id_grupy] albo nazwe grupy. Oczywiscie jeżeli chcesz mieć łatwy dostęp do dodawania, usuwania i edycji grup towarowych zalecam jednak wykonanie 2 tabeli z tymi nazwami zas w tabeli towar przechowywać klucz z tabeli grupy.

2. Wszystko zależy od Twoich potrzeb można to zrobić w jednej tabeli [id].[tytul].[czas].[wykonawca].[album] - i po temacie wszystko zalatwione ale jak chcesz sie pobawic to jest tu relacja wiele do wielu czyli jeden utwor moze byc w wielu Albumach zas album moze posiadac wiele utworów do tego mozesz zrobic jeszcze jedna tabele wykonawcow tu sprawa jest podobna jak przy poprzedniej relacji rowniez jeden do wielu - jeden utwor moze miec wielu wykonawcow jak i wykonawca (co zrozumiale) moze miec wiele utworow.
W takim wypadku robisz tabele:
- utwory pola: [id].[tytul].[id_wykonawcy].[czas]
- albumy pola: [id].[tytul]
- artysta pola: [id].[imie_nazwisko].[opis]....

sa tez potrzebne dodatkowe tabele ktore wspomoga cala baze
- posrednik_utwory_albumy pola: [id_albumu].[id_utworu] - gdzie kluczem sa te dwa pola
- posrednik_artysta_utwor pola: [id_artysty].[id_utworu] - gdzie kluczem sa te dwa pola

zabawa jest przednia gdyz sam mySQL nie posiada relacji wiec jest problem z usuwaniem. Z dodawaniem tez jest nie malo zabawy. Jak ktos ma wyobraznie to to zobaczy:
1. propozycja (1 tabela) dodajesz album z utworami masz wiersz z polami:
tytul albumu, wykonawca, tytul utworu, czas i przycisk dodaj (oczywiscie mozesz miec listy rozwijane gdzie przy zapytaniu do mySQL typu $zapytanie="select DISTINCT album from mp3 order by album" otzrymasz liste albumow to samo mozesz zrobic przy wykonawcach. I temat zalatwiony.
Zas 2 rozwiazanie jest fajne bo nie dublujesz wielu danych zas odczuwalne to bedzie powiedzmy przy 50 tys rekordow biorac pod uwage ze na plycie jest srednio 17 utworow daje do okolo 2941 plyt CD.

Czyli kto ma takie archiwum questionmark.gifquestionmark.gif

Pozdrawiam
lisu
Cytat
1. ... Oczywiscie jeżeli chcesz mieć łatwy dostęp do dodawania, usuwania i edycji grup towarowych zalecam jednak wykonanie 2 tabeli z tymi nazwami zas w tabeli towar przechowywać klucz z tabeli grupy.


Chyba nie do konca sie zrozumieliśmy smile.gif. Co w przypadku gdybym chciał posortować monitory wg przekątnej, albo dyski wg ilości cacheu lub pojemności. I tak musiałbym stworzyć 3 tabelę właśnie z tymi cechami charakterystycznymi dla tej właśnie grupy. Zastanawialem sie nad stworzeniem tabel dla KAŻDEJ z tych grup. A więc np: tabela monitory [id_z_tabeli_produkty].[przekatna].[max_rozdz].... dla dysków: [id_z_tabeli_produkty].[pojemnosc].[cache].... Czy może jakoś inaczej z mniejszą ilością tabel.

Cytat
2. Wszystko zależy od Twoich potrzeb ....


To sprecyzuje moje pytanie:
MAM:
tabela artysci: [id_art].[nazwa].[jakies_info]
tabela albumy [id_alb][tytul][id_art][rok][info]

Czy:
1) mam robić dodatkowe POLE w tabeli albumy, w którym umieściłbym nazwy utworów danego albumu oddzielone znakiem np '|'.
2)zrobić tabele utwory: [id_utw].[nazwa]
oraz tabele powiazania: [id_utw].[id_alb]. Po id_alb doszedłbym już do nazwy artysty.

Cytat
zabawa jest przednia gdyz sam mySQL nie posiada relacji wiec jest problem z usuwaniem. Z dodawaniem tez jest nie malo zabawy. Jak ktos ma wyobraznie to to zobaczy:


Wodzu dzięki. Wreszcie ktoś odpowiedział na to pytanie, gdyż z kolegą się o to długo spieraliśmy biggrin.gif



Cytat
Zas 2 rozwiazanie jest fajne bo nie dublujesz wielu danych zas odczuwalne to bedzie powiedzmy przy 50 tys rekordow biorac pod uwage ze na plycie jest srednio 17 utworow daje do okolo 2941 plyt CD.

Czyli kto ma takie archiwum questionmark.gifquestionmark.gif


Hehe docelowo biggrin.gif

Pzdrwm.
itsme
Cytat
Chyba nie do konca sie zrozumieliśmy smile.gif. Co w przypadku gdybym chciał posortować monitory wg przekątnej, albo dyski wg ilości cacheu lub pojemności. I tak musiałbym stworzyć 3 tabelę właśnie z tymi cechami charakterystycznymi dla tej właśnie grupy. Zastanawialem sie nad stworzeniem tabel dla KAŻDEJ z tych grup. A więc np: tabela monitory [id_z_tabeli_produkty].[przekatna].[max_rozdz].... dla dysków: [id_z_tabeli_produkty].[pojemnosc].[cache].... Czy może jakoś inaczej z mniejszą ilością tabel.

Teraz rozumiem walczylem już z tym problemem gdy robiłem identyczną bazę w accessie
ten problem ma trzy rozwiazania:
1. Robisz tyle tabel ile jest typów produktow np: pr_monitor, pr_hdd, pr_pl_glowna, pr_grafika .... i w nich odpowiednio nazywając kolumny np pojemnosc (hdd), obroty (hdd) oraz plamka (monitor), cale (monitor), flatron (monitor) jest to fajne ale czasochlonne nie tylko przy samym tworzeniu ale rowniez pozniej w dzialaniu - musisz wykonac robota ktory bedzie dodawal kolumne gdy wejdzie nowy parametr ...
2. jest jedna tabela [id_produkt], [nazwa], [pole1] ...... [poleN] - czyli powiedzmy okolo 50 kolumn i teraz w zaleznosci od typu produktu na www domyslenie wyswietla dany parametr zmieniasz tylko naglowek kolumny na stronie w jednej kolumnie mozesz miec przekatna monitora, szybkosc procka, pojemnosc HDD.
3.
PRODUKT
<- TYP
-> CECHY
- DANE
w zwiazku z tym ze tak naprawde to typ produktu posiada cechy nie sam produkt mozna przypisac je do TYPU. I tak idąc dalej wpisujesz produkt NOWY podczepiasz typ_produktu tym samym sciagane sa CECHY ktore po wypelnieniu sa zapisywane w tabeli DANE [id],[id_PRODUKTU], [id_CECHY], [pole1].....[poleN]
parametry masz w tabeli DANE zas nazwy masz w tabeli CECHY. Relacja istnieje miedzy DANE i CECHY oraz DANE i PRODUKT i masz alll
zas PRODUKT - TYP - CECHY bedzie pomocne podczas wprowadzania danych i niegdzie wiecej

Pozdrawiam
lisu
BIG THX. 8)

Wykorzystam chyba propozycję nr 3 gdyż wydaje się być najbardziej rozwojowa i po napisaniu całego interfejsu nie trzeba nic ręcznie robić (te roboty)
itsme
polecam sie na przyszlosc
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.