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

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Môžem v tabuľke colors nastaviť aby bol primárny kľúč color_name typu varchar(30)? Ak áno ako? Aby… nový
Petkooo 05.04.2016 17:19
Petkooo
Udelat to samozrejme muzes, ale je to hloupe. Krome toho by mel byt klic typu Char(30), ne VarChar(3… nový
Jan Fiala 05.04.2016 20:02
Jan Fiala
Takže pri zadávaní fariem pri vlajku musím mať pred očami druhú tabuľku s idčkami? Nie je najaký spô… nový
Petkooo 05.04.2016 21:05
Petkooo
Neč. Už jsem ti psal, že PHPMyAdmin není uživatelský nástroj, ale nástroj k administraci DB. Naiš si… poslední
Jan Fiala 06.04.2016 06:41
Jan Fiala

Môžem v tabuľke colors nastaviť aby bol primárny kľúč color_name typu varchar(30)? Ak áno ako?

Aby som mohol vložiť namiesto tohto:

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

toto:

INSERT INTO `flags` (`flag_id`, `flag_name`, `color_one`, `color_two`, `color_three`) VALUES
(NULL, 'slovakia', 'biela', 'modra', 'cervena');

Zpět do poradny Odpovědět na původní otázku Nahoru