Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Pomoc w zaprojektowaniu bazy danych i relacji miedzy tabelami.
Forum PHP.pl > Forum > Przedszkole
17misiek09
mam problem.
kiedys sie to robilo, a teraz sie zapomnialo....poprostu umiejetnosc nie wykorzystywana zanika.

przejdzmy do tematu:
baza danych skladac sie bedzie z 4 tabel:

categories
Kod
cat_id   int(11)
nazwa    varchar(20)


users
Kod
user_id            int(11)             AUTO_INCREMENT   PRIMARY KEY
user_name          varchar(20)
user_password      varchar(20)
user_email         text
user_www           text
user_confirmed     tinyint(1)



news
Kod
news_id            int(11)     AUTO_INCREMENT      PRIMARY KEY
news_date          date
news_cat           int(11)
news_user_name     varchar(20)
news_title         varchar(35)
news_link          varchar(35)
news_short         text
news_whole         text
news_view          int(11)



comments
Kod
comment_id                int(11)     AUTO_INCREMENT       PRIMARY KEY
comment_news_id           int(11)
comment_user_name         varchar(20)
comment_user_email        text
comment_user_www          text
comment_content           text



nooooo i tak:
1. w tabeli news kolumna "news_user_name" to kolumna "user_name" z tabeli users
2. w tabeli comments kolumna "comment_news_id" to kolumna "news_id" z tabeli news

3. w tabeli comments kolumna "comment_user_name" to kolumna "user_name" z tabeli users
4. w tabeli comments kolumna "comment_user_email" to kolumna "user_email" z tabeli users
5. w tabeli comments kolumna "comment_user_www" to kolumna "user_www" z tabeli users

chyba, ze te trzy ostatnie da sie jakos inaczej zrobic?
jak wogole utworzyc takie relacje??baaardzo wdzieczny za pomoc. kiedys wszystko bylo klarowne, teraz nie moge sie z tym pozbierac sad.gif
b4rt3kk
Po pierwsze, nie ma sensu przepisywać kilkakrotnie tych samych wartości. Nic z tabeli users nie powinno się powtórzyć w innych tabelach.

categories
Kod
cat_id   int(11)
nazwa    varchar(20)


users
Kod
user_id            int(11)             AUTO_INCREMENT   PRIMARY KEY
user_name          varchar(20)
user_password      varchar(20)
user_email         text
user_www           text
user_confirmed     tinyint(1)



news - wystarczy user_id, news_short - jeśli to obcjęta wersja whole, to nie ma racji bytu, takie obcinanie robisz przy wyświetlaniu.
Kod
news_id            int(11)     AUTO_INCREMENT      PRIMARY KEY
news_date          date
news_cat_id           int(11)
news_user_id     varchar(20)
news_title         varchar(35)
news_link          varchar(35)
news_whole         text
news_view          int(11)



comments - wszystko co przechwouje wartości z tabeli users - wypad, zostaje samo user_id, na tej podstawie pobierasz resztę danych.
Kod
comment_id                int(11)     AUTO_INCREMENT       PRIMARY KEY
comment_news_id           int(11)
comment_user_id         int(11)
comment_content           text
17misiek09
juz mi bardzo pomogles smile.gif

teraz kolejna kwestia - jak na podstawie np user_id wyciagnac przy wyswietlaniu te dane uzytkownika, ktore chce...
chodzi chociazby o sytuacje z ostatniej tabeli, ktora opisales.


iii jak taka relacje stworzyc...pogubilem sie dokumentnie :/
pomyslec ze kilka latek temu trzaskalo sie to od reki...praca w calkiem innym zawodzie odciaga od lubianego zajecia sad.gif
17misiek09
klaniam sie nisko! smile.gif
ja kombinuje z relacjami, a tu wystarczylo LEFT JOIN smile.gif
dziekuje!!! smile.gif ojj wiele musze sobie przypomniec smile.gif
obaj dostajecie po POMÓGŁ smile.gif

nie moge wyczaic...
jak wyswietlic :

news_date, news_title, news_user_name, news_cat(nazwa kategorii), news_short, news_whole, user_email, user_www jednoczesnie?:/
nie moge zczaic tego...
prosze o pomoc.
b4rt3kk
  1. SELECT * FROM tabela AS tab1 LEFT JOIN AS tab2 ON tab2.id_news=tab1.id_news LEFT JOIN AS tab3 ON tab2.id_news=tab3.id_news


i tak dalej.
17misiek09
Cytat(b4rt3kk @ 12.11.2012, 17:21:15 ) *
  1. SELECT * FROM tabela AS tab1 LEFT JOIN AS tab2 ON tab2.id_news=tab1.id_news LEFT JOIN AS tab3 ON tab2.id_news=tab3.id_news


i tak dalej.


albo tak stumanialem, albo naprawde nie rozumie o co chodzi... :/

edit:
udalo sie jednak coss wymodzic wink.gif jest ok wink.gif efekt ok, teraz tylko wyswietlic to na stronie...
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.