Ocena wątku:
- 0 głosów - średnia: 0
- 1
- 2
- 3
- 4
- 5
[HTML][MySQL][PHP]PHP , MySql Tabele i rekordy, Wyciąganie danych
|
Liczba postów: 2
Liczba wątków: 1
Dołączył: 08-01-2013
Reputacja:
0
Witam Panowie oraz Panie. Mam następujący problem.
Z moim nauczyciele informatyki staramy się dojść do tego jak rozwiązać następujacy problem:
W PHP pisze program do obsługi bazy danych.
W tabeli komputer mam następujące kolumny :
ID_Komputera | Nr_Inwetaryzacyjny | ID_Sali_k | ID_OS1_k | ID_OS2_k | ID_Program_Anty_k
W tabeli OS mam następujace kolumny :
ID_OS | Nazwa_OS
I potrzebuje napisać kwerende w której w miejsce ID_OS1_k oraz ID_OS2_k wstawić Nazwa_OS przy czym dla obu pół są to różne wartości.
Próbowałem kwerende :
select ID_Komputera, Nr_Inwentaryzacyjny, Numer_Sali, Nazwa_OS, MS_Office from komputer, sala, OS WHERE Nr_Inwentaryzacyjny LIKE '%$e%' and ID_Sali = ID_Sala and ID_OS1_k = ID_OS and ID_OS2_k = ID_OS;
Ale nic mi nie pokazuje.
Pozdrawiam
Liczba postów: 817
Liczba wątków: 16
Dołączył: 27-04-2011
Reputacja:
45
08-01-2013, 20:19
(Ten post był ostatnio modyfikowany: 08-01-2013, 20:22 przez hieroshima.)
Bo to jest zle zaprojektowane. Tu powinna być normalnie relacja 1..n
btw. Access to złooo
Komputer:
ID_komp <pk>
Nr_inter
ID_Sali <FK>
ID_OS <FK>
OS:
ID_OS <PK>
Nazwa_os
Liczba postów: 2
Liczba wątków: 1
Dołączył: 08-01-2013
Reputacja:
0
Tylko właśnie muszę przyjąć iż w komputer muszę przechowywać dwa systemy operacyjne (ID_OS1_k , ID_OS2_k)
Liczba postów: 2,587
Liczba wątków: 2
Dołączył: 03-04-2010
Reputacja:
58
@hieroshima - podałeś zwykłą relację 1:1 ;-)
@mlodyzero - masz zły design bazy, nawet może nie tyle zły, co zdenormalizowany do granic. A co w przypadku, gdy zostanie dodany dodatkowy OS dla komputera? Prościej Ci będzie zrobić coś w deseń:
Kod: Komputer: ID Sala
OS: ID Nazwa
Komputer_OS: ID_Komputer ID_OS
do tego zwykły JOIN i jedziemy.
Dobre samopoczucie w tym tygodniu sponsoruje cytat:
Cytat:Mogę tylko tylko na prawo i lewo ale na środek nie mogę.
Liczba postów: 817
Liczba wątków: 16
Dołączył: 27-04-2011
Reputacja:
45
08-01-2013, 23:00
(Ten post był ostatnio modyfikowany: 08-01-2013, 23:02 przez hieroshima.)
sorki to z pośpiechu  już się poprawiam
Komputer:
ID_komp <pk>
Nr_inter
OS:
ID_OS <PK>
Nazwa_os
id_komp <fk>
(08-01-2013, 20:38)mlodyzero napisał(a): Tylko właśnie muszę przyjąć iż w komputer muszę przechowywać dwa systemy operacyjne (ID_OS1_k , ID_OS2_k)
no i właśnie o to chodzi w relacji 1..n Niepotrzebne są te pola bo informacja o tym jaki system znajduje się na komputerze jest w tabeli os. Taki przykład:
id_os | nazwa_os | id_komp|
1 | linux | 5 |
2 | xp | 5 |
No i tu widać, że komputer o ID = 5 ma zainstalowane dwa systemy
Liczba postów: 2,587
Liczba wątków: 2
Dołączył: 03-04-2010
Reputacja:
58
@hieroshima, dalej źle  Przecież jeden OS może należeć do więcej niż jednego kompa  Bez tabeli łączącej ani rusz (vide mój post).
Dobre samopoczucie w tym tygodniu sponsoruje cytat:
Cytat:Mogę tylko tylko na prawo i lewo ale na środek nie mogę.
Liczba postów: 817
Liczba wątków: 16
Dołączył: 27-04-2011
Reputacja:
45
08-01-2013, 23:48
(Ten post był ostatnio modyfikowany: 08-01-2013, 23:50 przez hieroshima.)
zależy jak na to w zasadzie patrzeć. Każdy OS jest inny (ma inny klucz) i może być tak, że każdy OS jest rozróznialny właśnie przez owy klucz(wiem, że tu w przykładzie tym nie było). Także to zależy jak to ma wyglądać. Z tabelą łączącą to już masz relacje n..n
Liczba postów: 2,587
Liczba wątków: 2
Dołączył: 03-04-2010
Reputacja:
58
09-01-2013, 00:15
(Ten post był ostatnio modyfikowany: 09-01-2013, 00:17 przez Pedro84.)
(08-01-2013, 23:48)hieroshima napisał(a): zależy jak na to w zasadzie patrzeć. Każdy OS jest inny (ma inny klucz) i może być tak, że każdy OS jest rozróznialny właśnie przez owy klucz(wiem, że tu w przykładzie tym nie było). Także to zależy jak to ma wyglądać. Z tabelą łączącą to już masz relacje n..n Źle na to patrzysz.
System operacyjny, tak jak i komputer jest w bazie jeden. To jest obiekt. Możesz mieć różne relacje obiektów, ale nie jest tak, że obiekt jest definiowany poprzez relację.
Masz komputer, na którym masz wiele systemów. Systemy mogą być zainstalowane na wielu komputerach. To, że system A jest zainstalowany na komputerze X i Y nie determinuje jego cech, więc założenie relacji 1:m jest błędne.
To, że system jest zainstalowany na komputerze X, nie wiąże się z tym, że nie może być zainstalowany na komputerze Y, a z Twojego przykładu to wynika
Edit:
Parę dodatkowych komentarzy:
- klucz nie jest cechą systemu, jest jego atrybutem
- jeśli ma być rozróżnialny po kluczu, to już osobna relacja 1:m
- w dalszym ciągu, pomiędzy komputerami i systemami będzie relacja m:m, tylko, że systemy będą dodatkowo determinowane przez relację z kluczami
Dobre samopoczucie w tym tygodniu sponsoruje cytat:
Cytat:Mogę tylko tylko na prawo i lewo ale na środek nie mogę.
Liczba postów: 817
Liczba wątków: 16
Dołączył: 27-04-2011
Reputacja:
45
09-01-2013, 01:59
(Ten post był ostatnio modyfikowany: 09-01-2013, 02:11 przez hieroshima.)
Wiem, że z mojego przykładu to wynika i ja właśnie podałem taki przykład bo tak chciałem aby to było rozwiązane(teraz widze, że to głupie  ). Masz racje. Rozrysowałem sobie ten model bazy w datamodelerze i faktycznie musi być tak jak piszesz. Relacja n:m musi być. Dzięki za poprawę i sorry za błędy i mieszanie.
|
Podobne wątki… |
Wątek: |
Autor |
Odpowiedzi: |
Wyświetleń: |
Ostatni post |
|
Jak zrobć POP-UP w html/php i proste pytanko html? |
MrOMGWTF |
7 |
5,559 |
01-05-2021, 10:56
Ostatni post: wozniak
|
|
Strona HTML na zaliczenie - dodaj, usuń, edytuj |
Kurana |
1 |
2,088 |
01-07-2019, 03:31
Ostatni post: mpire
|
|
[HTML] Filmik zamiast obrazka wyróżniającego |
kuklaale |
1 |
2,754 |
02-11-2016, 18:36
Ostatni post: martt4dg
|
|
Problem zm osadzeniem skryptu lighbox w kodzie html |
gajowy873 |
2 |
3,703 |
24-09-2016, 02:22
Ostatni post: Anatol64
|
|
[CSS][HTML] Ustawienie obrazka z boku strony |
Witek7777 |
8 |
8,463 |
22-09-2016, 01:05
Ostatni post: pocahontas
|
Użytkownicy przeglądający ten wątek: 1 gości
|
|
Sponsorzy i przyjaciele
|
|
|