Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pomoc w zaprojektowaniu bazy
GeedieZ
post 9.06.2008, 09:42:17
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 21.02.2005

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


Prosiłbym o pomoc w zaprojektowaniu bazy ponieważ napotkałem problem i nie umiem sobie z nim poradzić:

Tabela tools:
Kod
tool_id   tool_name
1        Tool_1
2        Tool_2
3        Tool_3



Tabela parts:
Kod
part_id   part_name
1        Part_1
2        Part_2
3        Part_3


Teraz chodzi o to, by skonstruować jakąś tabelę łączącą te dwie tabele w taki sposób, że ukazywać będzie informacje typu:
Tool_1 składa się z:
2 części Part_1,
3 części Part_2,
0 części Part_3

Tool_2 składa się z:
1 części Part_1
2 części Part_2
3 części Part_3

itd...

Próbowałem zrobić tabelkę tools_parts_link, w której zawarłem takie informacje:
t_p_link_id matrix_id part1_id part1_qty part2_id part2_qty part3_id part3_qty part4_id part4_qty

Ale nic mi z tego nie wychodzi, poza tym jest to na pewno złe powiązanie z tabelą parts no ale brak mi już pomysłu jak to rozwiązać. Bardzo proszę o pomoc!

Ten post edytował GeedieZ 9.06.2008, 10:02:10
Go to the top of the page
+Quote Post
nithajasz
post 9.06.2008, 10:28:03
Post #2





Grupa: Zarejestrowani
Postów: 230
Pomógł: 27
Dołączył: 27.05.2008
Skąd: Warszawa

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


Komplikujesz sobie życie...
Kod
-------------------------------------------
| id | tool_name | part_1 | part_2 | part_3 |
-------------------------------------------
| 1 | tool_1       | 2            | 3       | 0           |
-------------------------------------------
| 2 | tool_2       | 0        | 2       | 1           |
-------------------------------------------


Edit: nie doczytałem dobrze smile.gif

Do tego dorzuć tą tabelke z nazwami part i będzie dobrze.

Ten post edytował nithajasz 9.06.2008, 10:33:14
Go to the top of the page
+Quote Post
GeedieZ
post 9.06.2008, 10:31:13
Post #3





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 21.02.2005

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


No dobrze... ale jak teraz wyciągnę nazwy part_1, part_2, part_3? Musi do tego być osobna tabelka...
Go to the top of the page
+Quote Post
nithajasz
post 9.06.2008, 10:32:39
Post #4





Grupa: Zarejestrowani
Postów: 230
Pomógł: 27
Dołączył: 27.05.2008
Skąd: Warszawa

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


Edytowałem posta.

Na dwie tabelki ta z partami też musi być.
Go to the top of the page
+Quote Post
GeedieZ
post 9.06.2008, 10:39:46
Post #5





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 21.02.2005

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


Przykro mi ale nadal nie kumam. Jeśli zrobię tę drugą tabelkę jak proponujesz to jakim zapytaniem potem wyciągnę takie dane:

tool_1 składa się z 2 x Part_1, 3 x Part_2, 0 x Part_3? I co jeśli będę chciał dodać nowe parts do bazy?
Go to the top of the page
+Quote Post
pest
post 9.06.2008, 11:24:59
Post #6





Grupa: Zarejestrowani
Postów: 78
Pomógł: 15
Dołączył: 10.12.2007
Skąd: Lublin

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


Zrób tak
tabela 1
`tools` (id_tool, name, costam2)
tabela 2
`parts (id_part, costam, costam2)

tabela 3
`tool_parts` (id_tool, id_part, quantity)

i jak będziesz chciał wiedzieć z jakich części składa się tool1 to masz
  1. SELECT *
  2. FROM tools t, parts p, tool_parts tp
  3. WHERE t.id_tool = tp.id_tool AND tp.id_part = p.id_part AND t.name = $name

Wtedy masz kilka rekordów z ilością części i inną częścią w każdym rekordzie (oraz taką samą częścią).
Później możesz sobie to obrobić w PHP, albo pokombinować (bo można) jeszcze w MySQL, żeby zrobił podzapytanie o podzespoły i zwrócił 1 rekord z narzędziem i listą części.
Go to the top of the page
+Quote Post
GeedieZ
post 9.06.2008, 15:06:44
Post #7





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 21.02.2005

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


O taką tabelkę mi chodziło. Dzięki, +1 pkt
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: 21.06.2025 - 15:45