Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: serwis z ogłoszeniami
Forum PHP.pl > Forum > Bazy danych
a79rtur
czesc. planuje stworzyc serwis z ogloszeniami. obmyslilem sobie taka strukture tabel. czy moglibyscie zerknąc na to i ocenić ?

1.Do kazdego ogloszenia będą mogly byc dodane do 3 obrazków, na stronie bedą wyswietlane miniaturki z linkiem do nich. jak sie takie rzeczy umieszcza ? czy obrazki i ich miniaturki warto trzymac w bazie czy raczej na koncie www? to wazne dla mnie bo od tego zalezy ile bym potrzebował na baze a ile na konto www, ewentualne obrazki będą zajmowac sporo miejsca w porownaniu do ogloszen.

2. W ksiazce na ktorej wzorowalem te tabele był podobny przyklad, czesto tam bylo w tabelach pole deleted, np w kategoriach, po co ? czemu poprostu nie skasowac

Kod
CREATE TABLE Uzytkownicy
(
    uzytk_id        int                         not null,
    uzytk_login     varchar(30)                 not null,
    uzytk_haslo     varchar(30)                 not_null,
    uzytk_imie      varchar(30)
    uzytk_nazwisko  varchar(30)
    uzytk_gg        int(10)
    uzytk_telstac   varchar(18)
    uzytk_telkom    varchar(15)
    uzytk_email     varchar(50)                 not null,
    uzytk_data      datetime                    not null,
    uzytk_adres     varchar(100),
    primary key ( uzytk_id ),
    index( uzytk_id);
);


CREATE TABLE Kategorie
(
    kat_id            int                         not null,
    kat_nazwa         varchar(20)                 not null,
    kat_data          datetime                    not null,
    kat_deleted       tinyint        default 0    not null,
    primary key ( kat_id),
    index( kat_id )
);


CREATE TABLE PodKategorie
(
    podkat_id             int                         not null,
    podkat_nazwa          varchar(30)                 not null,
    podkat_kat_id         int                         not null,
    podkat_data           datetime                    not null
    primary key (podkat_id, kat_id ),
    index ( podkat_nazwa )
}


CREATE TABLE Ogloszenia {
    oglosz_id           int                         not null,
    oglosz_kat_id       int                         not null,
    oglosz_podkat_id    int                         not null,
    oglosz_uzytk_id     int                         not_null,
    oglosz_tresc        text(1000)                  not_null,
    oglosz_cena         float(6,2)                  not_null,
    oglosz_obrazek      tinyint     default 0       not null, //0 nie ma obrazka,
                                                              //1,2,3 ilosc obrazków
    oglosz_data         datetime                    not null,
    primary key ( oglosz_id, oglosz_kat_id ),
    index( oglosz_data )
);

CREATE TABLE Obrazki
{
    obr_id          int   not null,
    obr_oglosz_id    int              not_null,
    obr_dane        blob            not_null,
    obr_x  tinyint        not_null,
    obr_y        tinyint          not_null,
    obr_typ            int(15)        not_null,
    obr_min_dane        blob          not_null,
    obr_min_x          tinyint          not_null,
    obr_min_y          tinyint          not_null,
    primary key ( obr_id),
}

CREATE TABLE AktywacjeOgloszen  //aktywacje ogłoszen
{
    akt_ogl_id     int         not_null,
    akt_ogl_klucz  int         not_null,
    akt_ogl_data   datetime    not_null        
}

CREATE TABLE AktywacjeKont  //aktywacje ogłoszen
{
    akt_konto_id     int         not_null,
    akt_konto_klucz  int         not_null,
    akt_konto_data   datetime    not_null        
}
wojto
Cytat
1.Do kazdego ogloszenia będą mogly byc dodane do 3 obrazków, na stronie bedą wyswietlane miniaturki z linkiem do nich. jak sie takie rzeczy umieszcza ?
dodajesz przez 3 inputy typu file, ja robie tak, ze po wyslaniu zapytania dodajacego ogloszenie do bazy pobieram id ostatnio dodanego rekordu. Nastepnie zapisuje uploadowane pliki na dysku pod nazwami $ostatnio_dodane_id.'_1.jpg', $ostatnio_dodane_id.'_2.jpg' i $ostatnio_dodane_id.'_3.jpg'
a przy wyswietleniu tylko sprawdzam, czy istnieja obrazki if (file_exists($_GET['id'].'_1.jpg')) echo <img ...> i analogicznie z pozostalymi dwoma

Co do pytania, gdzie przechowywac obrazki, lepiej na serwerze, zeby nie obciazac bazy danych

struktura tabeli wyglada na dobra, ja tez nie wiem po co te pole 'kat_deleted'
aha, w tabeli Ogloszenia masz niepotrzebnie dwa pola:
Kod
oglosz_kat_id       int                         not null,
oglosz_podkat_id    int                         not null,
wystarczy to drugie, bo w tabeli z podkategoriami masz pole do jakiej kategorii dana podk. nalezy
a79rtur
czyli nie trzymasz w bazie nawet informacji o tym czy dane np. oglosznie ma obrazek albo ile obrazków ?
wojto
Cytat
czyli nie trzymasz w bazie nawet informacji o tym czy dane np. oglosznie ma obrazek albo ile obrazków ?
dokladnie smile.gif
w niektorych skryptach, jesli dany obrazek moze byc wyswietlany w roznych miejscach w serwisie, np. w artykule i w jakims newsie, to wtedy lepiej jest trzymac w tabeli informacje o polaczeniach obrazkow z newami i artykulam, ale w twoim przypadku rozumie, ze jeden obrazek bedzie nalezal tylko do jednego ogloszenia, wiec nie potrzebna jest dodatkowa tabela(tabele)
a79rtur
no niezupelnie, 3 albo 4 obrazki bedą nalezec do jednego ogłoszenia
wojto
zle mnie zrozumiales, nie chodzi mi o to, ze jedno ogloszenie bedzie mialo tylko jeden obrazek, wiem, ze do jednego ogloszenia bedziesz mogl podpiac kilka zdjec
chodzilo mi o to, ze jeden obrazek bedzie mogl nalezec do tylko jednego ogloszenia, czyli nie bedzie sytuacji, ze dwa ogloszenia korzystaja z jednego zdjecia. jesli tak bedzie, to nie trzeba ci dodatkowej tabeli
a79rtur
ok, dzieki smile.gif
teraz rozumiem

ale czy nie szybsze bedzie pobranie z bazy ilosci obrazkow do danego ogloszenia ,bo tylko to by bylo zapisane, od wykonywania 3x if file exist. i tak pobieram z bazy dane o ogloszeniu wiec to by bylo tylko 1 kolumna wiecej. i jak juz mam te dane to wyswietlenie obrazkow, schemat nazwy taki jak podales czyli IDogloszenia_NRobrazka.jpg . pozatym problem nowy bo co gdybym np chcial zeby mozna bylo tez gify uploadowac ?wtedy takie warunki nie przejdą i sama ilosc obrazkow nie wystarczy . konwertowac na jpegi po uploadzie?
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.