[ Orome @ 14.06.2012. 12:36 ] @
Imam priliku da ispocetka pravim IS. tabele sam uocio kao i njihove atribute. interesuje me da li cu imati koristi ako stavim da mi se PK tabele Grad zove idGrad, koji ce postojati u tabeli Regija kao FK pod nazivom idGrad. Znaci da se FK jedne i PK druge tabele zovu potpuno isto. znam da se ne moraju zvati isto ali sam primetio da Microsoft Visio moze da na osnovu istog naziva sam identifikuje da je idGrad u tabeli Regija FK tabele Grad. interesuje me da li ce indeksiranje u Sql Serveru ili join raditi brze/bolje zbog ovoga ili nema nikakve veze. po staroj navici bih stavio da se u tabeli Grad PK zove sifra, a FK u tabeli Regija da se zove grad. svejedno bih stavio indekse i join bih radio na isti nacin, ja pitam da li bi imao koristi kada bih promenio nacin davanja imena.
[ rambo @ 14.06.2012. 16:09 ] @
Savetujem da, pre nego što nastaviš dalje, malo proučiš "naming conventions" za entitete i atribute.

Neko generalno pravilo je da se imena entiteta (nazivi tabela) pišu u množini (Gradovi, Korisnici, Klijenti, Proizvodi, ...) a da se imena atributa pišu u jednini (GradID, KorisnikId, KlijentId, ProizvodId, ...). Nije preporučljivo da se koriste prefiksi u iminima entiteta, osim kada ih ima mnogo pa se želi grupisanje po pripadnosti nekom podsistemu (tbl_, sp_ i slični prefiksi se trebaju izbegavati po svaku cenu). Za to je mnogo bolje koristiti Scheme (dobar primer je sample baza AdventureWorks). Nemoj nikada ni zbog čega skraćivati nazive entiteta i atributa. Nemoj stavljati "space" u nazivima. Obično se koriste samo velika i mala slova latinice i underscore (_) umesto space. Brojeve treba izbegavati osim u posebnim slučajevima.

U svakom sistemu poželjno je koristiti neki "naming convention" zato što to drastično poboljšava kvalitet čitavog sistema. Čitav sistem će biti mnogo razumljiviji i svakome ko pored tebe dođe da radi na tom sistemu neće biti potrebno mnogo vremena da ga upozna.
[ Zidar @ 14.06.2012. 16:36 ] @
"Znaci da se FK jedne i PK druge tabele zovu potpuno isto." - dobra praksa, treba da se zovu isto. Pazljivo sa Vision, ponekad ne zelis da uradis ono sto Visio bas hoce da uradi.

"interesuje me da li ce indeksiranje u Sql Serveru ili join raditi brze/bolje zbog ovoga ili nema nikakve veze." nema veze. Indeksima je svejedno kako se sta zove, bitno je da postoji indeks.

"svejedno bih stavio indekse i join bih radio na isti nacin, ja pitam da li bi imao koristi kada bih promenio nacin davanja imena. " Indeksima je svejedno, ali je dobra praksa da se isti atribut zove isto u svim tabelama gde ga prenosis.

Mnoge druge stvari su vaznije nego kako ces nazvati atribute, pa makar radio i po starom (IDGard ovde, Grad onde).

Uzmimo na primer da kosristis IdGard svuda. Imao bi na primer dve tabele, Gradovi i Ulice, ovako nekako:

CREATE TABLE Gradovi (IdGrad int NOT NULL PRIMARY KEY, ImeGrada varchar(50) NOT NULL)
;
CREATE TABLE Ulice (IdGard int NOT NULL FOREIGN KEY REFERENCES Gradovi(IdGrad), NaziVulice varchar(50) NOT NULL)
;

Pa uneses gradove:
INSERT INTO Gradovi (IdGrad, ImeGrada)
SELECT 1, Beograd
UNION ALL
SELECT 2, 'Novi Sad'
UNION ALL
SELECT 3 'Nis'

Onda uneses ulice za ove gradove. I pocnes da koristis bazu za stampanje adresa. Onda posle dve godine dodje neki saljivdzija i uradi ovo:

UPDATE Gradovi
SET ImeGarda = 'Pancevo'
WHERE GradID = 1
;

Zamisli st se onda desava...... A sve zato sto je projektant resio da sebi olaksa zivot uvodjenjem numerickog Id koji nema veze sa stvarnoscu. Ne kazem da to ne treba raditi, samo treba biti svestan svega sto se moze desiti.






[ Orome @ 14.06.2012. 20:49 ] @
@Rambo vecinu stvari koju si izneo sam znao ali cu svakako ponovo procitati konvencije za nazive. moje pitanje je bilo vise o konkretnoj koristi. hvala na odgovoru...

@Zidar pretpostavio sam da nema nikakve veze ovo sa nazivima i optimizacijom, i to sto Visio radi da nije uvek mozda najbolje, upravo kako si ti napisao. medjutim ovaj tvoj primer mi nije najasniji. tj da preformulisem, jasan mi je da je greska moguca i da je lik stavio da se pancevo zove beograd. medjutim ne vidim gde ciljas jer je ova greska moguca u bilo kojoj situaciji kako god da se kolone zovu.


sve u svemu, korisna 2 odgovora. hvala vam, pomogli ste!