Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem MySQL, phpmyadmin, cudzí kľúč

Vytvoril som si databázu, definoval cudzie kľúče a naplnil ju údajmi (mám dva problémy)

CREATE DATABASE flag_colors;

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

CREATE TABLE colors (
color_id INT NOT NULL AUTO_INCREMENT,
color_name varchar(30),
PRIMARY KEY(color_id)
);

CREATE TABLE flags (
flag_id INT NOT NULL AUTO_INCREMENT,
flag_name varchar(30),
color_one int,
color_two int,
color_three int,
PRIMARY KEY (flag_id),
FOREIGN KEY(color_one) REFERENCES colors(color_id),
FOREIGN KEY(color_two) REFERENCES colors(color_id),
FOREIGN KEY(color_three) REFERENCES colors(color_id)
);

INSERT INTO `colors`(`color_name`) VALUES ("white"), ("blue"), ("red"), ("yellow"), ("green");

INSERT INTO `flags` (`flag_id`, `flag_name`, `color_one`, `color_two`, `color_three`) VALUES
(NULL, 'slovakia', '1', '2', '3'),
(NULL, 'czech republic', '1', '2', '3'),
(NULL, 'hungary', '3', '1', '5');

-------------------------------------------------- -----
Problém 1:

Chcel by som aby sa mi v phpMyAdmin-e pri vkladaní údajov do tabuľky flags, stĺpcov color_one/two/three
ponúkali možnosti z tabuľky colors stĺpca color_name namiesto color_id. Problém je v tom, že neviem ako
spraviť aby stĺpce color_one/two/three nadobúhadli hodnoty zo stĺpca color_name, pretože aj keď zmením dátový
typ na varchar() namiesto int nefunguje mi to. Viem spraviť zo stĺpca color_name varchar(30) primárny kľúč?

Problém 2:
Pri vkladaní údajov do tabuľky flags musím vyplniť všetky polia ktoré odkazujú na cudzí kľúč, ja by som chcel,
aby mohli obsahovať aj prázdnu hodnotu, napríklad:

(NULL, 'poland', '1', '3', ''),
(NULL, 'ukraine', '1', '4', ''),
(NULL, 'austria', '1', '3', '')

Ďakujem za každú radu

Odpověď na otázku

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny