Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Relacje w MYSQL
Indeo
post 17.11.2006, 08:12:40
Post #1





Grupa: Zarejestrowani
Postów: 295
Pomógł: 7
Dołączył: 26.03.2004
Skąd: Opole

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


Czy MYSQL obsługuje relacje, które na stałe są zapisane w bazie? Nie chodzi mi o zwykłe łączenie tabel innerami itd. tylko o dosłownie zdefiniowane (istniejące cały czas a nie definiowane podczas zadawania zapytania) relacje w bazie danych (które tabele, jakimi kluczami sie łączą) tak jak działa to w innych systemach baz danych (nawet w MSAcces) Potrzebne mi to jest do szybkiego tworzenia formularzy na podstawie pojedyńczych zapytań do bazy. Dzięki relacjom taki np MSaccess podczas generowania formularzy wie, które pola zapytania maja być polami tekstowymi, a które listami select pobierającymi liste dozwolonych wartości z relacyjnie dowiązanej do pola tabeli .


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Sh4dow
post 17.11.2006, 10:44:26
Post #2





Grupa: Zarejestrowani
Postów: 569
Pomógł: 0
Dołączył: 17.08.2003
Skąd: Dąbrowa Górnicza

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


moze chodzi ci o foreign key ? a moze o widok nie wiem jakos tak dziwnie to wytlumaczyłeś.


--------------------
Warsztat: Linux: PHP, MySQL, Apache, NetBeans, C++, Qt-Creator
Użytkownik, słowo którego specjaliści IT używają, gdy chcą powiedzieć idiota
Zarządzaj swoim budżetem domowym
Go to the top of the page
+Quote Post
Indeo
post 17.11.2006, 11:43:10
Post #3





Grupa: Zarejestrowani
Postów: 295
Pomógł: 7
Dołączył: 26.03.2004
Skąd: Opole

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


Chyba niezupełnie o to chodzi. Klucze obce bardziej służą ochronie integralności danych niż opisywaniu struktury logicznej.

Wiem, że niektóre bazy danych zawierają w sobie zdefiniowany zapis relacji. Tak naprawde wszystkie tabele w bazie danych jakiegoś programu są ze soba powiązane a logika tego powiązania jest w miare stała i wynika z projektu aplikacji bazodanowej. Możemy to nazwać "mapą relacji" Tak wygląda ona np w MSAcess:

Np. mam tabele ze słownikiem nazw ulic, słownikiem dostawców rur, materiałów rur itd.
Mam tez tabele która przypisuje ulicy, dostawce,materiał i długość rury

| id_ulicy | id_dostawcy | id_materialu | dlugosc_rury |

I kiedy np. chcę wyświetlic formularz edycji rekordu w tej tabeli to musze wykonać szereg zapytań pomocniczych dzięki którym mogę stworzyć stosowne listy wyboru. Np. Muszę wyświetlić liste nazw ulic w danym mieście żeby uzytkownik wybrał ulice ze słownika ulic, czy wybrał odpowiedniego dostawcę

Gdyby w bazie były zapisane te relacje tabela1.klucz - tabela2.klucz skrypt sam wiedziałby kiedy w formularzu ma wypisać pole tekstowe z pojedyńczą wartościa do wpisania, a kiedy liste wyboru z wybrana (bieżącą) wartością.

Po co mam implementować relacje (inner join, czy widoki) za każdym razem jak chce coś pobrać czy wyświetlić skoro są one stałe.

Chodzi mi o to, żeby do skryptu tworzącego formularz przekazac tylko jedno zapytanie SQL a on sam ma wiedzieć co jak wyświetlic odczytując informacje z mapy relacji.

Pewnie nieźle zamieszałem smile.gif


--------------------
Go to the top of the page
+Quote Post
dr_bonzo
post 17.11.2006, 12:00:06
Post #4





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Cytat
Klucze obce bardziej służą ochronie integralności danych niż opisywaniu struktury logicznej.
Tja, a czym sa te kreski miedzy tabelami i te wszystkie ID_czegostam? To sa wlasnie klucze obce. Wzkazuja one polaczenia miedzy tabelami.

Cytat
I kiedy np. chcę wyświetlic formularz edycji rekordu w tej tabeli to musze wykonać szereg zapytań pomocniczych dzięki którym mogę stworzyć stosowne listy wyboru. Np. Muszę wyświetlić liste nazw ulic w danym mieście żeby uzytkownik wybrał ulice ze słownika ulic, czy wybrał odpowiedniego dostawcę

A jaki problem w napisaniu funkcji pobierajacej liste ulic z danego miasta? Przeciez Access (nie mam, nie uzywam) to tez robi, musi pobrac liste ulic i wrzucic je do <select>A
No niby da sie to zrobic jednym zapytaniem (OUTER JOIN tak aby wybrac ulice i polaczyc z miastami i userami -- tylko znajdz potem tego usera ktorego chcesz edytowac...) ale jest to zagmatwane i prosciej zrobic to dwoma -- pobrac rekord usera i pozniej liste ulic z danego miasta.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Sh4dow
post 17.11.2006, 12:18:40
Post #5





Grupa: Zarejestrowani
Postów: 569
Pomógł: 0
Dołączył: 17.08.2003
Skąd: Dąbrowa Górnicza

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


aha, no to sory, ale ty szukasz skryptu budujacego formularz a nie zapytania sql.
Zachowując standard nazewnictwa kolumn w bazie to kolumna powiedzmy car_id powinna odwolywac sie do tablicy cars lub car zalezy od zlozonosci. Wiec to nie baza ale skrypt jest wymagany chyba.


--------------------
Warsztat: Linux: PHP, MySQL, Apache, NetBeans, C++, Qt-Creator
Użytkownik, słowo którego specjaliści IT używają, gdy chcą powiedzieć idiota
Zarządzaj swoim budżetem domowym
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: 19.07.2025 - 05:47