Autor Téma: Testovacie údaje do spojovacej tabuľky M:N  (Přečteno 288 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2996
  • Karma: 29
    • Verze Delphi: XE7 professional
Testovacie údaje do spojovacej tabuľky M:N
« kdy: 20-11-2017, 20:42:27 »
Potrebujem vygenerovať údaje spojovacej tabuľky pre väzbu M:N záznamy. V podstate potrebujem vytvoriť väzbu 1:N + nejaké malé % navyše. Na väzbu M:N.
Pre predstavu. Mám byty a ich vlastníkov. A niektoré byty majú počas roka viacerých vlastníkov (typicky dvoch). To sú tie % navyše.
Ako na to? Mám EMS Data Generator.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Delfin

  • Hrdina
  • ****
  • Příspěvků: 431
  • Karma: 21
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:Testovacie údaje do spojovacej tabuľky M:N
« Odpověď #1 kdy: 20-11-2017, 20:48:59 »
Ako na to? Mám EMS Data Generator.

Zeptej se podpory :P To je to co bys sklidil na Q&A webech. Poradil bych jen pro 3rd party ktera nechce takovy ranec za neco co je i free bez vyssiho vyuziti. Nabizim tedy, pokud mas problem s anglictinou poradim s prekladem (tam i zpet) ;) V pripade nouze si muzu nainstalovat trial na virtualni stroj a zeptat se sam; v takovem pripade potrebuji presnou definici problemu :)
« Poslední změna: 20-11-2017, 21:09:59 od Delfin »
A co chudinky ovce? Koupíš jim snad plovací vesty? Nebo jim nasadíš chůdy? Ještě lepší, kdybys je zkřížil s delfíny na ovce hopkavé!

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2996
  • Karma: 29
    • Verze Delphi: XE7 professional
Re:Testovacie údaje do spojovacej tabuľky M:N
« Odpověď #2 kdy: 20-11-2017, 21:49:50 »
Vďaka. Ja som mal na mysli nejaký všeobecný postup. Prikladám možnosti generátora.
  • Prvý riadok je pre cudzie kľúče.
  • Druhý riadok pre jedinečné hodnoty. A tu mi vadí, že nemôžem zadať požadovaný počet znakov. Také IČO a DIČ. Robil som to dodatočne. O tom rozmýšľam, že by som im to "nejako" napísal. Verzia 3.0 je z roku 2008. Ja mám 3.0.1.3 ale neviem z ktorého roka je.
Môžem Ti poslať návod. 1,7 MB. Číta sa rýchlo.
« Poslední změna: 20-11-2017, 21:53:01 od Stanislav Hruška »
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Delfin

  • Hrdina
  • ****
  • Příspěvků: 431
  • Karma: 21
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:Testovacie údaje do spojovacej tabuľky M:N
« Odpověď #3 kdy: 20-11-2017, 22:09:48 »
nemôžem zadať požadovaný počet znakov. Také IČO a DIČ.

Navod pro retezcove hodnoty zda se byt i online, a pro ceske ICO a DIC se mi zda, ze mas moznost pro nahodny generator moznost definovat minimalni a maximalni delku znaku. Cekal bych, ze pokud definujes stejnou delku pro obe tyto vlastnosti, vygenerovany string bude konstantni delky.

Pro pouziti hodnot (klicu) z vazebni tabulky (moznost Get data from Field) chybi v helpu specifikace.
« Poslední změna: 20-11-2017, 22:17:00 od Delfin »
A co chudinky ovce? Koupíš jim snad plovací vesty? Nebo jim nasadíš chůdy? Ještě lepší, kdybys je zkřížil s delfíny na ovce hopkavé!

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2996
  • Karma: 29
    • Verze Delphi: XE7 professional
