[mysql] tabela
zly.Tomek - 06-05-2006 00:07
[mysql] tabela
Witam. Jestem poczatkujacy i mam taki problem: zalozmy ze mam tabele ludzie i chce zrobic pole hobby i che zeby kazdy czlowiek mogl miec dowolna ilosc takich hobby, jak to zrobic?
Chodzi o cos takiego:
CREATE TABLE ludzie ( idCzlowieka INTEGER PRIMARY KEY NOT NULL, hobby1 VARCHAR(50), hobby2 VARHCAR(50) ..... );
Pozdrawiam zly.Tomek
=?iso-8859-2?Q?Andrzej_D=B1browski?= - 06-05-2006 00:07
> Jestem poczatkujacy i mam taki problem: zalozmy ze mam tabele ludzie i > chce > zrobic pole hobby i che zeby kazdy czlowiek mogl miec dowolna ilosc takich > hobby, jak to zrobic? > > Chodzi o cos takiego: > > CREATE TABLE ludzie ( > idCzlowieka INTEGER PRIMARY KEY NOT NULL, > hobby1 VARCHAR(50), > hobby2 VARHCAR(50) > .....
Zrób 2 tabele: Ludzie i hobby. Do tabeli hobby dodaj klucz obcy - pole idczlowieka.
Później masz dojscie sqlem do danych, np. select * from czlowiek,hobby where czlowiek.czlowiekid=hobby.czlowiekid
Andzrej Dąbrowski
Grzegorz Danowski - 06-05-2006 00:07
Użytkownik "zly.Tomek" <stokrot@poczta.fm> napisał w wiadomości news:e3f7pk$dp7$1@atlantis.news.tpi.pl... > Witam. > Jestem poczatkujacy i mam taki problem: zalozmy ze mam tabele ludzie i > chce zrobic pole hobby i che zeby kazdy czlowiek mogl miec dowolna ilosc > takich hobby, jak to zrobic? > > Chodzi o cos takiego: > > CREATE TABLE ludzie ( > idCzlowieka INTEGER PRIMARY KEY NOT NULL, > hobby1 VARCHAR(50), > hobby2 VARHCAR(50) > ..... > );
Rozbić to na dwie tabele: Ludzie i Hobby z referencją do Id człowieka. A jeszcze lepiej na 3: Ludzie (idCzlowieka, nazwa), Hobby (idHobby, nazwa) i LudzieHobby (idCzlowieka, idHobby). G.
Tygrys - 11-05-2006 13:00
Użytkownik "Grzegorz Danowski" <gdn__na@serwerze__poczta.onet.pl> napisał w wiadomości news:e3f80n$1gu$1@inews.gazeta.pl...
> Rozbić to na dwie tabele: Ludzie i Hobby z referencją do Id człowieka. A > jeszcze lepiej na 3: Ludzie (idCzlowieka, nazwa), Hobby (idHobby, nazwa) i > LudzieHobby (idCzlowieka, idHobby).
Dlaczego lepiej na 3?
Tygrys
=?ISO-8859-2?Q?S=B3awomir_Szysz=B3o?= - 11-05-2006 13:00
Dnia Sat, 6 May 2006 19:27:40 +0200, "Tygrys" <mediacom@wywalto.polbox.com> wklepał(-a):
>Użytkownik "Grzegorz Danowski" <gdn__na@serwerze__poczta.onet.pl> napisał w >wiadomości news:e3f80n$1gu$1@inews.gazeta.pl... > >> Rozbić to na dwie tabele: Ludzie i Hobby z referencją do Id człowieka. A >> jeszcze lepiej na 3: Ludzie (idCzlowieka, nazwa), Hobby (idHobby, nazwa) i >> LudzieHobby (idCzlowieka, idHobby). > >Dlaczego lepiej na 3?
Bo jest to klasyczna relacja N:M - każdy człowiek może mieć wiele hobby, a każde hobby może przynależeć do wielu ludzi. Trzecia tabela łączy dwie tabele "słownikowe" i dzięki niej wiadomo jakie hobby uprawia dana osoba lub też które osoby uprawiają dane hobby. -- Sławomir Szyszło mailto:slaszysz@poczta.onet.pl Primus inter FAQires & Grand Inquisitor no.0 of pl.comp.bazy-danych FAQ pl.comp.bazy-danych http://www.dbf.pl/faq/ Archiwum http://groups.google.com/groups?grou...mp.bazy-danych
Rafal sxat - 11-05-2006 13:00
> > jeszcze lepiej na 3: Ludzie (idCzlowieka, nazwa), Hobby (idHobby, nazwa) i > > LudzieHobby (idCzlowieka, idHobby). > > Dlaczego lepiej na 3? > > Tygrys
normalizacja, postac normalna sprawdz google http://www.google.pl/search?sourceid...LD,GGLD:2005-3 2,GGLD:en&q=postac+normalna
bo lepiej na 3 tabelki ;)
pozdr Rafal sxat
-- Archiwum grupy: http://niusy.onet.pl/pl.comp.bazy-danych
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[mysql] =?ISO-8859-2?Q?Za=E6mienie=2E=2E=2E_jak_wy=B6wietli=E6?==?ISO-8859-2?Q?=2E=2E=2E?=
[mysql] =?ISO-8859-2?Q?wielko=B6=E6_bazy_a_stabilno=B6=E6=2C?==?ISO-8859-2?Q?_podzia=B3_du=BFej_bazy_a_powi=B1zania_tabel?=
[MySQL] =?ISO-8859-2?Q?Wy=B6wietlenie_kolejnej_pozycji=2C_?==?ISO-8859-2?Q?jak=B1_mia=B3by_dany_rekord=2C_gdybym_czyta=B3 _?==?ISO-8859-2?Q?wg_konkretnych_kryteri=F3w=2E_Da_si=EA_=3F?=
[mysql 4.0.x] przenoszenie kolum =?ISO-8859-2?Q?mi=EAdzy_bazam?==?ISO-8859-2?Q?i_cd_=2E=2E=2E_?=
[MySQL] =?ISO-8859-2?Q?z=B3=B1czenie_tabeli_u=BFytkownik_i?==?ISO-8859-2?Q?_zdj=EAcia_z_wyborem_zdj=EAcia_domy=B6lnego?=
[MySQL] Jak =?ISO-8859-2?Q?wpisa=E6_do_tabeli_pozycje_dl?==?ISO-8859-2?Q?a_wierszy_gdybym_te_wiersze_wybiera=B3_w_ok?== ?ISO-8859-2?Q?re=B6lonej_kolejno=B6ci_=3F?=
Gdzie MySQL 4.1, a gdzie 5.0?
[MySQL 4.0...4.1] zabezpieczenie przed =?ISO-8859-2?Q?jednoczesn?==?ISO-8859-2?Q?=B1_edycj=B1?=
[MS SQL] "set names" (mySQL) w MS SQL
[mysql 5.x] jak =?ISO-8859-2?Q?zrealizowa=E6_zapytanie=3F_cz?==?ISO-8859-2?Q?yli_podzapytanie_i_wi=EAcej_ni=BF_jeden_rz=B1? ==?ISO-8859-2?Q?d_wynik=F3w?=
zanotowane.pldoc.pisz.plpdf.pisz.ploefg.opx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|