DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   SQL baze podataka - Sponzor: Baze-Podataka.net (http://www.devprotalk.com/forumdisplay.php?f=10)
-   -   Imena kolona (http://www.devprotalk.com/showthread.php?t=8876)

zidoo 02. 07. 2010. 14:02

Imena kolona
 
Jedno fino anketno pitanje, bez ankete :)

Kako imenujete kolone u bazi? Da li koristite prefiks kod imena kolone: (user_id, user_username, user_password ... za tabelu user) ili jednostavno ( id, username, password jel se podrazumjeva tabela)...

Iskreno koristim prefiks posto nekad davno sam se tako fino izjebo sa velikim SQL izrazima i gomilom alias-a, ali evo sad bas gledam uglavnom ljudi koriste bez prefiksa...

Da cujem kakva su cija iskustva.

vidak 02. 07. 2010. 14:29

user_id, username, password...
login_id, user_id, date...
;)

DejanVesic 02. 07. 2010. 14:32

Primarne ključeve, bez obzira da li su u originalnoj tabeli ili kao foreign ključ u nekoj drugoj prefiksujem sa ID ili ID_

ID_ImeTabele tj. IDUser, IDCountry, IDState

Ostalo što "normalnije".

JovanT 02. 07. 2010. 14:35

А кад смо већ код тога, да ли имена колона пишете све малим словима или користите мешано? Да ли одвајате две речи доњом цртом или на неки други начин?

ivanhoe 02. 07. 2010. 15:09

primarni kljuc id, strani kljucevi <ime tabele u jednini>_id, polja bez prefixa, imena tabela uvek u mnozini, na engleskom, i sve sa malim slovima...

u php/mysql svetu to je manje vise standard, a i u kompleksnijim upitima uvek koristim ime_tabele.ime_polja, pa mi je zato besmisleno da pisem prefixe. Umesto imena tabele obicno stavim alias, da se ne bi mnogo pisalo, jer mi je uzasno nepregledno da gledam kilometarske nazive u upitima, a i na bazi obicno radim iz konzole i onda treba to sve otkucati :)

jablan 02. 07. 2010. 15:11

Rails (tačnije, ActiveRecord) podrazumeva da primarni ključ zove id, a spoljni model_id (npr. user_id, ako odgovara slogu u tabeli users). Koriste se samo mala slova i anderskorovi.

http://en.wikipedia.org/wiki/Convent..._configuration

Citat:

The phrase essentially means a developer only needs to specify unconventional aspects of the application. For example, if there's a class Sale in the model, the corresponding table in the database is called sales by default. It is only if one deviates from this convention, such as calling the table "products_sold", that one needs to write code regarding these names.

agvozden 02. 07. 2010. 15:43

id za primarne kljuceve, ime_tabele_id za veze

imena tabela u entitetu (zasto bih uvek imao 's' na kraju imena?)

prefikse sam koristio ranije kada su na hostinzima omogucavali uglavnom po jednu bazu. Vise nema smisla, osim ukoliko grupises tabele.

kickloop 02. 07. 2010. 15:48

primarni id, ostalo jednina, mala slova, donja_crta, engleski uglavnom

Nemanja Avramović 02. 07. 2010. 16:35

isto kao i Igor/Ivan

vidak 02. 07. 2010. 22:20

ukoliko u svakoj tabeli koristiš id kao oznaku primarnog ključa a ne npr user_id a pri tom razvijaš bazu u relacionom formatu neće moći da koristiš skraćeni oblik join => SELECT * FROM user INNER JOIN user_telefon USING (user_id).

MySQL preporučuje ne korišćenje Java stila tip userID i slično.

Framework-ci koriste oblik gde se kod svake table primarni ključ obeležava ID ali pogledaj to sa logičke strane, ako svaki ID treba biti unique onda je i logično da ti svaki primarni ključ ima jedinstven naziv.

ivanhoe 03. 07. 2010. 01:46

to stoji, ali ja USING prakticno nikad ne koristim, sto je naravno cisto stvar navike, nista tome ne fali... navikao sam da kucam tbl1, tbl2 za inner join...

IMHO glavna fora sa time da se primarni kljuc uvek zove isto u svakoj tabeli je sto to znatno pojednostavljuje biblioteke za rad sa bazom (CRUD operacije sve zavise od PK) i ubrzava rad sa bazom rucno (manje se kuca). Takodje imas neke situacije kao npr. sharding, gde je mnoooogo lakse ako su ti nazivi polja nezavisni od imena tabela, jer ih imas N identicnih primeraka...