Re:Testovacie údaje do spojovacej tabuľky M:N
« Odpověď #4 kdy: 20-11-2017, 22:25:47 »
To čo píšeš platí pre náhodne generované dáta. Aj to tak používam.
Ale ja to mám ako "unique" a tým pádom sa tam zobrazí možnosť incremental. Ale nie náhodné generovanie. To by nezaistilo jedinečnosť údajov. A tam sa dĺžka nedá nastaviť :(  Viď predchádzajúci príspevok a obrázok. Ale to ma netrápi. Urobil som to pomocou UPDATE.
Trápi ma tá väzba M:N. Rád by som aj spustil nejaký ten výpočet. Aj keď s nezmyselnými údajmi. Lebo ja teraz netuším ako som na tom s výkonom = ako dlho to bude trvať. A či nemám rozmýšľať nad nejakou optimalizáciou. Neviem akou, keď som rád, že mi to vôbec funguje ;D ;D ;D
Pre posúdenie výkonu pri zobrazovaní formulárov by to malo stačiť. Tam tá integrita údajov až tak nezaváži.
Pre zrýchlenie práce s DB mám ešte rezervu vo vytvorení indexov. Ja som ešte žiadne nedefinoval.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Delfin

  • Hrdina
  • ****
  • Příspěvků: 431
  • Karma: 21
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:Testovacie údaje do spojovacej tabuľky M:N
« Odpověď #5 kdy: 20-11-2017, 22:50:43 »
Ale nie náhodné generovanie

Tomu asi nechapu. Na tom obrazku je, tak jak tomu rozumim (s tim softem jsem nikdy nedelal), generator pro sloupec ktery je navazbeny na cizi klic. A ten cizi klic se snazis generovat? Nemelo by to byt naopak? Ze vyberes detail tabulku a pro ni generujes "nahodny" master klic z master tabulky?

Logicky ano, protoze detailni zaznam nelze vygenerovat na zaklade master zaznamu (pokud nema generovatelnou definici).
« Poslední změna: 20-11-2017, 23:15:05 od Delfin »
A co chudinky ovce? Koupíš jim snad plovací vesty? Nebo jim nasadíš chůdy? Ještě lepší, kdybys je zkřížil s delfíny na ovce hopkavé!

Offline martinnr

  • Plnoletý
  • ***
  • Příspěvků: 137
  • Karma: 2
    • Verze Delphi: 7,2009,XE7
Re:Testovacie údaje do spojovacej tabuľky M:N
« Odpověď #6 kdy: 21-11-2017, 08:17:55 »
aky typ databazy to je?
napr. v (primitivnom) databazovom nastroji FlameRobin mi dovoli aj pre pole s podmienkou jedinecnej hodnoty zadat bud rozsah hodnot na generovanie, alebo hodnoty z inej tabulky (to je aj tu), alebo z nejakeho suboru (textovy, zoznam hodnot). taktiez je mozne nastavit, ci uprednostnit nahodne hodnoty pred sekvencne generovanymi.
neviem presne ako by si poradil so suborom, kde by bolo napr. 100 hodnot a ja som mu dal generovat 100 zaznamov. ci by si sledoval pouzitie jednotlivych hodnot a nepouzil jednu hodnotu dvakrat.
dobre to chapem, ze tu by ako ten primarny jedinecny udaj mal byt ICO/DIC v prvej tabulke a v druhej potom na kazdy zaznam z prvej vygenerovat N zaznamov? previazat cez to ICO/DIC? v tomto pripade to vidim, cez ten subor so zoznamom hodnot jedine. niekde zohnat nejaku skupinu takych udajov a pouzit ich. ale v podstate aj nechat si vygenerovat z ciselneho rozsahu by sa dalo. pre nejake testovacie ucely by to stacilo.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2996
  • Karma: 29
    • Verze Delphi: XE7 professional
Re:Testovacie údaje do spojovacej tabuľky M:N
« Odpověď #7 kdy: 21-11-2017, 09:15:48 »
Berme to tak, že mám domy. Tie majú byty. Tu potrebujem väzbu 1:1. Každý byt je priradený len jediný raz = k jednému domu. A byty vlastnia vlastníci. Sem tam niektorý byt vlastnia dvaja vlastníci. Preto väzba M:N cez väzobnú tabuľku.
To Delphin
Citace
generator pro sloupec ktery je navazbeny na cizi klic. A ten cizi klic se snazis generovat?
Joj, až taký blbec nie som :)  Ja by som len chcel väzbu 1:N + nejaké nízke % M:N. Viď byt vlastník.

