Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]Łączenie tabel za pomocą kluczy
Zagiewa
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Szeszek1992
post
Post #2





Grupa: Zarejestrowani
Postów: 117
Pomógł: 29
Dołączył: 20.05.2009

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


  1. CREATE TABLE kat (
  2.  
  3. id SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  4. nazwa text NOT NULL
  5.  
  6. )


  1. CREATE TABLE produkt (
  2.  
  3. id SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  4.  
  5. nazwa text NOT NULL,
  6. kategoria SMALLINT NOT NULL,
  7.  
  8. FOREIGN KEY (kategoria)
  9.  
  10. REFERENCES kat(id) ON UPDATE RESTRICT ON DELETE RESTRICT
  11.  
  12. )
  13.  

Mniej więcej tak... Resztę doczytasz w manualu

Ten post edytował Szeszek1992 8.04.2010, 20:49:00
Go to the top of the page
+Quote Post

Posty w temacie
- Zagiewa   [MySQL]Łączenie tabel za pomocą kluczy   8.04.2010, 19:44:00
- - luck   Do tego służą klucze obce. Używając ich możesz cał...   8.04.2010, 19:49:17
- - Zagiewa   Tak rozumiem, że są klucze główne i obce i u mnie ...   8.04.2010, 20:38:58
- - piotrooo89   troszkę mylisz pojęcia. polecam poczytanie o klucz...   8.04.2010, 20:46:05
- - Szeszek1992   [SQL] pobierz, plaintext CREATE TABLE kat (...   8.04.2010, 20:47:14
- - luck   Koledzy już Ci trochę napisali, ja dodam jeszcze t...   8.04.2010, 21:04:39
- - Zagiewa   Klucze główne miałem nadane ale dzięki za info jak...   8.04.2010, 21:06:32
|- - piotrooo89   Cytat(Zagiewa @ 8.04.2010, 22:06:32 )...   8.04.2010, 21:15:42
- - Szeszek1992   W phpMyAdminie możesz dodawać tabele zapytaniem SQ...   8.04.2010, 21:28:26
- - Zagiewa   Dzięki wielkie działa - chyba tzn stworzyłem na n...   9.04.2010, 13:05:55
- - piotrooo89   proszę o używanie odpowiedniego bbcode.   9.04.2010, 13:06:57
- - Zagiewa   Zgaduje, że za bardzo namotałem, że nie odpisujeci...   10.04.2010, 00:08:08
- - piotrooo89   nie mam w zwyczaju prosić 2 razy. temat zamykam. o...   10.04.2010, 08:50:59
- - Zagiewa   Udało mi się chociaż nie wiem czy jest to dobry sp...   11.04.2010, 00:37:15
- - mortus   Hmm... Chyba coś robisz źle. Dlaczego? W tabeli li...   11.04.2010, 09:22:27
- - Zagiewa   Masz rację mortus będę chciał wyświetlić tylko te ...   13.04.2010, 02:16:04
- - mortus   Pokaż to co do tej pory zrobiłeś (wszystko), to bę...   13.04.2010, 08:09:57
- - Zagiewa   Tabele w wyglądają tak: [PHP] pobierz, plaintext $...   13.04.2010, 14:02:46


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 11.01.2026 - 15:28