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í
×
včera 16:22 | Nová verze

Po pěti měsících od vydání Waylandu a Westonu 1.12.0 oznámil Bryce Harrington (Samsung) vydání Waylandu 1.13.0 a Westonu 2.0.0.

Ladislav Hagara | Komentářů: 0
24.2. 13:37 | Bezpečnostní upozornění

Společnost Cloudflare (Wikipedie) na svém blogu potvrdila bezpečnostní problém s její službou. V požadovaných odpovědích od reverzní proxy byla odesílána také data z neinicializované paměti. Útočník tak mohl získat cookies, autentizační tokeny, data posílaná přes HTTP POST a další citlivé informace. Jednalo se o chybu v parsování HTML. Zneužitelná byla od 22. září 2016 do 18. února 2017. Seznam webů, kterých se bezpečnostní problém potenciálně týká na GitHubu.

Ladislav Hagara | Komentářů: 1
24.2. 08:22 | Nová verze

Byla vydána první beta verze Ubuntu 17.04 s kódovým názvem Zesty Zapus. Ke stažení jsou obrazy Kubuntu, Lubuntu, Ubuntu Budgie, Ubuntu GNOME, Ubuntu Kylin, Ubuntu Studio a Xubuntu. Dle plánu by Ubuntu 17.04 mělo vyjít 13. dubna 2017.

Ladislav Hagara | Komentářů: 31
23.2. 17:53 | Bezpečnostní upozornění

Google na svém blogu věnovaném počítačové bezpečnost informuje o nalezení "reálného" způsobu generování kolizí hašovací funkce SHA-1. Podrobnosti a zdrojové kódy budou zveřejněny do 90 dnů. Již dnes lze ale na stránce SHAttered nalézt 2 pdf soubory, jejichž obsah se liší a SHA-1 otisk je stejný (infografika).

Ladislav Hagara | Komentářů: 34
23.2. 17:51 | Nová verze

Vyšla nová verzia open source software na správu a automatizáciu cloudových datacentier Danube Cloud 2.4. Danube Cloud je riešenie postavené na SmartOS, ZFS, KVM a zónach. Obsahuje vlastnosti ako integrovaný monitoring, DNS manažment, zálohy, a samozrejme rozsiahlu dokumentáciu.

dano | Komentářů: 8
23.2. 17:46 | Pozvánky

V Plzni se 3. až 5. března 2017 uskuteční AIMTEChackathon. Je to akce pro vývojáře, grafiky, webdesignéry i veřejnost. Akci provází zajímavé přednášky IT odborníků. Více o programu a možnosti přihlášení na stránkách akce.

cuba | Komentářů: 0
23.2. 01:00 | Nová verze

Známý šifrovaný komunikátor Signal od verze 3.30.0 již nevyžaduje Google Play Services. Autoři tak po letech vyslyšeli volání komunity, která dala vzniknout Google-free forku LibreSignal (dnes již neudržovaný). Oficiální binárky jsou stále distribuované pouze přes Google Play, ale lze použít neoficiální F-Droid repozitář fdroid.eutopia.cz s nezávislými buildy Signalu nebo oficiální binárku stáhnout z Google Play i bez Google účtu

… více »
xm | Komentářů: 8
22.2. 23:14 | Nová verze

Po třech týdnech od vydání první RC verze byla vydána první stabilní verze 17.01.0 linuxové distribuce pro routery a vestavěné systémy LEDE (Linux Embedded Development Environment), forku linuxové distribuce OpenWrt. Přehled novinek v poznámkách k vydání. Dotazy v diskusním fóru.

Ladislav Hagara | Komentářů: 8
22.2. 17:28 | Bezpečnostní upozornění

Byly zveřejněny informace o bezpečnostní chybě CVE-2017-6074 v Linuxu zneužitelné k lokální eskalaci práv. Jde o chybu v podpoře DCCP (Datagram Congestion Control Protocol). Do linuxového jádra se dostala v říjnu 2005. V upstreamu byla opravena 17. února (commit). Bezpečnostní chyba byla nalezena pomocí nástroje syzkaller [Hacker News].

Ladislav Hagara | Komentářů: 16
22.2. 15:00 | Zajímavý software