Mne stále vŕta v hlave možnosť SQL query. Ale neviem ako to zrealizovať a ako to presne funguje. Aké tam sú podmienky.
A extra popis ku generovaniu údajov nie je. Aspoň som na to nenarazil. Myslím tým, ako ich rozhadzuje. Myslím tým to, že mám cudzí kľúč a tabuľka na ktorú sa odkazuje má 100 záznamov - domy. Ja generujem 10 000 záznamov - byty. Mám pocit, že to urobí rovnomerne. Pre každý FK 100 záznamov. Každý dom 100  bytov. Ale naisto to neviem. A už vôbec neviem ako to bude, ak dám generovať 10 050 bytov. To bude mať 50 domov 101 bytov a ostatné 100? Alebo "prvý" dom 150 bytov a ostatné 100?
Asi si urobím nejaký test a skúsim čosi nájsť na internete. Na stránke EMS som akosi nenašiel diskusiu. A FaQ je o ničom. To sú len ich vymyslené otázky.
To martinnr
Citace
aky typ databazy to je?
FireBird.
Citace
v (primitivnom) databazovom nastroji FlameRobin mi dovoli aj pre pole s podmienkou jedinecnej hodnoty zadat bud rozsah hodnot na generovanie,
Ja som mal veľký problém s jeho inštalovaním. Mám vypnutý update OS a tak bol problém s aktualizáciami. Tak som to vzdal.
Citace
dobre to chapem, ze tu by ako ten primarny jedinecny udaj mal byt ICO/DIC v prvej tabulke a v druhej potom na kazdy zaznam z prvej vygenerovat N zaznamov?
Nie, to sú dve samostatné úlohy/problémy. Vôbec mi nenapadlo, žeby to niekto mohol spájať dokopy :(
Ale tú jedinečnosť neriešim. Update, práca naviac, to urobí. A určite im to napíšem.
Idem si prečítať help. Možno tam o rozložení generovaných záznamov nejaká zmienka je.

Na koniec: keďže posledná verzia je stará 9 rokov, tak predpokladám, že im to veľmi na odbyt nejde.

Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline martinnr

  • Plnoletý
  • ***
  • Příspěvků: 137
  • Karma: 2
    • Verze Delphi: 7,2009,XE7
Re:Testovacie údaje do spojovacej tabuľky M:N
« Odpověď #8 kdy: 21-11-2017, 09:47:15 »
ak tie tabulky pre byty, domy, vlastnikov nie su zlozite, resp. generovanie hodnot do nich ma byt len do 1-2 stlpcov do kazdej ti staci, tak napis ake typy poli pre jednotlive udaje ti treba, mozem ti skusit vygenerovat nahodne data. a nasledne z nich ti urobit insert script pre narvanie do tvojej db. to by nemalo byt vela roboty.

Offline martinnr

  • Plnoletý
  • ***
  • Příspěvků: 137
  • Karma: 2
    • Verze Delphi: 7,2009,XE7
Re:Testovacie údaje do spojovacej tabuľky M:N
« Odpověď #9 kdy: 21-11-2017, 09:48:09 »
ale chapem, ak si to chces predsa len poriesit sam, v tom EMS, z takej profesionalnej zvedavosti...

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 1866
  • Karma: 91
    • Verze Delphi: D2007, XE3, DX10
Re:Testovacie údaje do spojovacej tabuľky M:N
« Odpověď #10 kdy: 21-11-2017, 09:54:05 »
Na koniec: keďže posledná verzia je stará 9 rokov, tak predpokladám, že im to veľmi na odbyt nejde.
Jestli kdyz by sis nekde vedle aplikace nastrikal nejakou "Consoli" a v te si ta data vygeneroval, tak bys to uz davno nemel hotovy a mohl bys to mit presne jak to potrebujes... ;-)

