![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 164 Pomógł: 3 Dołączył: 13.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Proszę o radę. Zamierzam zrobić prostą stronę w PHP/MySQL - katalog dzieł i ich twórców, w bazie będą przechowywane m.in. dane o obrazach (tytuł,kategoria,technika,wymiary,cena itd ok. 10 zmiennych). Czy lepiej zrobić jedną tabelę czy raczej zrobić kilka np: obrazy (id,tytul,autor) autor (id,autor) kategoria (id,kategoria) technika (id,technika) i łączyć je za pomocą LEFT JOIN ? Prawie wszędzie gdzie czytam podkreśla się, żeby projektować bazę optymalnie, że wielokrotne złączenia obciążają serwer, że zaleca się nie więcej niż 3 złączenia w jednym zapytaniu. Z kolei jak patrzę na strukturę baz znanych sklepów np. osCommerce, to są tam osobne tabele; produkty, kategorie, producenci itp. -------------------- |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 289 Pomógł: 77 Dołączył: 5.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
napewno osobno bym zrobił obrazy i autor. Zapewne zdecydowanie więcej będzie autorów niż kategorii i technik. Zależy też oczywiście jak bardzo będą rozbudowane tabele kategorie i techniki (bo jeżeli to tylko id-opis-naza, i ma ich być stosunkowo niewiele) to nie opłaca się.
-------------------- awake
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
musisz sobie zadać pytanie czy chcesz posiadać możliwość łatwej edycji autorów / katygorii / technik i ich dodawania bo np. chcesz zmienić nazwe techniki gdy zrobisz 1 rozwiązaniem byś musiał w każdym wierszu zmienić technike a tak tylko zmieniasz w tabeli techniki anzwe i wszystko gra :] Wszystko zależy od Ciebie. Sądze że drugi sposób jest dobry chociaż wydaje się że troche dużo tych joinów jak na 1 zapytanie ;] Ale daje to Tobie wiekszą i łatwiejszą mozliwość edycji ;p Np jeżeli wiesz że będziesz mieć np. 3 katygorie możesz dać pole ENUM ;] I później z dodaniem nowej katygorii też by nei było chyba problemu zależy jak się nastawiasz na przyszłosć i jak bardzo będziesz rozbudowywać strone i czy w ogóle będziesz ją rozbudowywać itp ;P
Tyle ode mnie mam nadzieje że pomogłem ;] -------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 164 Pomógł: 3 Dołączył: 13.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
napewno osobno bym zrobił obrazy i autor. Zapewne zdecydowanie więcej będzie autorów niż kategorii i technik. Zależy też oczywiście jak bardzo będą rozbudowane tabele kategorie i techniki (bo jeżeli to tylko id-opis-naza, i ma ich być stosunkowo niewiele) to nie opłaca się. Dzięki za odpowiedź. Obrazów będzie najwięcej, autorów odpowiednio mniej (przykładowo każdy będzie autorem 10 obrazów), kategorii określona ilość <10, podobnie technik i podobrazi. Ceny i wymiary - tego będzie dużo i różne kombinacje. Czy dobrze rozumuję: jeśli określonych danych ma być dużo należy do tego tworzyć dla nich osobne tabele ? musisz sobie zadać pytanie czy chcesz posiadać możliwość łatwej edycji autorów / katygorii / technik i ich dodawania bo np. chcesz zmienić nazwe techniki gdy zrobisz 1 rozwiązaniem byś musiał w każdym wierszu zmienić technike a tak tylko zmieniasz w tabeli techniki anzwe i wszystko gra :] Wszystko zależy od Ciebie. Sądze że drugi sposób jest dobry chociaż wydaje się że troche dużo tych joinów jak na 1 zapytanie ;] Ale daje to Tobie wiekszą i łatwiejszą mozliwość edycji ;p Np jeżeli wiesz że będziesz mieć np. 3 katygorie możesz dać pole ENUM ;] I później z dodaniem nowej katygorii też by nei było chyba problemu zależy jak się nastawiasz na przyszłosć i jak bardzo będziesz rozbudowywać strone i czy w ogóle będziesz ją rozbudowywać itp ;P Tyle ode mnie mam nadzieje że pomogłem ;] Dzieki założenie jest takie, że ludzie będą się rejestrować, logować i dodawać swoje dzieła przez formularze. Niektóre cechy (np. kategoria,technika,podobrazie) będą już z góry zdefiniowane i będzie ich określona, niewielka ilość. Tak sobie myślę, że dla tych danych chyba nie ma sensu robić osobnych tabel bo przy każdym zapytaniu (wywołującym określone dzieło) musiałbym robić tyle LEFT JOIN-ów ile jest tych tabel (?) Chyba lepiej będzie w tabeli "dzieła" dodać kolumny...? Autorów dzieł będzie odpowiednio mniej, tak jak pisałem post wyżej; czy w takim razie tabela autorzy powinna zawierać dwie kolumny: autor_id, autor_nazwisko , gdzie autor_id będzie identyfikatorem obrazu (i przy zapytaniu wyświetlającym obraz robić wlasnie LEFT JOIN z tabelą autorzy?) -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Cytat (np. kategoria,technika,podobrazie) będą już z góry zdefiniowane i będzie ich określona, niewielka ilość. możesz trzymac tabelki zt ymi parametrami i np w polu wybory wyświetlać je z tej tabelki a dodawać jako nazwe - string - do tabeli obrazu wtedy masz łatwą możliwość dodanai nowego pola a unikniesz join'ów. Co do autorów hm możesz zrobić to na zasadzie id_autora -> obraz czyli trzymać id_autora w tabelce obrazów. bo lepiej zrobić relacje 1 do wielu czyli autor do dzieł ![]() -------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 164 Pomógł: 3 Dołączył: 13.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
możesz trzymac tabelki zt ymi parametrami i np w polu wybory wyświetlać je z tej tabelki a dodawać jako nazwe - string - do tabeli obrazu wtedy masz łatwą możliwość dodanai nowego pola a unikniesz join'ów. No wlasnie tak zacząłem robić ![]() Co do autorów hm możesz zrobić to na zasadzie id_autora -> obraz czyli trzymać id_autora w tabelce obrazów. bo lepiej zrobić relacje 1 do wielu czyli autor do dzieł ![]() czyli: dziela (id,tytul,artysta,itd...) artysta (artysta_id,artysta_name) i Kod $zapytanie = ("SELECT dziela.id, dziela.tytul, dziela.artysta, (...) artysta.artysta_id, artysta.artysta_name, FROM `dziela` LEFT JOIN `artysta` ON dziela.id = artysta.artysta_id "); Przepraszam, że nie formatuję odpowiednio postu ale nie dzialają mi te przyciski "PHP" "Manual" itd, albo nie wiem jak tego używać? -------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
no coś w tym stylu ;] hm jeżeli używasz Opery to mi też nei działają i wpisuje je normalnei z palca dla php to w kwadratowe php i zamknięcie odpowiednio /php dla sql to samo .... ![]() -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 13:49 |