Společnost Valve vydala novou beta verzi SteamVR. Z novinek lze zdůraznit oficiální podporu Linuxu. Další informace o podpoře této platformy pro vývoj virtuální reality v Linuxu v diskusním fóru. Hlášení chyb na GitHubu.

Ladislav Hagara | Komentářů: 0
Jak se stavíte k trendu ztenčování přenosných zařízení (smartphony, notebooky)?
 (13%)
 (2%)
 (72%)
 (3%)
 (10%)
Celkem 710 hlasů
 Komentářů: 66, poslední 22.2. 18:57
    Rozcestník

    Dotaz: 1:N relace, jak se pracuje?

    10.5.2011 10:16 petrrrr
    1:N relace, jak se pracuje?
    Přečteno: 1381×
    Dobrý den, navrhuji si pro svůj malý webík databázi a potřebuji 1:N relace. Vím, že se to zařizuje přes join, ale není mi jasný detail návrhu. Jakým způsobem je v jednom sloupci uchováno více údajů (N)? Napadá mě jedině, že jde o duplicitní záznam lišící se pouze v rozdílovém sloupci. Uvedu příklad:
    Interpreti:
    (pk) id_interpreta | jmeno | zanr (FK)
    Skladby:
    (pk)id_skladby | (fk)id_interpreta | (fk) id_interpret_spolu_s |nazev_skladby
    Zanry:
    (pk)id_zanru | nazev_zanru
    Potřebuji mít stav, že v interpreti.zanr bude víc záznamů. Napadlo mě, že se to řeší více 1řádkovými záznamy v tabulce Interpreti, příklad:
    1 | Karel Gott | pop
    1 | Karel Gott | jiný žánr
    Ale to potom nemohu u id_interpreta použít auto_increment.

    Řešení dotazu:


    Odpovědi

    10.5.2011 10:43 VM
    Rozbalit Rozbalit vše Re: 1:N relace, jak se pracuje?
    Tak tahkle určitě ne (přečtěte si něco o normalizaci DB):
    1 | Karel Gott | pop
    1 | Karel Gott | jiný žánr
    
    Asi potřebujete tohle, a není to relace 1:n, nýbrž m:n :
    tabulka interpreti
    interpret_id | interpret_jmeno
    1                 | Karel Gott
    
    tabulka zanry
    zanr_id | zanr_jmeno
    1          | pop
    2          | folk
    
    tabulka interpreti_zanry
    id | interpret_id | zanr_id
    1  | 1                 | 1
    2  | 1                 | 2
    (fk) interpreti(interpret_id)
    (fk) zanry(zanr_id)
    
    Tarmaq avatar 10.5.2011 12:46 Tarmaq | skóre: 39
    Rozbalit Rozbalit vše Re: 1:N relace, jak se pracuje?
    mozna bych to jeste zjednodusil, rekl bych ze umelohmotny identifikator pro zanry je zbytecny:
    interprets
    ----------
    id (PK) | name
    1       | Karel Gott
    2       | Atka Janouskova
    3       | Alicia Keys
    
    genres
    ------
    id (PK)| title
    pop    | Pop
    folk   | Folk
    rnb    | Rhythm&Blues
    
    interpret2genre
    ---------------
    interpret | genre
    1         | pop
    1         | folk
    2         | pop
    3         | rnb
    (pk) interpret, genre
    (fk) interprets(interpret)
    (fk) genres(genre)
    
    CREATE TABLE interprets (
      id NUMBER(16) PRIMARY KEY,
      name VARCHAR2(128)
    );
    CREATE TABLE genres (
      id VARCHAR2(16) PRIMARY KEY,
      title VARCHAR2(64) NOT NULL
    );
    CREATE TABLE interpret2genre (
      interpret NUMBER(16)
        CONSTRAINT fk_interpret2genre_interpret
        REFERENCES interprets
        ON DELETE CASCADE,
      genre VARCHAR2(16)
        CONSTRAINT fk_interpret2genre_genre
        REFERENCES genres
        ON DELETE CASCADE,
    
      CONSTRAINT pk_interpret2genre
      PRIMARY KEY (interpret, genre)
    );
    
    Don't panic!
    10.5.2011 14:24 petrrrr
    Rozbalit Rozbalit vše Re: 1:N relace, jak se pracuje?
    děkuji převelice! ještě večer vykoumám jak to uplácat v php (cykly). Mám totiž tedy: Chci takovýto výsledek: píseň|Karel Gott|žánr1, žánr2 Díky:
    SELECT `interpreti`.`interpret_jmeno` AS 'Interpret', `skladby`.`skladba_nazev` AS 'Název skladby', `zanry`.`zanr_jmeno` AS 'Žánr'
    	FROM `interpreti_zanry`, `interpreti`, `zanry`, `skladby`, `interpreti_skladby` WHERE
    	`interpreti_zanry`.`interpret_id`=`interpreti`.`interpret_id` AND
    	`interpreti_zanry`.`zanr_id`=`zanry`.`zanr_id` AND
    	`interpreti_skladby`.`skladba_id`=`skladby`.`skladba_id` AND
    	`interpreti_skladby`.`interpret_id`=`interpreti`.`interpret_id`;
    
    mám záznamy:
    Karlova_píseň_1 | Karel Gott | žánr1
    Karlova_píseň_1 | Karel Gott | žánr2
    Umím si zobrazit vše:
    $radku=mysql_num_rows($vysledek);
    if ($radku==0) echo "nic tu neni";
    else
    {
    	while ($zaznam=MySQL_Fetch_Array($vysledek)):
            	echo $zaznam["Interpret"]."
    \n"; echo $zaznam["Název skladby"]."
    \n"; echo $zaznam["Žánr"]."
    \n"; endwhile; }
    Ale přemýšlím, jak tam zakopomnovat ten druhý cyklus, který by vyzvednul ve třetím sloupci data a hodil je na jeden řádek... Prosím o naťuknutí, dodělám si to pak sám... Ještě jednou díky (je to fanouškovskej web, ne úkol do školy).
    10.5.2011 15:21 VM
    Rozbalit Rozbalit vše Re: 1:N relace, jak se pracuje?
    Nerozumim dotazu - priklad uz treti sloupec vypisuje.

    Jinak tip - dotaz lze prepsat na uspornejsi variantu:
    SELECT interpret_jmeno, skladba_nazev, zanr_jmeno
    FROM interpreti JOIN interpreti_zanry USING(interpret_id)
         JOIN zanry USING(zanr_id)
         JOIN interpreti_skladby USING(interpret_id)
         JOIN skladby USING(skladba_id);
    Predpokladam ze stejna skladba muze vyslovne patrit k vice interpretum - v opacnem pripade je tabulka interpreti_skladby zbytecna, misto ni by se dal interpret_id do tabulky skladby.
    10.5.2011 15:47 petrrrr
    Rozbalit Rozbalit vše Re: 1:N relace, jak se pracuje?
    ano, je přeci možné, aby jedna skladba měla více interpretů (zpívá: X feat Y). Dotaz jsem myslel takto: příklad PHP kódu jenž jsem dodal vypíše obsah spojených tabulek v toto tvaru:
    Karel Gott | Když muž se ženou snídá | pop
    Karel Gott | Když muž se ženou snídá | rock
    Karel Gott | Když muž se ženou snídá | blues
    já ale chci:
    Karel Gott | Když muž se ženou snídá | pop, rock, blues
    Potřebuji přistupovat do toho třetího sloupce a vypsat tam všechny žánry.

    Chápu, že by šlo, vyzjistit kolik dotaz vygeneroval řádků a tam udělat dlouhý for cyklus a spojovat obsahy z třetího sloupce. Ale já potřebuju vypsat 30 posledních přidaných skladeb. Napadá mě udělat si pomocnou funkci, která tyto žánry spojí pro jednu skladbu, ale není mi jasné jak rozlišovat jestli jsem u Káji nebo jinde. Opět lepší příklad, než slova:
    
    function ma_funkce($kolik_radku){
    // tato funkce u 3 radku Karel Gott vytahuje ze 3. sloupce zanry a haze je do jednoho radku
    //zvladne to i u Kabátů a 5 žánrů
    }
    
    
    $radku=mysql_num_rows($dotaz);
    if ($radku==0) echo "nic tu neni";
    else
    {
    	while ($zaznam=MySQL_Fetch_Array($vysledek)):
            	echo $zaznam["Interpret"]."
    \n";
            	echo $zaznam["Název skladby"]."
    \n";
            	echo $zaznam["Žánr"]."
    \n";
          	endwhile;
    }
    
    No a já potřebuji vymyslet tu podmínku u while, aby rozlišovala, že tam je teď 3x Karel Gott, tak zavolej má_funkce(3) nebo pro Kabáty má_funkce(5).

    Za JOIN díky.

    11.5.2011 10:48 VM
    Rozbalit Rozbalit vše Re: 1:N relace, jak se pracuje?
    ano, je přeci možné, aby jedna skladba měla více interpretů (zpívá: X feat Y). Dotaz jsem myslel takto: příklad PHP kódu jenž jsem dodal vypíše obsah spojených tabulek v toto tvaru:
    Karel Gott | Když muž se ženou snídá | pop
    Karel Gott | Když muž se ženou snídá | rock
    Karel Gott | Když muž se ženou snídá | blues
    já ale chci:
    Karel Gott | Když muž se ženou snídá | pop, rock, blues
    Co takhle:
    SELECT interpret_jmeno, skladba_nazev, GROUP_CONCAT(zanr_jmeno)
    FROM interpreti JOIN interpreti_skladby USING(interpret_id) 
        JOIN skladby USING(skladba_id)
        JOIN interpreti_zanry USING(interpret_id)
        JOIN zanry USING(zanr_id)
    GROUP BY interpret_id, skladba_id;
    
    BTW, neměl by žánr patřit spíše ke skladbě než k interpretovi?
    Josef Kufner avatar 16.5.2011 00:13 Josef Kufner | skóre: 66
    Rozbalit Rozbalit vše Re: 1:N relace, jak se pracuje?
    Sloupeček vyjadřující relaci dej do té druhé tabulky. Pokud se do té druhé tabulky nehodí, přidej tabulku.

    V tvém případě přesuň sloupec "žánr" do tabulky se skladbama a pro získání interpretů s žánry uděláš:
    SELECT i.id_interpreta, i.jmeno,
        GROUP_CONCAT(DISTINCT z.nazev_zanru SEPARATOR ', ') AS zanry
    FROM interpreti i
    LEFT JOIN Skladby s ON s.id_interpreta = i.id_interpreta
    LEFT JOIN Zanry z ON z.id_zanru = s.id_zanru
    GROUP BY i.id_interpreta
    
    Hello world ! Segmentation fault (core dumped)
    16.5.2011 18:21 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: 1:N relace, jak se pracuje?
    Dobrý den, navrhuji si pro svůj malý webík databázi a potřebuji 1:N relace.
    Na nějaké studování joinů bych se "pro svůj malý webík" vykašlal, a místo toho použil rovnou nějaký ORM framework. Tam si jen řeknete jak mají vypadat objekty (záznamy) a starost o schema v DB jakož i insert/select/update/delete odpadá.

    In Ada the typical infinite loop would normally be terminated by detonation.
    Josef Kufner avatar 16.5.2011 19:46 Josef Kufner | skóre: 66
    Rozbalit Rozbalit vše Re: 1:N relace, jak se pracuje?
    "Pro svůj malý webík" by spíš mělo smysl studovat nějaké hotové CMS než cokoliv jiného.
    Hello world ! Segmentation fault (core dumped)
    16.5.2011 21:31 CIJOML
    Rozbalit Rozbalit vše Re: 1:N relace, jak se pracuje?
    ja si to pro sebe kdyz delam databazove schema prelozim do ceske vety. Potom mas zajisteno, ze to vyjadruje to co potrebujes:

    1:1 jedno dite ma jen jedno rodne cislo a naopak jedno cislo nalezi jen jednomu diteti

    1:N jeden ucitel uci ve vice ucebnach a naopak v kazde ucebne uci vzdy jen jeden kantor

    M:N jedna zena muze spat s mnoha muzi a naopak mnoho muzu muze spat s mnoha zenami :D

    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.