[MySQL] Rekord odniesieniem do innej tabeli
smok - 13-11-2006 00:47
[MySQL] Rekord odniesieniem do innej tabeli
Witam. Mam tabelę, w której zbieram dane urządzeń komputerowych. Najważniejszy jest jej indeks - staje się on numerem serwisowym komputera, monitora drukarki itp. Jednakże każde z tych urządzeń posiada cechy unikalne (na przykład przekątną ekranu, ilość pamięci). Postanowiłem więc, że główny indeks zawierający unikalne ID będzie w jednej tabeli, a szczegółowe dane sprzętu w innych (np tabele "tbl_komputery", "tbl_drukarki", "tbl_monitory", mam nadzieję że to dobre rozwiązanie). I tu rodzi się pytanie - jak zrobić tą relację? Jak skonstruować kolumnę odnoszącą się do innej tabeli? Może to być na przykład kolumna "typ"zawierająca kilka możliwych rekordów (np "komputer", "monitor", "drukarka"), ale jak w zapytaniach odnosić się do tabel ze szczegółami? Jak na przykład skonstruować zapytanie o wszystkie dane z tabeli podstawowej i z tabeli zawierających szczegóły dla rekordu o ID X? Dzięki Smok.
keczerad - 13-11-2006 00:47
smok napisał(a): > Witam. > Mam tabelę, w której zbieram dane urządzeń komputerowych. Najważniejszy > jest jej indeks - staje się on numerem serwisowym komputera, monitora > drukarki itp. Jednakże każde z tych urządzeń posiada cechy unikalne (na > przykład przekątną ekranu, ilość pamięci). Postanowiłem więc, że główny > indeks zawierający unikalne ID będzie w jednej tabeli, a szczegółowe > dane sprzętu w innych (np tabele "tbl_komputery", "tbl_drukarki", > "tbl_monitory", mam nadzieję że to dobre rozwiązanie).
rozwiaznie do bani, powinna byc jedna tabela towary, nastepna tabela cechy i trzecia relacja cech i towarów
relacja z towarami id|id_cechy_|id_towaru
slownik cech: id|nazwa
--
keczerad
http://www.e-mo.com.pl sklep w (X)HTML
sg - 13-11-2006 00:47
keczerad napisał(a): > smok napisał(a): >> Witam. >> Mam tabelę, w której zbieram dane urządzeń komputerowych. Najważniejszy >> jest jej indeks - staje się on numerem serwisowym komputera, monitora >> drukarki itp. Jednakże każde z tych urządzeń posiada cechy unikalne (na >> przykład przekątną ekranu, ilość pamięci). Postanowiłem więc, że główny >> indeks zawierający unikalne ID będzie w jednej tabeli, a szczegółowe >> dane sprzętu w innych (np tabele "tbl_komputery", "tbl_drukarki", >> "tbl_monitory", mam nadzieję że to dobre rozwiązanie). > > rozwiaznie do bani, powinna byc jedna tabela towary, nastepna tabela > cechy i trzecia relacja cech i towarów > > relacja z towarami > id|id_cechy_|id_towaru > > > slownik cech: > id|nazwa > > >
ech, tak powinno być, a co chwilę widzę piękne rzeczy w stylu wielkich baz danych do prowadzenia pełnej obsługi magazyny (np. hurtownia książek, która rocznie sprzedaje książek za ok 200mln zł), setki tabel bez żadnej relacji między tabelami :)
smok - 13-11-2006 00:47
sg napisał(a): >> rozwiaznie do bani, powinna byc jedna tabela towary, nastepna tabela >> cechy i trzecia relacja cech i towarów >> >> relacja z towarami >> id|id_cechy_|id_towaru >> >> >> slownik cech: >> id|nazwa
OK. Może nie do końca wyjaśniłem, ale chodziło mi o bazę pojedyńczych urządzeń (nie sklep, tylko baza działających urządzeń będących pod opieką serwisu komputerowego). Niemniej ten układ chyba pasuje. Nie wiem tylko jak go zastosować w praktyce. Relację w zapytaniach trzeba wprowadzić jak rozumiem za pomocą JOIN ale jak rozwiązać kwestię zróżnicowanych cech urzadzeń? (drukarka na przykład ma inne istotne cechy niż monitor) - użyć odrębnych tabel z cechami? I jak do nich się łączyć w zapytaniach. A może jednak tylko jedną tabelę z cechami? Dzięki Smok.
sg - 13-11-2006 00:47
smok napisał(a): > sg napisał(a): >>> rozwiaznie do bani, powinna byc jedna tabela towary, nastepna tabela >>> cechy i trzecia relacja cech i towarów >>> >>> relacja z towarami >>> id|id_cechy_|id_towaru >>> >>> >>> slownik cech: >>> id|nazwa > > OK. Może nie do końca wyjaśniłem, ale chodziło mi o bazę pojedyńczych > urządzeń (nie sklep, tylko baza działających urządzeń będących pod > opieką serwisu komputerowego). Niemniej ten układ chyba pasuje. Nie > wiem tylko jak go zastosować w praktyce. Relację w zapytaniach trzeba > wprowadzić jak rozumiem za pomocą JOIN ale jak rozwiązać kwestię > zróżnicowanych cech urzadzeń? (drukarka na przykład ma inne istotne > cechy niż monitor) - użyć odrębnych tabel z cechami? I jak do nich się > łączyć w zapytaniach. A może jednak tylko jedną tabelę z cechami? > Dzięki > Smok.
po prostu trzeba zastanowić się nad wszystkim, zrobić porządny projekt a to ile tabel wyjdzie to rzecz wtórna
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 4.0.x] przenoszenie kolum =?ISO-8859-2?Q?mi=EAdzy_bazam?==?ISO-8859-2?Q?i_cd_=2E=2E=2E_?=
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?=
[MySQL] Czy da =?ISO-8859-2?Q?si=EA_wykonac_takie_powi=B1z?==?ISO-8859-2?Q?anie_mi=EAdzy_tabelami=2C_i_jak_to_odpyta=E6_? ==?ISO-8859-2?Q?=3F?=
Import za =?ISO-8859-2?Q?pomoc=B1_EMS_Data_Import_for_?==?ISO-8859-2?Q?MySQL_-_polskie_litery=2E?=
oracle -> oracle lub oracle -> mysql replikacja - programy
zanotowane.pldoc.pisz.plpdf.pisz.plautwywalczyl.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 |
|