"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.