Autor Téma: V ktorých tabuľkách sa ne/nachádza hodnota PrimaryKey ako ForeignKey?  (Přečteno 675 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2648
  • Karma: 25
    • Verze Delphi: XE7 professional
Klasicky to urobím pre každú tabuľku samostatne. Teraz však ešte neviem kde všade budem definovať ForeignKey.
Dá sa to nejako zautomatizovať? Narážam na systémové tabuľky a pod.
Ak sa to dá, tak kde a ako? FireBird, Delphi alebo oboje.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1252
  • Karma: 28
    • Pepak.net
A teď prosím ještě jednou česky. Nebo slovensky, to snad taky zvládnu.

Mám takové podezření, že se ptáš na nástroje pro modelování databází, kde si nakreslíš tabulku a vztahy a ono ti to všechny klíčové klíče (pun intended) vygeneruje spolu s kompletním SQL skriptem pro založení databáze, ale jistě to nevím - zase jsi nechal úřadovat svého vnitřního Dr. Jekylla, který má doktorát z kladení nejasně formulovaných otázek...

Jestli jsem to odhadnul dobře, tak zkus třeba sharewarovou verzi Power Designer.
« Poslední změna: 17-09-2016, 18:50:37 od pepak »

Offline Petr P.

  • Nováček
  • *
  • Příspěvků: 22
  • Karma: 1
    • Verze Delphi: Turbo Delphi 2006
Myslíš tohle ?
http://stackoverflow.com/questions/20699310/how-to-get-foreign-key-referenced-table-in-firebird

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2648
  • Karma: 25
    • Verze Delphi: XE7 professional
Citace
Mám takové podezření, že se ptáš na nástroje pro modelování databází,
Nie, to mám (EMS SQL Manager). Aj keď to tam je nepoužiteľné. IBExpert bol v tom lepší. A ja som si myslel, že sa to už jasnejšie napísať nedá ;D
Citace
Myslíš tohle ?
Niečo také.
Chcem získať zoznam všetkých tabuliek v ktorých sa ForeignKey odvoláva na MyPrimaryKey. Možno malá pomôcka. Názov ForeignKey  je vo všetkých tabuľkách rovnaký. Má formát FKMyPrimaryKey.
Pre istotu príklad
Kód: Delphi [Vybrat]
  1. SQL.Text.Add(SELECT FKMyPrimaryKey FROM MYTABLE WHERE FKMyPrimaryKey = :FKMyPrimaryKey )
  2.  
Kde MYTABLE sú všetky tabuľky, kde sa FKMyPrimaryKey odvoláva na ]MyPrimaryKey

« Poslední změna: 17-09-2016, 19:24:13 od Stanislav Hruška »
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2648
  • Karma: 25
    • Verze Delphi: XE7 professional
S pomocou google. Už len tomu porozumieť ???
Kód: [Vybrat]
SELECT
R.RDB$RELATION_NAME, F.RDB$FIELD_NAME
FROM RDB$RELATION_FIELDS F
JOIN RDB$RELATIONS R ON F.RDB$RELATION_NAME = R.RDB$RELATION_NAME
AND R.RDB$VIEW_BLR IS NULL
AND (R.RDB$SYSTEM_FLAG IS NULL OR R.RDB$SYSTEM_FLAG = 0)
WHERE F.RDB$FIELD_NAME = 'FKCAANALYTIC'
ORDER BY 1, F.RDB$FIELD_POSITION
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1252
  • Karma: 28
    • Pepak.net
Viz Language Reference, kapitola System Tables.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2648
  • Karma: 25
    • Verze Delphi: XE7 professional
Hm, hneď prvé "R.RDB$RELATION_NAME".
Čo znamená to R? Tabuľka RDB$RELATION_NAME neexistuje. Aspoň ju nevidím keď si dám zobraziť systémové tabuľky. A nie je citovaná ani v tom odkaze.
« Poslední změna: 17-09-2016, 21:51:38 od Stanislav Hruška »
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1252
  • Karma: 28
    • Pepak.net
R je alias tabulky RDB$RELATIONS z tvého dotazu a RDB$RELATION_NAME je jméno políčka v této tabulce.

Možná by bylo dobré odložit manipulace se systémovými tabulkami a automatickým generováním indexů, dokud nebudeš pokročilejší v jazyce SQL. Zatím můžeš všechno, co potřebuješ, pozjišťovat ručně - sice to bude pracné a nepříjemné, ale bez těch znalostí SQL velmi riskuješ, že buď použiješ nesprávný SELECT, nebo nesprávně vyhodnotíš jeho výsledky, protože si neuvědomíš nějaký detail (např. rozdíl mezi JOIN a LEFT JOIN).

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2648
  • Karma: 25
    • Verze Delphi: XE7 professional

Citace
dokud nebudeš pokročilejší v jazyce SQL
Stano, nepíš príspevky keď už máš toho dosť >:(  Moja chyba. Únava po celom dni. Ospravedlňujem sa za ten "nezmysel".
Ráno to bola prvá myšlienka čo mi prišla na rozum. O týchto veciach v SQL viem. Aj čo znamenajú.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Upozornění: do tohoto tématu bylo naposledy přispěno před 120 dny.
Zvažte prosím založení nového tématu.

Jméno: E-mail:
Ověření:
Kolik je šest plus čtyři (slovem):