Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Nazewnictwo klucza głównego, id, tid, table_id
markonix
post
Post #1





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


Cały czas nie umiem się zdecydować nad konwencją nazewnictwa kolumn, zwłaszcza klucza głównego.

Ma to małe znaczenie dopóki nie będziemy robić łączeń na tabelach - czym większych tym poważniejsze komplikacje.

1. id i tylko id.
+ w miarę czytelne
+ dzięki analogii szybciej się pisze, kopiuje fragmenty kodu
+ przyda się przy pętlach
- spore problemy z JOIN (wymaga tworzenia Aliasów, co jest dosyć uciążliwe)

2. tid czyli już coś mówi.
Czyli np. dla użytkowników będzie to uid.
+ czytelniejsze od zwykłego id
+/- Przy join już lepiej choć może się zdarzyć, że uid będzie pasował do dwóch różnych tabel.
- nie ma już analogii.
- przy join w tabeli dodawanej zwykle jest kolumna łącznikowa czyli np. uid tak więc w jednym miejscu problem znika, w drugim się pojawia choć mniejszy bo alias już nie jest potrzebny bo uid tu i tu będzie taki sam, a po prostu trzeba będzie poprzedzać uid w ON nazwą tabeli

3. table_id czyli już typowo zależne od nazwy tabeli (może bez prefixu).
Czyli np. dla użytkowników będzie to user_id.
+ bardzo czytelne
+ Przy join nie ma szans na problemy, przynajmniej w ID ale widziałem też pomysły aby każdą kolumnę takim prefixem obdarowywać.
- troszkę brzydkie rozwiązanie bo zwykle nazwa tabeli jest w liczbie mnogiej i powinno być tak naprawdę users_id ..
- nie ma już analogii (choć znając nazwy tabeli można np. w pętli stworzyć analogiczne zapytania z jednym wyjątkiem patrz wyżej)..
- przy join w tabeli dodawanej zwykle jest kolumna łącznikowa czyli np. user_id tak więc w jednym miejscu problem znika, w drugim się pojawia choć mniejszy bo alias już nie jest potrzebny bo user_id tu i tu będzie taki sam, a po prostu trzeba będzie poprzedzać user_id w ON nazwą tabeli


Co u Was? (IMG:style_emoticons/default/smile.gif)

Ten post edytował markonix 16.12.2012, 14:22:02
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
pedro84
post
Post #2





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

Ostrzeżenie: (0%)
-----


Używam zawsze ID.

Parę słów komentarza:
1. To już naprawdę jest kwestia osobistej preferencji i ewentualnie dostosowania do konwencji nazewnictwa w istniejącej bazie. Widziałem już kwiatki typu: ID, Username, ale user_profile.
2. Problem przy joinach mogą pojawić się z wykorzystaniem każdej z metod. Nie ma problemów, kiedy stosujesz zapis: Table.ID = AnotherTable.ID, czyli poprzedzasz nazwę kolumny nazwą tabeli.
3. Używaj tego, co jest dla Ciebie wygodne - tak naprawdę tylko to ma znaczenie, w momencie kiedy nie musisz się dostosowywać do obowiązującej konwencji.
4. Każda konwencja jest lepsza, niż jej brak.

Tyle ode mnie.
Go to the top of the page
+Quote Post
mortus
post
Post #3





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Osobiście wszędzie używam nazwy id dla klucza głównego i aliasów dla tabel w zapytaniach. Tak naprawdę przy większej ilości złączeń nadanie nazwy user_id już trzem kolumnom w trzech różnych tabelach niczego nie ułatwi. To chyba kwestia gustu.

BTW: W punkcie 1 alias również nie jest potrzebny przy złączeniach, ale trzeba poprzedzić nazwy kolumn nazwami tabel. No i pamiętaj, że jeśli w dwóch tabelach kolumny mają takie same nazwy, to łącząc te tabele można użyć klauzuli USING, zamiast ON.
Go to the top of the page
+Quote Post
Damonsson
post
Post #4





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Ja używam nazwatabeliId. Przede wszystkim największe plusy dla mnie to czytelność i wykluczenie powtarzania się nazwy kolumny.

Ten post edytował Damonsson 16.12.2012, 15:00:09
Go to the top of the page
+Quote Post
sazian
post
Post #5





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 141
Dołączył: 19.09.2006
Skąd: B-tów

Ostrzeżenie: (0%)
-----


ja stosuje następujące "reguły":
1)nazwy tabel w liczbie mnogiej, a nazwy kolumn w liczbie pojedynczej
2)każda kolumna ma prefiks będący nazwą tabeli w liczbie pojedynczej
3)camelCase

czyli np. w tabeli users mam kolumny userId, userName, ...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 10:43