Forum » Programiranje » MySQL tabele na podlagi vrednosti
MySQL tabele na podlagi vrednosti
marjan_h ::
Ali se mogoče, da v MySQL bazi narediti tabelo Oseb, ki ima eno od vrstic Poklic, katera lahko zavzame samo vrednosti "Profesor", "Učitelj", "Hišnik". Nato se tabelo Oseb, poveže s tujim ključem od Tabel poklicev? Torej imamo 4 različne tabele; Osebe, Profesor, Učitelj, Hišnik. In na podlagi vrednosti v tabeli Osebe se ta poveže z ustrezno drugo tabelo (Profesor, Učitelj, Hišnik) - (Primarni ključ - Tuji ključ).
Hvala.
Hvala.
HotBurek ::
Ali se da ali ne tako, kot si napisal, bom ugibal da ne.
Po reglcih se pa naredijo dve tabele; Oseba in Poklici.
V tabeli Poklici je takole:
id | poklic
0 | Profesor
1 | Učitelj
2 | Hišnik
V tabeli Osebe pa imaš FK, ki je vezan na PK (id) v tabeli Poklici.
Primer tabele Osebe:
id | ime | fk_poklic
0 | Janez | 0
1 | Micka | 2
2 | Franz | 1
Potem pa narediš SELECT QUERY z JOIN-tom:
SELECT `os`.`id` AS 'os_id', `os`.`ime` AS 'os_ime', `po`.`poklic` AS 'po_poklic',
FROM `database_1`.`osebe` AS `os`
JOIN `database_1`.`poklici` AS `po`
ON `os`.`fk_poklic` = `po`.`id`;
Janez je profesor, Micka hišnik, Franz pa učitelj.
Po reglcih se pa naredijo dve tabele; Oseba in Poklici.
V tabeli Poklici je takole:
id | poklic
0 | Profesor
1 | Učitelj
2 | Hišnik
V tabeli Osebe pa imaš FK, ki je vezan na PK (id) v tabeli Poklici.
Primer tabele Osebe:
id | ime | fk_poklic
0 | Janez | 0
1 | Micka | 2
2 | Franz | 1
Potem pa narediš SELECT QUERY z JOIN-tom:
SELECT `os`.`id` AS 'os_id', `os`.`ime` AS 'os_ime', `po`.`poklic` AS 'po_poklic',
FROM `database_1`.`osebe` AS `os`
JOIN `database_1`.`poklici` AS `po`
ON `os`.`fk_poklic` = `po`.`id`;
Janez je profesor, Micka hišnik, Franz pa učitelj.
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
Zgodovina sprememb…
- spremenilo: HotBurek ()
Ahim ::
Ali se mogoče, da v MySQL bazi narediti tabelo Oseb, ki ima eno od vrstic Poklic, katera lahko zavzame samo vrednosti "Profesor", "Učitelj", "Hišnik". Nato se tabelo Oseb, poveže s tujim ključem od Tabel poklicev? Torej imamo 4 različne tabele; Osebe, Profesor, Učitelj, Hišnik. In na podlagi vrednosti v tabeli Osebe se ta poveže z ustrezno drugo tabelo (Profesor, Učitelj, Hišnik) - (Primarni ključ - Tuji ključ).
Hvala.
Seveda se da, pac JOIN naredis po vec kot enem kriteriju:
SELECT vse,mogoce,stvari,ki,te,zanimajo FROM osebe o LEFT JOIN profesorji p ON o.oseba_type = 'Profesor' AND o.oseba_id = p.id LEFT JOIN ucitelji u ON o.oseba_type = 'Ucitelj' AND o.oseba_id = u.id LEFT JOIN hisniki h ON o.oseba_type = 'Hisnik' AND o.oseba_id = h.id
Ali pa UNION treh subqueryjev, ce se stolpce da zdruziti po vrednostih, ampak ce niso profesor, ucitelj in hisnik (po opisu modela) med sabo bistveno drugacni, je vprasanje ce se splaca, kot je omenil ze HotBurek - imas pac eno tabelo pa je to to.
Aja pa ce je na zacetku dejansko misljeno, da mora biti oseba_type samo iz nabora omejenih vrednosti (in ne da je nastavljena samo na eno od njih), moras pa dodati se sifrant teh vrednosti, kar pomeni ali enum (bljak ) ali pa loceno tabelo in foreign key constraint na oseba_type (potem pa niso vec samo 4 tabele, kot zelis v nadaljevanju vprasanja, temevc 5).
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | SQL pomočOddelek: Programiranje | 2390 (1804) | miko22 |
» | SQL Parent key not foundOddelek: Programiranje | 1061 (984) | Ciklamen |
» | podatkovne baze pomočOddelek: Programiranje | 3051 (2604) | kr?en |
» | Objektno programiranje JavaOddelek: Programiranje | 1380 (1238) | Spartacus |
» | Access in malo večja bazaOddelek: Programska oprema | 1071 (966) | |Luka| |