Jinak zacit vyvoj s Consoli pred vlastni aplikaci/sluzbou je u nas celkem standardni postup. A osobne bych nikdy (krome nejake jednorazkovy) nejake takove podezrele EMS generatory nepouzil.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2996
  • Karma: 29
    • Verze Delphi: XE7 professional
Re:Testovacie údaje do spojovacej tabuľky M:N
« Odpověď #11 kdy: 21-11-2017, 10:27:17 »
Citace
ale chapem, ak si to chces predsa len poriesit sam, v tom EMS, z takej profesionalnej zvedavosti...
Pre mňa je nutnosť to zvládnuť. To je ľahšia úloha :)  Tá ťažšia ma ešte len čaká a pre jej vyriešenie to  potrebujem zvládnuť.
To pf1957 - U vás áno, u mňa nie. Pre mňa je väčšinou jednoduchšie a hlavne rýchlejšie niečo zohnať/kúpiť, než si to robiť sám. A ešte tu je otázka, či by som to vôbec zvládol ??? 

To viete. Niekto peniaze prepije, dá na ženské či auto... Ja ich vrážam do softvéru ;D  Neviem kto si ich užije viac.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2996
  • Karma: 29
    • Verze Delphi: XE7 professional
Re:Testovacie údaje do spojovacej tabuľky M:N
« Odpověď #12 kdy: 21-11-2017, 11:10:41 »
Prosím o pomoc
Citace
Insert type Use the drop-down list to select the data insertion type:
 
  • insert: common data insertion type
  • update or insert: data generation is performed with the native UPDATE OR INSERT statement used; if a record exists, it will be updated, otherwise a new record will be inserted (applied to Firebird 2.1 or above)
  • merge: data are read from the source and INSERT or UPDATE operation is performed in the target table depending on a condition (note that for this generation type you will need to select a key field; if the table has a key field, this field will be automatically selected as the key field for the merge operation)
Ide mi možnosť merge. Je voľba nad tabuľkou. Preložil som si to, aj s pomocou google, ale nerozumiem tomu. Pri tom "key field" majú na mysli primárny kľúč? Môžem tam predsa mať niekoľko cudzích kľúčov.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline martinnr

  • Plnoletý
  • ***
  • Příspěvků: 137
  • Karma: 2
    • Verze Delphi: 7,2009,XE7
Re:Testovacie údaje do spojovacej tabuľky M:N
« Odpověď #13 kdy: 21-11-2017, 11:41:54 »
ak to dobre chapem, v tomto pripade slovickom key nie je mysleny kluc ako bol chapany doteraz v tejto diskusii, teda Primary/Foreign a pod.
ale je to v zmysle ako "klucove pole", teda pole ktore urcuje previazanost dvoch tabuliek. a na toto pole nemusi byt viazany ziaden Primary/Foreign kluc.
pri MERGE operacii teda pozaduje pole, na zaklade ktoreho bude vediet prebrat udaje z jednej tabulky do druhej a priradit ich spravnym zaznamom.
napr:
tabulka A:
Pole1   Pole2
1           A
2           B
3           C

Tabulka B:

Pole1   Pole2
A          Andrej
B          Bruno
C          Cyril

ak potrebujes do tabulky A dostat hodnoty z tabulky B pola Pole2, tak key field pre tabulku A bude Pole2 a pre tabulku B bude Pole1. teda spojitost tabuliek je na TabulkA.Pole2=TabulkaB.Pole1
teda dufam, ze key field mas definovat pre obe tabulky... ci?
« Poslední změna: 21-11-2017, 11:44:06 od martinnr »

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2996
  • Karma: 29
    • Verze Delphi: XE7 professional
Re:Testovacie údaje do spojovacej tabuľky M:N
« Odpověď #14 kdy: 21-11-2017, 12:00:49 »
Citace
teda dufam, ze key field mas definovat pre obe tabulky... ci?
A čo ja viem?
Ja som vôbec nevedel o čo ide. Ďakujem za vysvetlenie a stotožňujem sa s tým čo si napísal. Takže je to niečo ako JOIN.
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.

Jméno: E-mail:
Ověření:
Křestní jméno zpěváka Gotta: