Autor Zpráva
hazi
Profil *
Zdravim,

presel jsem v MySQL z enginu MyISAM na InnoDB kvuli cizim klicum. Mam ale problem s nasledujici veci - jakym zpusobem se do tohoto sloupce vkladaji data? Sloupec se odkazuje na ciselnik napriklad s akademickymi tituly. Kazdy titul ma svoje id, ktere se zobrazuje v zminenem cizim klici. Neni ale pohodlne vkladat do tohoto ciziho klice id titulu, to uzivatel nezna, chci vkladat ing., bc. atd pricemz ulozeno bude id titulu z ciselniku...
Dekuju za rady
AM_
Profil
Řešení jsou dvě:
1 - na straně aplikace (jsi na fóru o PHP, tak předpokládám, že se jedná o webovou aplikaci; mimochodem tento dotaz patřil spíš do tématu "databáze"):
<select name="titul">
  <option value="1">Bc</option>
  <option value="2">Mgr</option>
</select>

Takže uživatel vidí titul, ale backendu se už odešle ID.
2 - na straně databáze:
INSERT INTO lidi (jmeno, titul) VALUES('Franta Vomacka', (SELECT id FROM tituly WHERE name='Mgr'))
hazi
Profil *
Ano, jedna se o web aplikaci :)
Tohle mi pomohlo, napada me ale jeste jedna otazka - mam tabulku lide (id, jmeno) a tabulku cizinci(id, clovek, zeme). clovek v tabulce cizinci je cizi klic s odkazem na tabulku lide, to proto, aby nedochazelo k redundanci, protoze ne u vsech lidi eviduji zemi. Jakym zpusobem ukladam v PHP zaznam cizince? Podle me to musi byt dva inserty v jednom dotazu, prvnim vlozim zaznam do tabulky lide, druhym do tabulky cizinci. Je to tak spravne? Nedela se to jinak?
nightfish
Profil
ve druhém dotazu potřebuješ ID z tabulky `lide`, takže jinak než přes dva dotazy to nejde, tvůj postup je v tomto ohledu správný
na druhou stranu si nejsem zcela jist, že toto uspořádání tabulek je úplně vhodné... v takto jednoduchém případě bych osobně volil tabulku `lide`(`id`, `jmeno`, `zeme`), přičemž výchozí hodnota u `zeme` bude NULL
hazi
Profil *
No, samozrejme jsem neuvadel celou strukturu databaze a tabulek, je tam daleko vic sloupcu, ktere jsou jen v tabulce cizinec, tudiz jsem navrhl tabulku lide jako vychozi, prunik toho, co bude i v ostatnich tabulkach a speciality jsou v dalsich tabulkach...
Nebo myslite, ze by bylo lepsi mit tabuek vic, bez referenci, pricemz v kazde z nich by byly sloupce jako jmeno, prijmeni, adresa ci kontakt?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0