Na navigaci | Klávesové zkratky

Databázové tabulky: singulár nebo plurál?

Vzpomínka na krásné chvíle na www.synthesia.cz Rád bych se zeptal všech ctěných programátorů, jestli pro databázové tabulky volí názvy v jednotném nebo množném čísle? Tedy používáte User, Password, Order nebo Users, Passwords, Orders? Nebo se dokonce přikláníte k českým názvům (uzivatele, hesla, objednavky)?

Jak nazýváte tabulky obsahující jen cizí klíče? A pole s těmito klíči?

A co v případě programovacích jazyků: dáváte polím názvy v singuláru nebo plurálu? Tedy $modules = array() nebo $module = array()?

před 19 lety v rubrice PHP | blog píše David Grudl | nahoru

Mohlo by vás zajímat

Komentáře

  1. Dero #1

    avatar

    Plurál, prosím. Ale bohužel nejsem programátor a silně pochybuji, že by se našel někdo, kdo by mne ctil.

    před 19 lety
  2. Rene #2

    Otazka ohledne kodovaciho stylu, to zas bude flame ;)

    U tabulek pouzivam jednotne cislo a anglicke nazvy.
    U poli pouzivam vetsinou mnozne cislo.

    I kdyz myslim, ze tohle jsou jen kosmeticke zalezitosti, bez zasadniho vlivu na kvalitu aplikace ;)

    před 19 lety
  3. Bochi #3

    V poslední době jsem si ustálil vlastní štábní kulturu u názvů polí na angličtině a plurálu. Čeština mi v mnoha případech připadala málo jednoznačná a singulár zase mnohdy zavádějící. U databázových tabulek stejně s tím, že v názvech sloupců bych spíše dával přednost singuláru. Možná je to trochu nekonzistentní, ale proti gustu žádný dišputát, že?

    před 19 lety
  4. nebko #4

    avatar

    Budu stručný: u všeho plurál anglicky :)

    před 19 lety
  5. e-Jirka #5

    Plural cesky. A cizi klice napr. pouze prvnimi 3 pismeny z puvodniho nazvu 🙂

    před 19 lety
  6. soundake #6

    avatar

    Plurál u názvů tabulek. Občas bodnou i prefixy. Vše anglicky, zdá se mi angličtina vhodnější, když už jsou i názvy funkcí v angličtině. U názvů polí je to různé (i když to asi není vždy vhodné), ale angličtina zůstává.

    Každopádně je to úplně fuk, jen to chce se držet toho svého jednoho „stylu“ ;)

    před 19 lety
  7. Petr S #7

    Když bych kodil v C++, použil bych anglické pojmenování. Ale např. v tabulce v MySQL mam vse cesky (plurál).

    před 19 lety
  8. David Majda #8

    avatar

    Všechny tabulky nazývám anglicky a plurálem, protože SQL příkazy tak znějí víc jako věty. Ale primární klíče jsou singulárem (tabulka „orders“ má klíč „id_order“), zní mi to logičtěji.

    Tabulky s cizími klíči: Kombinuju názvy spojovaných entit, např. tabulka „users_groups“ by obsahovala klíče „id_user“ a „id_group“.

    Obvykle všechny tabulky doplňuju ještě prefixem dané aplikace, aby mohla být 1 fyzická databáze využívána pro víc aplikací a tabulky se nepletly do sebe. Pokud má apliakce více modulů, dopňuju ještě prefix modulu, a pak jsou ty názvy už docela zajímavé ;)

    Pole v programovacích jazycích zásadně v plurálu, singulár je vyhrazen pro jednu jeho položku. Konstrukce jako „foreach ($animals as $animal) {…}“ pak zní vcelku přirozeně.

    před 19 lety | reagoval [18] Brano [19] David Grudl
  9. Jirka #9

    Anglicky a singulár. Nazvy tabulek doplnuji prefixem urcujicim modul aplikace: core_setting, shop_order, shop_customer atd.

    před 19 lety
  10. peCan #10

    Pouzivam na tabulky anglicke nazvy v pluralu a v php mam promenne cesky. dulezite je abych se v tom vyznal, kazdy ma svuj styl:-)

    před 19 lety
  11. Pavel Prostřední #11

    Taky budu hlasovat! :)

    Plurál anglicky

    před 19 lety
  12. johno #12

    avatar

    Anglicky, plurál a cudzie kľúče v tvare creator_id.

    Tabuľky, ktoré majú len cudzie kľúče? To myslíš prepojovacie, kvôli reláciám M:N?

    Tak tie, keď neviem poriadne nazvať vidím ako „bad smell“ a rovno sa zamýšľam nad lepším návrhom. Vačšinou to však skončí ako categorizations, occurrences, authorships,…

    před 19 lety
  13. johno #13

    avatar

    No a tie polia tiež samozrejme anglicky a v plurále.

    před 19 lety
  14. carnero #14

    cesky a plurál, většinou. Komentáře uživatelů jsou v tabulce na_smazani, což není ani jedno.

    před 19 lety
  15. Pin007 #15

    avatar

    Ja pouzivam jak na tabulky tak na pole anglicky singular. Parovaci tabulky pak casti jmen tabulek spojenych mlckou (‚-‘).

    Co se tyce promenych znam jednoho, ktery takhle zacne kodit a na jemna promenych pouziva abecedu, kdyz dojde, pokracuje aa, ab… Je to pak celkem dobra krizovka, neco doplnit nebo upravit, vrele doporucuji 🙂

    před 19 lety | reagoval [17] johno
  16. Pin007 #16

    avatar

    na_smazani vede… kam se hrabe abeceda 😁

    před 19 lety
  17. johno #17

    avatar

    #15 Pin007, A nevolá sa ten tvoj kolega náhodou priezviskom Obfuskátor?

    před 19 lety | reagoval [19] David Grudl [20] Pin007
  18. Brano #18

    Prikláňam sa k #8 David Majda

    před 19 lety
  19. David Grudl #19

    avatar

    #8 Davide Majdo, dělám to v podstatě stejně. Jen tabulky s cizími klíčemi spojuji pomocí 2, tedy users2groups.

    #17 johno, 🙂

    A co tabulky nazývat ‚table1‘, ‚table2‘ … a v nich sloupce ‚A‘, ‚B‘, … ‚AA‘, … ‚ON‘…, prostě alá Excel? Myslím si, že takové SELECT m*SQR(c) AS e FROM table69 AS as INNER JOIN tableTky AS ass ON on = off WHERE WILD ROSES > 0 ORDER 1*joint HAVING fun zní věru dobře

    před 19 lety | reagoval [20] Pin007 [21] carnero [41] martin
  20. Pin007 #20

    avatar

    #17 johno, to sice ne, ale ma k nemu blizko ;)

    #19 Davide Grudle, padam ze zidle 😁

    před 19 lety
  21. carnero #21

    #19 Davide Grudle, Nechceš se dát na psaní pohádek a příběhů v SQL? Jak to tak vypadá, šlo by Ti to :)

    před 19 lety
  22. mafo #22

    zvacsa plural a anglicky, avsak casto v tom mam bordel, a dlho rozmyslam ci som html blok alebo classu nazval users alebo user

    ale pri tipovani mam uspesnost 50%!;)

    před 19 lety
  23. Adam Hošek #23

    avatar

    Zásada číslo jedna – vše anglicky. Angličtina má jednoznačně kratší a srozumitelnější slovíčka. A navíc jsme zvyklí z identifikátorů fcí a klíčových slov. Navíc u češtiny by to bylo krkolomné kvůli ohýbání slov :).

    Taky trochu řešim dilema, zdali singulár nebo plurál. Zatim jsem nedošel k definitivnímu závěru, ale spíš používám singulár :).

    před 19 lety
  24. Pavel #24

    Nejsem databázový specialista, ale mám tušení (a to hodně silné), že jasným doporučením ve většině knih a článků je singulár. Osobně se tím řídím, aniž bych za tím hledal nějakou větší logiku. Pak vše píšu anglicky, ale na tom určitě nesejde, pokud na softwaru nespolupracuje i nějaký cizinec.

    před 19 lety
  25. David Grudl #25

    avatar

    Odborné zdroje skutečně doporučují pro tabulky jednotné číslo. Mé podvědomí naopak číslo množné. Ovšem odborné zdroje jsou moudřejší, proto ustoupí ;)

    Asi nejdůležitější je si v tom udělat sám pro sebe jasno a přísně dodržovat svou (ale rozumnou!) konvenci.

    před 19 lety
  26. llook #26

    avatar

    Nazvy tabulek ang. plural – users, loosers, items… a nazvy poli ang. singular – name, password, content atd.

    Doted jsem to delal tak nejak intuitivne, jestli zacnu s Cake Frameworkem, tak budu mit i prakticky duvod – tam pouzivany objektove-relacni mapovani predpoklada, ze kdyz se trida jmenuje User, tak predstavuje zaznam z tabulky Users.

    p.s. Sorry za diakritiku, stavkuje mi Opera i FF, tak pouzivam Dillo.

    před 19 lety | reagoval [27] David Grudl
  27. David Grudl #27

    avatar

    #26 llooku, Dildo? jojo, to je fajn 😁

    před 19 lety
  28. charlie #28

    anglicky a plural.. a btw dobrej obrazek co doplnuje spot.. synthesia.. ach, to byly casy..:)

    před 19 lety
  29. Arthur Dent #29

    Já všechny tabulky a pole zásadně a vždy pojmenovávám tak, jak mě v danou chvíli napadne! :)

    A od doby, kdy jsem se vytrestal se sloupcem MySQL tabulky „posts“, pojmenovaným „text“, jsem schopný pojmenovat sloupce třeba „id, id_parent, title, author, obsah“. Purismus nepurismus…

    Ale pokud cítím, že nějaká logika velí dát množné číslo, tak ho dám, pokud cítím potřebu jednotného, dám jednotné. Hezky to vypadá třeba v foreach ($auta as $auto)… či v select jmeno, prijmeni from lidi

    před 19 lety | reagoval [51] SQi
  30. Solvina #30

    avatar

    Anglictina bez debaty. Proc jednotne cislo? Inu staci si precist neco o datovem modelovani (odborne zdroje).

    před 19 lety
  31. maarlin #31

    Vždycky cesky a vetsinou plural.

    před 19 lety
  32. Ladislav Martinčík #32

    avatar

    Z velké části anglicky a plurál. Používám to už hodně dlouho, ale správně jsem to začal používat až když jsem se angažoval do Ruby a hlavně do Ruby on Rails. Tento framework obsahuje „lightweight“ ORM, ktere v základu předpokládá, že pokud uděláte třídu „Human“ tak tabulka se bude jmenovat „people“. Spusta lidí tvrdí že používá plural, ale jenom málo lidí si dá opravdu práci najít si angl. plurál k danému slovu (prostě přidávají na konec jenom „s“). Angl. hlavně kvuli cizincům, kteří sem tam nahlížejí do kódu, a také z důvodů toho, že většina jazyků je založena na angl. a je to tak jednodušší. V tomhle ohledu češtinu moc nemám rad!

    před 19 lety
  33. Štěpán Svoboda #33

    avatar

    Já používám na názvy tabulek: anglický singulár, na názvy polí: anglický singulár, na názvy polí: anglický plurál – (jak již někdo zmínil <i>foreach</i>)

    Trvalo mi dlouho než jsem si ustálil nějaká svá pravidla – češtinu jsem používal také, ale časem jsem zjistil, že mi čeština bez diakritiky leze drobátko na nervy.

    před 19 lety
  34. Jan Havrda #34

    Anglicky i česky, vždy v jednotném čísle. Název tabulky je jedna věc, ale dál pracuji v XML a formulářích s jednotlivými položkami a tak je logičtější singulár. Dvojí značení (plurál/singulár) by pak znesnadňovalo párování informací.

    Př.

    XSL : <xsl:foreach select="users/user">

    HTML: <input name="user_1_surname">

    Angličtinu a češtinu volně mixuji, systémová data anglicky, specifická data českých stránek česky.

    před 19 lety
  35. rarous #35

    avatar

    Když si namodeluju databázi, tak mám entity v češtině a singuláru, dělat dvoji práci mi přijde zbytečné (abych to nějak přejmenovával). Navíc jsem čech a zatim se nechystám svoje kódy sdílet s cizinci tak píšu všechno v češtině, ikdyž pak vznikaj zajímavý názvy :) Pole samozřejmě v plurálu…

    před 19 lety | reagoval [36] llook
  36. llook #36

    avatar

    #35 rarousi, Anglictinu nepouzivam ani tak kvuli sdileni, jako spis kvuli tem zajimavym nazvum. Nemam rad, kdyz jsou v nazvu jedny promenny dve slova anglicky a jedno cesky.

    Ta anglictina tam proste sama skace, pri pouzivani cestiny vznikaji nazvy jako $stavSession, $souborProInclude nebo vyescapujRetezec(). Psat identifikatory anglicky mi prijde jednodussi.

    před 19 lety
  37. ph #37

    avatar

    sice je to asi jedno, ale JEN anglicky singular ma svoje kouzlo v tom, ze to nevypada tak blbe jako v cestine (pro nas) a clovek NIKDY neresi, jestli tam nahodou nechybi mnozne cislo (users, entities apod.). Sice to jde zpocatku trochu ztuha, ale je to jen o zvyku. Jak tu nekdo zminil Ruby on Rails – tam jsem s timto pristupem jemne narazil;) [ale da se to obejit modelovanim].

    před 19 lety | reagoval [38] llook
  38. llook #38

    avatar

    #37 phu, Co plati pro RoR, plati i pro mnou zmineny Cake, protoze to je Rails klon pro PHP. Ale asi ho nakonec nepouziju, nektere detaily se mi nelibi (treba pripona thtml pro sablony). Urcite se ale inspiruju, treba uz ta implementace Active Record pattern, to je proste bezva.

    před 19 lety
  39. johno #39

    avatar

    ActiveRecord som mal implementovaný (bez relácií) a potom som zistil, že to až také super to nie je. Miešajú sa tam doménové objekty s perzistenciou. Na nejaké malé veci je to paráda, ale teraz mám rozrobenú trochu lepšiu verziu.

    Malá ukážka:

    $finder = new Finder('Article');
    $finder->mustEqual('author', 'johno');
    $articles = $finder->findAll();

    alebo

    $article = new Article();
    $article->author = 'johno';
    $article->title = 'Hello world';
    $article->body = 'and Universe!';
    $article->created = Time::now();
    
    $torpid = Torpid::instance();
    $torpid->save($article); // insert
    
    $article->body = 'Bye!';
    $torpid->save($article); // update
    před 19 lety | reagoval [54] Matej Pivoluska
  40. Radek Hulán #40

    $lines = array(...);
    foreach ($lines as $line) {
    ...
    }
    před 19 lety | reagoval [49] Jirka Pech
  41. martin #41

    #19 Davide Grudle, mno, robil som svojho casu vo firme, kde nazyvali tabulky nejak takto TXXXYYYYYY (napr. T001000001), kde XXX bol myslim kod subsystemu a YYYYYY index tabulky v nom. a cudzie kluce vyzerali nejak takto TXXXYYYYYY_ZZ, kde ZZ bol index cudzeho kluca do tabulky TXXXYYYYYY z aktualnej tabulky. no a kedze v priemernom systeme bolo tak 50 tabuliek, mali sme k tomu asi dvojstrankovy dokument mapujuci tieto kody na logicke nazvy… dobry sposob, ako si zapratat cas mozgu blbostami.

    inac ja pouzivam anglicky singular (nepaci sa mi moc miesat slovencinu resp. cestinu v nazvoch s anglictinou v prikazoch jazyka – a to jak v kode, tak v sql). a ak sa nemylim, tak fyzicke nazvy tabuliek by mali byt v singulari a logicke v plurali. aspon tak som to myslim svojho casu cital (ak sa nemylim, mozno je to naopak).

    před 19 lety | reagoval [47] dENIS
  42. Milan #42

    Většinou plurál a česky. Funkce používám taky česky, protože se mi pak lépe orientuje v tom, co je moje funkce a co funkce daného progromavacího jazyka… i když uznávám, že to to není nejlepší přístup.

    před 19 lety
  43. mila #43

    Česky.
    Nemusím přemýšlet, jak se to a ono řekne anglicky, a nemusím řešit, abych nepoužil náhodou nějaké klíčové slovo.

    před 19 lety
  44. Štěpán Svoboda #44

    avatar

    Tak mě napadlo: Jak nazýváte sloupec v tabulce, který obsahuje první odstavec nebo chcete-li upoutávku na článek?

    před 19 lety | reagoval [45] David Grudl
  45. David Grudl #45

    avatar

    #44 Štěpáne Svobodo, asi by se hodilo perex

    před 19 lety
  46. Michael Le #46

    Anglický jazyk – protože je český ,nehezký' bez diakritiky.

    • je univerzální a kompatibilní.
    • nemá téměř žádné problémy s kódováním.
    • je jazykem mnoha spisovatelů = je smyslný.
    • je jednoduchý.
    • je profesionální.

    Singulár a plurál dle logiky → u tabulek a sloupců většinou pl., u proměnných sg. a u polí pl.

    před 19 lety
  47. dENIS #47

    #41 martine, Trochu z jiné oblasti: tchán dělá logistickou studii skladu jedné velké známé společnosti, a tam se na nějaké kódy regálových sekcí vyprdli. Jedna část se jmenuje hypermarket plzeň, další tesco ostrava atd. Asi přišli na to, že je jednodušší říct (a hlavně si zapamatovat), že kondenzátory patří do hypermarketu plzeň, než na pozici A27U.

    před 19 lety
  48. cortez #48

    avatar

    anglický plurál :))

    před 19 lety
  49. Jirka Pech #49

    #40 Radku Huláne, Charming. This is how the poet writes PHP. 🙂 Also see <a href="https://web.archive.org/web/20051104233959/http://sarahk.pcpropertymanager.com:80/blog/php-poetry/87/" title="PHP Poetry">this one</a>.

    před 19 lety
  50. Alex #50

    Vždy anglický singulár. Je to nemoc. Nemohu se toho zbavit. :)

    před 19 lety
  51. SQi #51

    avatar

    #29 Arthure Dente, Tak to jsme na tom zdřejmě stejně! A řekl bych že stejně blbě!

    před 19 lety
  52. mIREK #52

    avatar
    • U db tabulek používám anglický singulár.
    • U polí anglický plurál.
    • U tříd anglický singulár
    • U funkcí a metod podle toho z čím operují…

    Jinak zhlediska syntaxe se snažím psát stylem „fistWord“ , ale dříve jsem psal „fist_word“…
    Ovšem v SQL a nazvech tabulek zůstavám u „first_word“ doposud…

    před 19 lety
  53. Lokutus #53

    Já jsem pracoval ve firmě, kde jsme měli zakázky výhradně z Rakouska a Německa. Zhusta se jednalo o redesign starších aplikací. Němci a Rakušáci jsou prasata, co se psaní kódu týče. Ovšem názvy, konvence, nebo komentáře – to je skutečná lahůdka. Všechno v němčině. Od té doby používám na všechno angličtinu. Co kdyby za pár let dostal na přepracování mojí aplikaci třeba nějaký ukrajinec.

    Jinak se snažím všude používat singulár. Je to jednodušší a přehlednější.

    před 19 lety
  54. Matej Pivoluska #54

    #39 johno,
    O tom, na co je vhodne pouzit ActiveRecord a ine navrhove vzory pekne pojednava knizka Patterns of Enterprise Application Architecture od Martina Fowlera

    Bolo to zaujimave citanie.

    Ad jazyk. Anglictina? Cestina? Slovencina? Stretol som sa s nazorom, ze oficialny kod by mal byt po anglicky. A len take osobne bastle mozu byt aj v materinskom jazyku. Chyba lavky. Jeden by neveril, kolko lokalnych bastlov od vsakovakych flamskych a norskych programatorov sa v dosledku nestihania dokaze „zoficialnit“. A ked sa Vam po par rokoch dostane taky kod do ruky, lebo v nom treba narychlo nieco pomenit, to je len exkurzia do neznama!

    před 19 lety
  55. Ota #55

    Docela dobré rady (i k těm plurálům) jsou na https://web.archive.org/…ode_std.html 🙂

    před 19 lety
  56. yossarian #56

    avatar

    jak se mi to hodi :)

    před 19 lety

Tento článek byl uzavřen. Už není možné k němu přidávat komentáře.


phpFashion © 2004, 2024 David Grudl | o blogu

Ukázky zdrojových kódů smíte používat s uvedením autora a URL tohoto webu bez dalších omezení.