![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 84 Pomógł: 0 Dołączył: 12.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Mam czysto teoretyczne pytanie.
Mam dwie tabele które opisuje poniżej: Pierwsza tabela składającą się z dwóch kolumn: id i kategoria. Id jest nadawane przez auto_increment natomiast w kolumnie o nazwie kategoria mieszczą się nazwy kategorii i jest ich dokładnie pięć. Tabela ta wygląda tak: 1. pierwszy kategoria 2. druga kategoria 3. trzecia kategoria 4. czwarta kategoria 5. piąta kategoria Druga tabela zawiera: id, kategoria, nazwa. Id jest nadawane przez auto_increment, kategoria to cyfra która ma nawiązywać do pierwszej tabeli i kolumna nazwa posiada nazwy produktów i przykładowo wygląda tak: 1. 3. nazwa_produktu Oznacza to, że pierwszy rekord o identyfikatorze nr. 1 to produkt o nazwie: nazwa_produktu i należy do kategorii 3 Problem w tym, że 'id' w pierwszej tabeli jest przez auto_increment dlatego też jak usunę wszystkie rekordy w pierwszej tabeli i utworze je na nowo? wtedy nie będzie żadnej kategorii o identyfikatorze 3 bo wtedy tabela pierwsza będzie wyglądała tak: 6. pierwszy kategoria 7. druga kategoria 8. trzecia kategoria 9. czwarta kategoria 10. piąta kategoria Pojawia się problem bo nagle wszystkie rekordy z drugiej tabeli stracą kategorie. I jak to pogodzić? Bo ja widzę tylko jedną opcję. Oprócz kolumny 'id' w pierwszej tabeli która ma auto_increment wstawić jeszcze jedną kolumnę o nazwie np. "numer_kategorii" i na sztywno wpisywać oprócz nazwy kategorii jej numer ale czy to jest dobre rozwiązanie? Ten post edytował Zagiewa 8.04.2010, 19:47:51 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 84 Pomógł: 0 Dołączył: 12.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Klucze główne miałem nadane ale dzięki za info jak nadawać klucz obcy. Martwi mnie tylko kwestia braku możliwości usuwania rekordów z pierwszej tabeli ale to jest mało istotne bo nie sądzę aby było to konieczne. Prosił bym was o jeszcze jedną podpowiedź. Serwer który mam postawiony na kompie daje mi możliwość tworzenia baz i tabel za pomocą php ale na serwerze u mojego dostawcy hostingu jedyna możliwość tworzenia baz czy tabel jest dostępna tylko z poziomu phpmyadmin niestety :/ i chociaż jest do do przełknięcia to jak tam tworzy się klucz obcy?
Klucz główny (primary) tworzy się zaznaczając opcję: "podstawowy" przy kolumnie w tabeli a jak brzmi nazwa klucza obcego? PS. dzięki chłopaki i na pewno jeszcze o tym poczytam tym bardziej, że takie znaczniki/funkcje/opcje (jakkolwiek je nazwa) jak: FOREIGN KEY, REFERENCES kat(id) ON UPDATE RESTRICT ON DELETE RESTRICT, ON UPDATE CASCADE są mi kompletnie obce więc warto się dowiedzieć jak działają (IMG:style_emoticons/default/smile.gif) Ten post edytował Zagiewa 8.04.2010, 21:09:11 |
|
|
![]()
Post
#3
|
|
Newsman Grupa: Moderatorzy Postów: 4 005 Pomógł: 548 Dołączył: 7.04.2008 Skąd: Trzebinia/Kraków ![]() |
Martwi mnie tylko kwestia braku możliwości usuwania rekordów z pierwszej tabeli ale to jest mało istotne bo nie sądzę aby było to konieczne. ale takie jest założenie baz danych. nic z nich nie ma być kasowane. Prosił bym was o jeszcze jedną podpowiedź. Serwer który mam postawiony na kompie daje mi możliwość tworzenia baz i tabel za pomocą php ale na serwerze u mojego dostawcy hostingu jedyna możliwość tworzenia baz czy tabel jest dostępna tylko z poziomu phpmyadmin niestety :/ i chociaż jest do do przełknięcia to jak tam tworzy się klucz obcy? musisz używać tabel typu InnoDB. poczytaj tu: http://dev.mysql.com/doc/refman/5.1/en/inn...onstraints.html |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.09.2025 - 12:32 |