Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Relacje w MYSQL
Forum PHP.pl > Forum > Bazy danych > MySQL
Indeo
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 .
Sh4dow
moze chodzi ci o foreign key ? a moze o widok nie wiem jakos tak dziwnie to wytlumaczyłeś.
Indeo
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
dr_bonzo
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.
Sh4dow
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.