abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 01:55 | Komunita

    24. září 2024 budou zveřejněny zdrojové kódy přehrávače Winamp.

    Ladislav Hagara | Komentářů: 2
    včera 23:33 | Nová verze

    Google Chrome 125 byl prohlášen za stabilní. Nejnovější stabilní verze 125.0.6422.60 přináší řadu oprav a vylepšení (YouTube). Podrobný přehled v poznámkách k vydání. Opraveno bylo 9 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.

    Ladislav Hagara | Komentářů: 0
    včera 21:11 | Nová verze

    Textový editor Neovim byl vydán ve verzi 0.10 (𝕏). Přehled novinek v příspěvku na blogu a v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 20:55 | Nová verze

    Byla vydána nová verze 6.3 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Přehled změn v příslušném seznamu. Tor Browser byl povýšen na verzi 13.0.15.

    Ladislav Hagara | Komentářů: 0
    včera 13:33 | IT novinky

    Dnes ve 12:00 byla spuštěna první aukce domén .CZ. Zatím největší zájem je o dro.cz, kachnicka.cz, octavie.cz, uvycepu.cz a vnady.cz [𝕏].

    Ladislav Hagara | Komentářů: 2
    včera 13:22 | Nová verze

    JackTrip byl vydán ve verzi 2.3.0. Jedná se o multiplatformní open source software umožňující hudebníkům z různých částí světa společné hraní. JackTrip lze instalovat také z Flathubu.

    Ladislav Hagara | Komentářů: 0
    včera 12:22 | Pozvánky

    Patnáctý ročník ne-konference jOpenSpace se koná 4. – 6. října 2024 v Hotelu Antoň v Telči. Pro účast je potřeba vyplnit registrační formulář. Ne-konference neznamená, že se organizátorům nechce připravovat program, ale naopak dává prostor všem pozvaným, aby si program sami složili z toho nejzajímavějšího, čím se v poslední době zabývají nebo co je oslovilo. Obsah, který vytváří všichni účastníci, se skládá z desetiminutových

    … více »
    Zdenek H. | Komentářů: 0
    včera 03:11 | Nová verze

    Program pro generování 3D lidských postav MakeHuman (Wikipedie, GitHub) byl vydán ve verzi 1.3.0. Hlavní novinkou je výběr tvaru těla (body shapes).

    Ladislav Hagara | Komentářů: 5
    15.5. 23:11 | Bezpečnostní upozornění

    Intel vydal 41 upozornění na bezpečnostní chyby ve svých produktech. Současně vydal verzi 20240514 mikrokódů pro své procesory řešící INTEL-SA-01051, INTEL-SA-01052 a INTEL-SA-01036.

    Ladislav Hagara | Komentářů: 0
    15.5. 16:22 | IT novinky

    Společnost Raspberry Pi patřící nadaci Raspberry Pi chystá IPO a vstup na Londýnskou burzu.

    Ladislav Hagara | Komentářů: 0
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (74%)
     (5%)
     (10%)
     (10%)
    Celkem 293 hlasů
     Komentářů: 16, poslední 14.5. 11:05
    Rozcestník

    Dotaz: PHP, MySQL a spravne pojmenovani sloupecku

    18.1.2022 20:31 Vlasta
    PHP, MySQL a spravne pojmenovani sloupecku
    Přečteno: 1375×
    Ahoj,

    omluvte prosim zacatecnicky dotaz, ale peru se s timto: mam nasledujici tabulky:
    CREATE TABLE `countries` (
      `id` int ...
      `name` varchar(255) ...
    )
    
    CREATE TABLE `cities` (
      `id` int ...
      `country_id` int ...
      `name` varchar(255) ...
    )
    
    CREATE TABLE `streets` (
      `id` int ...
      `city_id` int ...
      `name` varchar(255) ...
    )
    
    Potom dotaz:
    SELECT countries.name, cities.name, streets.name 
    FROM countries 
    LEFT JOIN cities ON cities.country_id=countries.id 
    LEFT JOIN streets ON streets.city_id=cities.id 
    WHERE 1
    
    Mi vrati vysledek, dejmetomu:
    [name][name][name]
    |Czechia|Brno|Kounicova|
    |Czechia|Brno|Cejl|
    
    Jak se s tim potom pracuje treba v PHP, kdyz dam treba mysqli_fetch_assoc, jak poznam ktere "name" se vztahuje k jake tabulce?

    Jasne, ze si muzu v tom dotazu dat "AS country_name ... AS city_name", ale co slozitejsi dotazy nez tenhle? To si usoupu prsty

    Nebo si ty sloupecky muzu pojmenovat jako country_id, country_name, city_country_id, city_name, ...

    Nebo mi neco unika? Existuje zpusob, jak mohu zachovat tabulky i dotaz v te prvni podobe, viz vyse, a z vystupu v PHP pak poznam z ktere tabulky je ktere "name"?

    Dekuji za vas cas

    Řešení dotazu:


    Odpovědi

    18.1.2022 21:28 X
    Rozbalit Rozbalit vše Re: PHP, MySQL a spravne pojmenovani sloupecku
    Pojmenovat vsechny sloupce v tabulkach stejne je kravina presne z tohoto duvodu a proste spatny navrh databaze. Osobne, to mnozne cislo v nazvu jsi si take mohl odpustit.

    18.1.2022 22:22 X
    Rozbalit Rozbalit vše Re: PHP, MySQL a spravne pojmenovani sloupecku
    Ale mozna se pletu..
    24.1.2022 22:27 Kit | skóre: 45 | Brno
    Rozbalit Rozbalit vše Re: PHP, MySQL a spravne pojmenovani sloupecku
    Stejné názvy sloupců používám zcela běžně. Například id mám téměř v každé tabulce. Aliasy jsou potřebné i kvůli převodu mezi konvencemi. Například street_name AS streetName mi krásně převede jméno podle zvyklostí v PHP a můžu se pak na něj odkazovat třeba $row->streetName. Je to užitečné i v případě kolizi s klíčovými slovy.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    2.2.2022 16:12 ehmmm
    Rozbalit Rozbalit vše Re: PHP, MySQL a spravne pojmenovani sloupecku
    Nesouhlasim. Me osobne nevadi ani jeden z tech pristupu.

    Kdyz mam tabulku CITIES, tak ID muzu pojmenovat jenom jako ID, nebo jako CITY_ID/ID_CITY. Stejne tak NAME muze ale nemusi byt CITY_NAME, zalezi na zvyku v danem kolektivu. Proc duplikovat nazev tabulky.

    A kdyz pak joinuje nekolik tabulek se stejnymi nazvy sloupcu do sebe, tak mu nic nebrani napsat neco jako (a je slusnost to tak udelat):

    select CITY.NAME as CITY_NAME, COUNTRY.NAME as COUNTRY_NAME from COUNTRY left outer join CITY on ...

    A co se tyka mnozneho cisla v nazvu tabulky, tak opet dle vkusu kazdeho soudruha. U jednoho zakaznika mame tabulky MACHINES, PROJECTS, SHIFTS a nijak me to nepohorsuje.

    Spis povazuji za dulezite nejak nazvem rozlisit tabulky, ktere se chovaji jako "cisleniky" (seznam lidi, mest, stroju) a tabulky, ktere obsahuji data posbirana v case (udalosti, teploty, vyrobene kusy...). V jeden firme tyhle tabulky mely priponu _DATA, v jine _HIST a oboji se mi libilo.
    Řešení 1× (OldFrog {Ondra Nemecek})
    20.1.2022 10:43 EtDirloth | skóre: 11
    Rozbalit Rozbalit vše Re: PHP, MySQL a spravne pojmenovani sloupecku
    Pisat aliasy pre stlpce SELECT klauzuly je spravny sposob. Vobec nemaj pocit, ze si upises prsty - selecty nerobi zlozitym pocet stlpcov, ale joinov, pripadne jeho dalsie klauzuly. Je to to iste, ako ked pomenuvas premennu v PHP - tiez si neurobis na zaciatku programu globalny array, do ktoreho si ukladas a citas hodnoty premennych cez ciselny index.

    Vylepsit alias vies tym, ze si select deklarujes ako view. To ma vyznam ak:
    • chces bud silnejsie oddelit definiciu dat od aplikacnej logiky (pridanim vsetkych selectov do views, resp. funkcii ti pribudne dalsia abstrakcna vrstva),
    • alebo pri reuse (ak ten select v podobnej forme opakujes na viacerych miestach v PHP, ci v inych selectoch cez join).
    A predrecnikove pomenovacie kraviny neries
    • jednotna konvencia pre mena stlpcov podla ich pouzitia je mudra vec - pri vacsich schemach sa v tom budes stale vyznat, pretoze su odvoditelne (ja kludne davam meno pre FK aj len "country", pretoze az na par velmi ojedinelych vynimiek su vsetky moje primarne kluce pomenovane `id` - ale s tym suffixom "_id" nic nepokazis)
    • pomenovanie tabuliek mnoznym cislom je OK - dotazy a joiny pri citani zneju prirodzene a v kombinacii s jednotnym cislom v mene stlpca cudzieho kluca to pekne implikuje kardinalitu
    24.1.2022 13:37 OldFrog {Ondra Nemecek} | skóre: 36 | blog: Žabákův notes | Praha
    Rozbalit Rozbalit vše Re: PHP, MySQL a spravne pojmenovani sloupecku
    Pokud sloupečky označují stejnou věc, pojmenovávám je stejně ve všech tabulkách.

    Dokonvertoval jsem k tomu, že tabulky pojmenovávám jednotným číslem - množné brání automatickému generování sql, komplikuje ruční přejmenování v souborech při refaktoringu apod.

    Kde je potřeba, píšu aliasy na tabulky i sloupce - složitější sql se pak lépe čte, navíc to některé dotazy vyžadují takže je pak jednotný styl všech dotazů.
    -- OldFrog
    20.1.2022 14:04 Nudící se důchodce
    Rozbalit Rozbalit vše Re: PHP, MySQL a spravne pojmenovani sloupecku
    SELECT co.name stat, ci.name obec, str.name ulice
    -- SELECT co.name as country, ci.name as city, str.name as street
        FROM countries co
            LEFT JOIN 
            cities ci 
            ON ci.country_id=co.id 
            LEFT JOIN 
            streets str 
            ON str.city_id=ci.id 
        WHERE 1
    

    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.