Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Schemat bazy - zamawianie zdjęć z galerii.
miedzna
post 22.02.2006, 09:32:01
Post #1





Grupa: Zarejestrowani
Postów: 401
Pomógł: 1
Dołączył: 10.03.2004
Skąd: Warszawa

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


Witam,
muszę zrobić bazę, ale nigdy nie robiłem takiej zaawansowanej żetakpowiem smile.gif
Wydaje mi się, że dobrym rozwiązaniem będzie coś takiego:
odzielna tabela dla userów, bo będzie ich wiele i odzielna table dla zamawianych zdjęć, bo też będzie tego dużo. Tylko chcę, żeby każde zamawiane zdjęcie miało przy sobie info gdzie jest wykorzystywane i przez jakiego usera i ile razy. Dodatkowo chcę, żebym mógł sprawdzić jakie zadjęcia zamawiał user... macie jakieś pomysły oraz gdyby takie pojawiły się to jak by wyglądały przykładowe zapytania do tej bazy.
Moja propozycja jest taka:

tabela users:

user_id | imie | nazwisko | email

tabela zdjecia:

zdjecie_id | zdjecie_id_user_id | jakies_pozostale_info_o_zdjeciu

czy takie rozwiązanie jest OK i jak by wyglądało dodawanie oraz zapytanie do takiej bazy?

Będę wdzięczny za odpowiedzi.
Go to the top of the page
+Quote Post
nospor
post 22.02.2006, 09:37:37
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




masz tutaj relacje wiele do wielu, czyli ze jeden user moze zamawiac wiele zdjęc, a jedno zdjecie moze byc zamowione przez wielu userow. tak wiec twoja tabela ze zdjeciami jest bledna. musisz dorobic trzecią tabelę, która będzie je łączyla:

tabela user:
Kod
id | imie | nazwisko | email


tabela zdjecie:
Kod
id |  jakies_pozostale_info_o_zdjeciu


tabela user_zdjecie:
Kod
id_user |  id_zdjecie | data | gdziewykorzystane



Cytat
wykorzystywane i przez jakiego usera i ile razy
to dany user moze kilka razy to samo zdjecie zamowic? jesli tak to:
tabela user_zdjecie:
Kod
id | id_user |  id_zdjecie | data | gdziewykorzystane


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
miedzna
post 22.02.2006, 09:51:20
Post #3





Grupa: Zarejestrowani
Postów: 401
Pomógł: 1
Dołączył: 10.03.2004
Skąd: Warszawa

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


Wiesz, sorry że marudzę, ale pomyślałem i okazało się, że w bazie nie będę trzymał opisów zdjęć. Interesuje mnie tylko to, przez kogo były zamawiane i gdzie były wykorzystywane.
Czyli tabela users pozostaje bez zmian, a tabela z informacjami i wykorzysttywanych zdjęciach zmieni się... tylko jak?questionmark.gif
Go to the top of the page
+Quote Post
nospor
post 22.02.2006, 09:54:05
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




tak czy siak tabela na zdjecia jest wskazana. umozliwia to latwiejsze zarządzanie zdjęciami. czyli wszystko pozostaje bez zmian winksmiley.jpg


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
miedzna
post 22.02.2006, 11:08:18
Post #5





Grupa: Zarejestrowani
Postów: 401
Pomógł: 1
Dołączył: 10.03.2004
Skąd: Warszawa

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


Dobra, nasmarowałem cóś takiego:

tabela users:
Kod
CREATE TABLE users (
id INT NOT NULL AUTO_INCREMENT,
imie CHAR(15),
nazwisko CHAR(25),
email VARCHAR(40),
PRIMARY KEY(id)
);


tabela zdjecia:
Kod
CREATE TABLE zdjecia (
id INT NOT NULL AUTO_INCREMENT,
kategoria CHAR(20),
numer CHAR(4),
PRIMARY KEY(id)
);


tabela users_zdjecia:
Kod
CREATE TABLE users_zdjecia (
id INT NOT NULL AUTO_INCREMENT,
id_users CHAR(4),
id_zdjecia CHAR(4),
serwis TEXT,
link TEXT,
data datetime,
PRIMARY KEY(id)
);


a teraz zapytanie do bazy:
Kod
SELECT users.imie, users.nazwisko, users_zdjecia.serwis, users_zdjecia.link
FROM users, zdjecia, users_zdjecia
WHERE
users.id = users_zdjecia.id_users
AND zdjecia.id = users_zdjecia.id_zdjecia
AND LCASE(zdjecia.kategoria) = \"Biznes\"
AND LCASE(zdjecia.numer) = \"12\"

pokaże wszystkich userów, którzy pobrali zdjęcie z kategorii Biznes numer 12

1. tylko jak zrobić na odwrót, czyli pokazać wszystkie zdjęcia, które pobrał user Jan Kowalski?

2. i jak się dodaje informacje do takich tabel, w 3 różnych insertach?questionmark.gif
Go to the top of the page
+Quote Post
nospor
post 22.02.2006, 11:14:34
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




uzywaj odpowiedniego bbcode. mowie tu o SQL

1)
  1. SELECT u.imie, u.nazwisko,z.numer
  2. FROM users
  3. u, zdjecia z, users_zdjecia uz WHERE u.imie='Jan' AND u.nazwisko='Kowalski' AND uz.id_users=u.id AND uz.zdjecia=z.id


2)ale czemu w trzech?Przeciez userow juz bedziesz mial. najpierw przeciez ludek musi sie pojawic w bazie, bys mogl mu cos dac. to samo ze zdjeciami. przeciez galerie zdjęc to masz juz w bazie, inaczej ludek by nie wiedzial co moze se wziąść. Bo w bazie masz trzymac zdjecia nie zależnie od tego czy ktos je bral czy nie.
a potem to juz tylko jeden insert na polaczenie usera ze zdjeciem winksmiley.jpg


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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 - 06:53