![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 34 Pomógł: 1 Dołączył: 25.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Tabela 1. Producenci Kod ID MARKA 1 Sony 2 Samsusng 3 Lg Tabela 2. Towary Kod ID ID_PRODUCENTA NAZWA 1 2 monitor 2 2 telewizor 3 3 dvd-rom Do tej pory dane wybieralem przy pomocy LEFT JOIN:
Stosujac ujemne wartosci w polu ID_PRODUCENTA (nie majace odpowiednikow w tabeli Producenci) okreslam np: ID_PRODUCENTA = -1 gdy nieznany producent z terenu Europy ID_PRODUCENTA = -2 gdy nieznany producent z terenu Azji itd... W takich przypadkach otrzymuje w wynikowym zapytaniu pole MARKA wypelnione wartoscia NULL a ujemna wartosc pola ID_PRODUCENTA wskazuje jaki komunikat ma zostac wyswietlony przy danym produkcie z powodu braku producenta. Minusem tej 'calej zabawy' jest koniecznosc sprawdzania przy usuwaniu rekordow z tabeli Producenci, czy nie ma jakis rekordow w tabeli Towary podpietych pod usuwanego producenta. Zdaje sobie sprawe, ze mozna to wykonac w sposob bardziej profesjonalny przy wykorzystaniu kluczy i relacji laczacych obie tabele. Moze mi ktos podsunac pomysl? Czy jest mozliwosc utowrzenia takiej relacji, ktora nie wymusza posiadania prawidlowego klucza przez tabele podrzedna (chodzi o ujemne ID_PRODUCENTA)? Jezeli nie, to w jaki sposob rozwiazac ten problem? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
przecież nic nie stoi na przeszkodzie, żebyś w tabeli Producenci miał dwa (puste) wpisy dla dla tych producentów z Azji i Europy - wtedy nie musisz kombinować z kluczami nie spełniającymi relacji...
co do kontroli towarów powiązanych z producentem, pole ID_PRODUCENTA w tabeli towary musisz zdefiniować jako klucz obcy z kaskadowym usuwaniem / aktualizacją, czyli stwórz tabele Towary następująco:
Ten post edytował nevt 2.03.2008, 13:45:06 -------------------- - Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... - |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 34 Pomógł: 1 Dołączył: 25.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Ogolnie myslalem nad takim sposobem, jednak z gory nie wiem ile bedzie tych 'nietypowych kluczy'.
No i pole autoincrement ogranicza mnie z recznym wpisaniem tych danych np z ujemnymi warotsciami... musialy by one byc z kolejnego przydzialu. Drugi problem jest taki, ze rekordy z takimi kluczami nie powinny byc widoczne w slowniku producentow.....tzn nie powinny byc traktowane jako pola edytowalne przez usera. Cytat przecież nic nie stoi na przeszkodzie, żebyś w tabeli Producenci miał dwa (puste) wpisy dla dla tych producentów z Azji i Europy - wtedy nie musisz kombinować z kluczami nie spełniającymi relacji... A jest jakis sposob na wpisywanie kluczy obcych nie majacych swojego klucza podstawowego ? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 16:30 |