abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 05:33 | Pozvánky

    Protože je už po aprílu, můžou strahováci opět zveřejnit program další Virtuální Bastlírny, aniž by připravená témata působila dojmem, že jde o žert. Vězte tedy, že již v úterý 7. dubna od 20:00 proběhne VB, kde se setkají bastlíři, technici, učitelé i nadšenci do techniky a kde i vy se můžete zapojit do družného hovoru, jako by všichni seděli u pomyslného piva. Co mají bastlíři tento měsíc na srdci? Pravděpodobně by nás musel zasáhnout meteorit

    … více »
    bkralik | Komentářů: 0
    včera 23:33 | Nová verze

    Byla vydána verze 26.1 aneb čtvrtletní aktualizace open source počítačového planetária Stellarium (Wikipedie, GitHub). Vyzkoušet lze webovou verzi Stellaria na Stellarium Web.

    Ladislav Hagara | Komentářů: 1
    včera 23:00 | Zajímavý projekt

    VOID (Video Object and Interaction Deletion) je nový open-source VLM model pro editaci videa, který dokáže z videí odstraňovat objekty včetně všech jejich fyzikálních interakcí v rámci scény (pády, kolize, stíny...) pomocí quadmaskingu (čtyřhodnotová maska, která člení pixely scény do čtyř kategorií: objekt určený k odstranění, překrývající se oblasti, objektem ovlivněné oblasti a pozadí scény) a dvoufázového inpaintingu. Za projektem stojí výzkumníci ze společnosti Netflix.

    NUKE GAZA! 🎆 | Komentářů: 7
    včera 05:22 | Zajímavý software

    Design (GitHub) je 2D CAD pro GNOME. Instalovat lze i z Flathubu. Běží také ve webovém prohlížeči.

    Ladislav Hagara | Komentářů: 12
    včera 04:11 | Zajímavý software

    Příspěvek na blogu herního enginu Godot představuje aplikaci Xogot přinášející Godot na iPad a iPhone. Instalovat lze z App Storu. Za Xogotem stojí Miguel de Icaza (GitHub) a společnost Xibbon.

    Ladislav Hagara | Komentářů: 1
    4.4. 04:22 | Komunita

    Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za březen (YouTube).

    Ladislav Hagara | Komentářů: 18
    3.4. 16:44 | Nová verze

    ESP-IDF (Espressif IoT Development Framework), tj. oficiální vývojový framework pro vývoj aplikací na mikrokontrolérech řady ESP32, byl vydán v nové verzi 6.0. Detaily na portálu pro vývojáře.

    Ladislav Hagara | Komentářů: 0
    3.4. 12:33 | Nová verze

    DeepMind (Alphabet) představila novou verzi svého multimodálního modelu, Gemma 4. Modely jsou volně k dispozici (Ollama, Hugging Face a další) ve velikostech 5-31 miliard parametrů, s kontextovým oknem 128k až 256k a v dense i MoE variantách. Modely zvládají text, obrázky a u menších verzí i audio. Modely jsou optimalizované pro běh na desktopových GPU i mobilních zařízeních, váhy všech těchto modelů jsou uvolněny pod licencí Apache 2.0. Návod na spuštění je už i na Unsloth.

    NUKE GAZA! 🎆 | Komentářů: 13
    3.4. 03:55 | Nová verze

    Cursor (Wikipedie) od společnosti Anysphere byl vydán ve verzi 3. Jedná se o multiplatformní proprietární editor kódů s podporou AI (vibe coding).

    Ladislav Hagara | Komentářů: 0
    2.4. 19:55 | Zajímavý projekt

    Průkopnická firma FingerWorks kolem roku 2000 vyvinula vícedotykové trackpady s gesty a klávesnice jako TouchStream LP. V roce 2005 ji koupil Apple, výrobu těchto produktů ukončil a dotykové technologie využil při vývoji iPhone. Multiplatformní projekt Apple Magic TouchstreamLP nyní implementuje funkcionalitu TouchStream LP na současném Apple Magic Trackpad, resp. jejich dvojici. Diskuze k vydání probíhá na Redditu.

    |🇵🇸 | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (14%)
     (7%)
     (1%)
     (12%)
     (30%)
     (3%)
     (6%)
     (1%)
     (14%)
     (23%)
    Celkem 1225 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník

    Dotaz: Verzované záznamy v MySQL

    Josef Kufner avatar 7.5.2009 01:25 Josef Kufner | skóre: 70
    Verzované záznamy v MySQL
    Přečteno: 659×
    Ahoj!

    Mám seznam nějakých věcí v tabulce Věc a číselník hodnot nějaké vlastnosti v tabulce Materiál. V tabulce Věc je sloupec s ID řádku v tabulce Materiál -- jde tedy o klasickou vazbu 1:N.

    Problém je následující: Potřebuju, aby když upravím záznam v tabulce Materiál, aby se změna neprojevila u žádné Věci.

    Tedy např. když si usmyslím, že dřevěné věci chci dřevěnější, aby se to projevilo jen u nově upravovaných/vytvářených věcí a věchny ostatní si ponechaly svoji původní dřevěnost.

    To je ještě celkem jednoduché, ale zajímavé to začíná být s druhým požadavkem:

    Mám ještě tabulku Barva, To je také číselník stejně jako Materiál a definuje různé barvy k různým materiálům. Vazba je také 1:N a říká, jaký materiál může mít jaké barvy.

    Každý záznam v tabulce Věc má tedy dvě ID: jedno do tabulky Materiál a drué do tabulky Barva. Ať změním cokoliv v tabulce Materiál a/nebo Barva, tak se to nesmí projevit na žádném záznamu v tabulce Věc.

    Máte nějaký nápad, jak to udělat?
    Hello world ! Segmentation fault (core dumped)

    Odpovědi

    7.5.2009 06:56 cronin | skóre: 49
    Rozbalit Rozbalit vše Re: Verzované záznamy v MySQL
    Pri dotazoch o existujúcej databázovej schéme je vždy dobré uviesť príslušné CREATE TABLE príkazy. Takto je to značne zmätočné. S tou väzbou 1:N je to nejaké dopletené; ak by sa jednalo o väzbu 1:N medzi tabuľkou Vec a Materiál, mal by byť v tabuľke Materiál stĺpec s foreign key odkazujúci na ID záznamu v tabuľke Vec. Tak by bolo možné pre jednu Vec špecifikovať N materiálov.

    Ty však píšeš, že v tabuľke Vec je stĺpec s foreign key obsahujúci ID záznamu v tabuľke Materiál. Teda usudzujem, že tabuľka Materiál nie je nič viac ako zoznam známych materiálov a každá Vec môže byť práve z jedného Materiálu. Ak potrebuješ pridať nový Materiál, stačí pridať Drevenejšie Drevo do tabuľky Materiál a pri všetkých nasledujúcich Drevenejšie Drevených Veciach používať ID tohto nového záznamu. Detto pre farbu.

    S tou farbou je to ale ešte zamotanejšie: Na jednej strane píšeš, že Farba je vlastnosť Materiálu, ale na druhej strane píšeš, že na Farbu sa odkazuješ s tabuľky Vec, nie s tabuľky Materiál.

    Čo pravdepodobne potrebuješ, je pridať "indajrektnosť", napr.: Tabuľka Farba by mohla obsahovať zoznam známych farieb (biela, modrá, červená). Tabuľka Surovina by mohla obsahovať zoznam známych látok (drevo, papier, kov). Tabuľka Materiál by mohla obsahovať definíciu konečných materiálov vzniknuvších kombináciou Farby a Suroviny (Eben - cierna + drevo, Hliník - biela + kov). No a nakoniec tabuľka Vec by odkazovala na položku v mapovacej tabuľke Materiál. Pridanie novej Farby, Suroviny, Materiálu či Veci by znamenalo INSERT do príslušnej tabuľky a neovplyvnilo by to žiadne existujúce položky, len by to to rozšírilo množinu hodnôt, ktoré sú použiteľné v ostatných tabuľkách.

    Zmätenie môže vyvolať to, že väzby v relačnej databáze fungujú presne opačne ako v objektovom programe. Zatiaľ čo v objektovom programe zložitý objek obsahuje odkazy na svoje komponenty a komponenty v princípe nevedia, súčasťou akého objektu sú, v relačnej databáze držia komponenty (slaves) väzby na nadradený (master) objekt.

    Nakoniec už len dodám, že ešte som nemal rannú kávu, takže možno mám problém s kognitívnymi funkciami a dotaz som len prudko nepochopil. :-D
    Josef Kufner avatar 7.5.2009 11:36 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Verzované záznamy v MySQL
    Příloha:
    Ok, tak aby bylo jasné, jak to je myšleno, přikládám obrázek. Nevím jak se přesně ty šipky kreslí, ale snad to bude jasné (UML to být nemá, jen se mi hodil ten rámeček ;-)).
    Hello world ! Segmentation fault (core dumped)
    7.5.2009 12:17 cronin | skóre: 49
    Rozbalit Rozbalit vše Re: Verzované záznamy v MySQL
    Čím ďalej tým viac som presvedčený o tom, že proste ide o zle navrhnutú schému. Ako ale má vyzerat správne navrhnutá schéma nemožno povedať, kým nepoznáme biznis logiku vztahov medzi entitami, ktoré má opisovat.
    Josef Kufner avatar 7.5.2009 12:21 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Verzované záznamy v MySQL
    Kdyby byla navrhnutá dobře, tak tu tento dotaz není ;-)
    Hello world ! Segmentation fault (core dumped)
    7.5.2009 13:02 cronin | skóre: 49
    Rozbalit Rozbalit vše Re: Verzované záznamy v MySQL
    Aha, takže si si toho vedomý. To je fajn. Akurát, že Ti to asi nepomôže. :-( Urobiť migráciu schémy asi nie je to, čo by potreboval, však?

    Josef Kufner avatar 7.5.2009 13:12 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Verzované záznamy v MySQL
    Jakou migraci? Vždyť to ještě ani nefunguje...
    Hello world ! Segmentation fault (core dumped)
    7.5.2009 16:58 cronin | skóre: 49
    Rozbalit Rozbalit vše Re: Verzované záznamy v MySQL
    Ono je to vo vyvoji? A co Ti teda brani navrhnut inu schemu, ktora bude vyhovovat potrebam?
    7.5.2009 18:10 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: Verzované záznamy v MySQL
    Nevím nic o takovémto verzování, i když je mi jasné že jsou systémy které něco takového potřebují. Šlo by to řešit složitě že by se všude dávalo "od kdy do kdy" platí že dřevo=masivdřevo, a od kdy do kdy dřevo=překližka, a podle data uvdedného u věci by se vybral ten správný materiál, ale osobně bych prostě tabulku materiálů stále rozšiřoval o nové a nové materiály (suprdřevo, extradřevo, dřevo2000, dřevo3000+, s tím že identifikace nemusí být v názvu pokud nechcete, může tam být další sloupec třeba identifikátor verze dřeva (to už se blíží verzování) ovšem v tabulce věc pak musíte mít jako klíč jednak "název" materiálu, ale i verzi (a nebo to dělat přes id). V tabulce meteriál/barva tedy nesmíte !!! nic měnit, protože tím přicházíte o korektní historii a zákazníkovi pošlete blbej odstín červené jen proto, že si u vás koupil auto loni kdy byla in míň červená než letošní červená++. Brání vám tedy něco v tom, že nebudete měnit to, co se měnit z logiky věci nemá (barva již prodaných věcí atd.) a místo toho budete přidávat novinky (letošní odstín červené)? Podle mne je to korektní. Pokud to má nějaký frontend tak se při vkládání mohou nabízet jen poslední "aktuální" verze meteriálů a barev, případně se to ošéfuje nějakými db funkcemi.
    8.5.2009 13:02 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Verzované záznamy v MySQL

    Podobný problém obvykle řeším tak, že místo jedné tabulky zavedu dvě, např.

    create table TEAM_IDENTITIES(
      ID integer primary key,
      CREATED timestamp default CURRENT_TIMESTAMP,
      FINISHED timestamp,
      LAST integer
    );
    
    create table TEAMS(
      ID integer primary key,
      IDENTITY integer not null references TEAM_IDENTITIES(ID),
      CREATED timestamp default CURRENT_TIMESTAMP,
      FINISHED timestamp,
      NAME varchar(32) collate cs_CZ,
      ...
    );
    
    alter table TEAM_IDENTITIES
      add foreign key LAST references TEAMS(ID);
    

    Změna údajů o družstvu se provede tak, že se vytvoří nový záznam v tabulce TEAMS, ukončí se platnost toho předchozího a aktualizuje se sloupec LAST příslušného záznamu v TEAM_IDENTITIES. Odkazy na družstvo, např. informace o domácím a hostujícím družstvu, ukazují do tabulky TEAMS, takže i když se změní název družstva, u utkání která hrálo pod starým, se bude pořád zobrazovat ten původní.

    Josef Kufner avatar 18.5.2009 18:59 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Verzované záznamy v MySQL
    Díky. Sice jsem nejdříve uvažoval nad nějakým způsobem, jak to nacpat do jedné tabulky, ale nakonec jsem to udělal přesně takle. Ukázalo se to jako příjemě jednoduché a hezky to obchází problémy s updatem a selectem nad stejnou tabulku.
    Hello world ! Segmentation fault (core dumped)

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.