BTW, nedavno sam radio sa bazom na ceskom, gde su se PK zvali recimo exkluzivita_ftpUcetID_archivID_id, i ajd ti to otkucaj kako treba...

vidak 03. 07. 2010. 01:52

Citat:

Originalno napisao ivanhoe (Napišite 86003)
exkluzivita_ftpUcetID_archivID_id, i ajd ti to otkucaj kako treba...

:) Vrh!

MorenoArdohain 03. 07. 2010. 02:30

Ja uvek koristim troslovnu skracenicu: usr_id, usr_name, usr_address, itd.. iz cisto prakticnih razloga (pogotovu kod velikog broja tabela gde imas dosta polja koja su slicna + mnogo dugackih sql upita).
A i ORM ne pravi problem oko toga, posto se bazira na primarnom kljucu u tabeli.

bluesman 03. 07. 2010. 04:05

Citat:

Originalno napisao ivanhoe (Napišite 86003)
BTW, nedavno sam radio sa bazom na ceskom, gde su se PK zvali recimo exkluzivita_ftpUcetID_archivID_id, i ajd ti to otkucaj kako treba...

Na to nisu ni mislili kada su "drag and drop" projektovali bazu, ti mi liči na nešto što generišu programi tipa Workbench. To su oni isti kojima je važnije da znaju sve žive skraćenice na webu nego praktično znanje :)

Što se mene tiče, ja obično koristim prefikse za polja po imenu tabele, ali ako nisu duži od 5 karaktera. Recimo za tabelu "articles" obično koristim article_id, article_title ... ili skraćeno art_id, art_title.

To je zbog toga što se dešava da kada imaš join-ove, polja koja se identično zovu mogu da prepiši jedno drugo. Ako imaš recimo tabele news i articles i u obe imaš polje "title" onda će JOIN da ostavi samo 1 title u niz koji dobiješ a i pored toga u kodu ne znaš ni koji title treba da ispišeš. Mislim da je bolje da stoji:

PHP kôd:

echo $data['article_title']; 

nego

PHP kôd:

echo $data['title']; 

Dakle, mislim da je bolje prefiksovati i zbog samih podataka i zbog čitljivosti koda. Sve jedno je da li je prefiks ili sufiks, bitno je samo da se razlikuje.

Milos Vukotic 03. 07. 2010. 09:18

Citat:

Originalno napisao ivanhoe (Napišite 85957)
primarni kljuc id, strani kljucevi <ime tabele u jednini>_id, polja bez prefixa, imena tabela uvek u mnozini, na engleskom, i sve sa malim slovima...

Taman ovako i ja :)
Jes' da stoji logika "što će ti S uvjek na kraju imena tabele" ali nekako mi je čitljivije... Jedninu doživljavam kao overkill u normalizaciji :)

Inače, ne znam zašto, ali mi jako bode oči kad ljudi kolonama daju imena tipa id_user umjesto user_id :1039:
Posebno kad je tabela sa više foreign ključeva pa pa naslažu id_ovo, id_ono...

zidoo 03. 07. 2010. 10:04

Sto ljud sto cudi, dvjesta zena ... :)

Meni taj prefiks izgleda sugavo i suvisno ali jednostavno je praktican, pa sam htijo da cujem sta jos kolege programiri kazu.

Aj uzdravlje, i pomalo sa tim imenima kolona :)

ivanhoe 03. 07. 2010. 11:30

Citat:

Originalno napisao bluesman (Napišite 86029)
To je zbog toga što se dešava da kada imaš join-ove, polja koja se identično zovu mogu da prepiši jedno drugo.

ovo si skroz u pravu. To se da lako resiti tako sto dodelis aliase, tipa
SELECT tbl1.*, tbl2.id AS tbl2_id FROM ...
ali zaista je u tom slucaju preglednije ako imaju prefix

jablan 03. 07. 2010. 22:47

^ Pa alias ti dođe kao prefiks, što se čitljivosti tiče dođe na isto. A barem postgres se buni kad imaš ista imena a ne navedeš alias.

Edit: Mislim na alias tabele, ne alias kolone.

bluesman 04. 07. 2010. 01:44

Da li možeš to malo da mi pojasniš kako je alias tabele isto što i prefiks kolone?


Vreme je GMT +2. Trenutno vreme je 06:29.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.