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 12:55 | Nová verze

    Byla vydána verze R14.1.2 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5). Přehled novinek v poznámkách k vydání, podrobnosti v seznamu změn.

    JZD | Komentářů: 0
    včera 18:55 | IT novinky

    Dnešním dnem lze již také v Česku nakupovat na Google Store (telefony a sluchátka Google Pixel).

    Ladislav Hagara | Komentářů: 8
    včera 18:33 | IT novinky

    Apple představil (keynote) iPad Pro s čipem Apple M4, předělaný iPad Air ve dvou velikostech a nový Apple Pencil Pro.

    Ladislav Hagara | Komentářů: 1
    včera 17:11 | Nová verze

    Richard Biener oznámil vydání verze 14.1 (14.1.0) kolekce kompilátorů pro různé programovací jazyky GCC (GNU Compiler Collection). Jedná se o první stabilní verzi řady 14. Přehled změn, nových vlastností a oprav a aktualizovaná dokumentace na stránkách projektu. Některé zdrojové kódy, které bylo možné přeložit s předchozími verzemi GCC, bude nutné upravit.

    Ladislav Hagara | Komentářů: 0
    včera 13:44 | Komunita

    Free Software Foundation zveřejnila ocenění Free Software Awards za rok 2023. Vybráni byli Bruno Haible za dlouhodobé příspěvky a správu knihovny Gnulib, nováček Nick Logozzo za front-end Parabolic pro yt-dlp a tým Mission logiciels libres francouzského státu za nasazování svobodného softwaru do praxe.

    Fluttershy, yay! | Komentářů: 0
    včera 13:11 | IT novinky

    Před 10 lety Microsoft dokončil akvizici divize mobilních telefonů společnosti Nokia a pod značkou Microsoft Mobile ji zanedlouho pohřbil.

    Ladislav Hagara | Komentářů: 2
    6.5. 21:33 | Komunita

    Fedora 40 release party v Praze proběhne v pátek 17. května od 18:30 v prostorách společnosti Etnetera Core na adrese Jankovcova 1037/49, Praha 7. Součástí bude program kratších přednášek o novinkách ve Fedoře.

    Ladislav Hagara | Komentářů: 5
    6.5. 21:11 | IT novinky

    Stack Overflow se dohodl s OpenAI o zpřístupnění obsahu Stack Overflow pro vylepšení OpenAI AI modelů.

    Ladislav Hagara | Komentářů: 1
    6.5. 17:55 | Nová verze

    AlmaLinux byl vydán v nové stabilní verzi 9.4 (Mastodon, 𝕏). S kódovým názvem Seafoam Ocelot. Přehled novinek v příspěvku na blogu a v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    6.5. 17:11 | IT novinky

    Před 50 lety, 5. května 1974 v žurnálu IEEE Transactions on Communications, Vint Cerf a Bob Kahn popsali protokol TCP (pdf).

    Ladislav Hagara | Komentářů: 0
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (64%)
     (7%)
     (13%)
     (16%)
    Celkem 138 hlasů
     Komentářů: 9, poslední včera 22:07
    Rozcestník

    Dotaz: PHP, MySQL a spravne pojmenovani sloupecku

    18.1.2022 20:31 Vlasta
    PHP, MySQL a spravne pojmenovani sloupecku
    Přečteno: 1373×
    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.