Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MYSQL] Klucze obce
max_mcee
post 18.01.2018, 09:19:12
Post #1





Grupa: Zarejestrowani
Postów: 156
Pomógł: 1
Dołączył: 25.09.2007

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


utworzyłem trzy tabele:
MIASTA
  1. CREATE TABLE `miasta` (
  2. `miasto_id` int(11) NOT NULL,
  3. `wojewodztwo_id` int(3) NOT NULL,
  4. `powiat_id` int(4) NOT NULL,
  5. `miasto_nazwa` varchar(255) COLLATE utf8_polish_ci NOT NULL,
  6. `miasto_status` int(1) NOT NULL
  7. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;

POWIATY
  1. CREATE TABLE `powiaty` (
  2. `powiat_id` int(11) NOT NULL,
  3. `powiat_nazwa` varchar(255) COLLATE utf8_polish_ci NOT NULL,
  4. `powiat_status` int(1) NOT NULL
  5. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;

WOJEWODZTWA
  1. CREATE TABLE `wojewodztwa` (
  2. `wojewodztwo_id` int(11) NOT NULL,
  3. `wojewodztwo_nazwa` varchar(255) COLLATE utf8_polish_ci NOT NULL,
  4. `wojewodztwo_status` int(1) NOT NULL
  5. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;


przy próbie założenia klucza obcego na tabelę POWIATY, kolumna `powiat_id`
  1. ALTER TABLE `powiaty` ADD FOREIGN KEY (`powiat_id`) REFERENCES `miasta`(`powiat_id`);

otrzymuje taki o to błąd:
#1215 - Cannot add foreign key constraint

Co może być nie tak?
Go to the top of the page
+Quote Post
nospor
post 18.01.2018, 09:25:43
Post #2





Grupa: Moderatorzy
Postów: 36 446
Pomógł: 6292
Dołączył: 27.12.2004




Bo klucz obcy zaklada sie w tabeli, ktorej jest obce id - jak sama nazwa wskazuje.
Tak wiec pole powiat_id jest kluczem obcym w tabeli miasta.

ps: co wg ciebie robi to
int(1)
?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
max_mcee
post 18.01.2018, 09:30:18
Post #3





Grupa: Zarejestrowani
Postów: 156
Pomógł: 1
Dołączył: 25.09.2007

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


Cytat(nospor @ 18.01.2018, 09:25:43 ) *
Bo klucz obcy zaklada sie w tabeli, ktorej jest obce id - jak sama nazwa wskazuje.
Tak wiec pole powiat_id jest kluczem obcym w tabeli miasta.

ps: co wg ciebie robi to
int(1)
?


Ok, zadziałało smile.gif

Co do Twojego pytania, to ogranicza możliwość umieszczenia wartości w tym przypadku od 1-9, bo statusy które przewiduje to 1 lub 2.
To złe podejście?
Go to the top of the page
+Quote Post
viking
post 18.01.2018, 09:47:40
Post #4





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


Może by było dobre gdyby faktycznie tak działało.
https://prophp.pl/advice/show/12/co_oznacza..._bazie_mysql%3F


--------------------
Go to the top of the page
+Quote Post
max_mcee
post 18.01.2018, 10:02:41
Post #5





Grupa: Zarejestrowani
Postów: 156
Pomógł: 1
Dołączył: 25.09.2007

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


Cytat(viking @ 18.01.2018, 09:47:40 ) *
Może by było dobre gdyby faktycznie tak działało.
https://prophp.pl/advice/show/12/co_oznacza..._bazie_mysql%3F

Ale ze mnie dzban smile.gif
Dziękuję za pomoc i życzę miłego dnia smile.gif
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.04.2024 - 13:21