Oto jak to robię:
- Nazwy tabeli są małymi literami, wykorzystuje podkreślenia oddzielić słowa i są pojedyncze (np
foo
,foo_bar
itp - Generalnie (nie zawsze) mam PK z automatycznym zwiększaniem. Używam w następujący sposób:
tablename_id
(npfoo_id
,foo_bar_id
itp). - Gdy tabela zawiera kolumnę będącą kluczem obcym, po prostu kopiuję nazwę kolumny tego klucza z dowolnej tabeli, z której pochodzi. Na przykład, powiedzmy, że tabela
foo_bar
ma FKfoo_id
(gdziefoo_id
jest PKfoo
). - Definiując SK w celu wymuszania integralności referencyjnej, używam:
tablename_fk_columnname
(np. Kontynuując przykład 3, byłobyfoo_bar_foo_id
). Ponieważ jest to kombinacja nazwa tabeli / nazwa kolumny, gwarantujemy, że będzie ona unikalna w bazie danych. - Porządkuję kolumny w ten sposób: PKs, FKs, a pozostałe kolumny alfabetycznie
Czy istnieje lepszy, bardziej standardowy sposób, aby to zrobić?
mysql
naming-conventions
mysql-workbench
StackOverflowNewbie
źródło
źródło
id_tableB
=> oh bez kolumny o innej nazwieid
, spójnośćid_tableB
=>id_tableB
wygląda po prostu schludniej ... lub tak jak robi to OP:foo_id
=>foo_id
zamiastfoo_id
=>id
Odpowiedzi:
Powiedziałbym przede wszystkim: bądź konsekwentny.
Wydaje mi się, że jesteś prawie na miejscu z konwencjami, które nakreśliłeś w swoim pytaniu. Jednak kilka komentarzy:
Myślę, że punkty 1 i 2 są dobre.
Punkt 3 - niestety nie zawsze jest to możliwe. Pomyśl, jak poradziłbyś sobie z pojedynczą tabelą
foo_bar
zawierającą kolumnyfoo_id
ianother_foo_id
obie odwołujące się do kolumnyfoo
tabelifoo_id
. Warto zastanowić się, jak sobie z tym poradzić. To jednak trochę przypadek narożny!Punkt 4 - podobny do punktu 3. Możesz chcieć wprowadzić liczbę na końcu nazwy klucza obcego, aby zapewnić więcej niż jedną kolumnę odniesienia.
Punkt 5 - Unikałbym tego. Zapewnia niewiele i przyprawi Cię o ból głowy, jeśli zechcesz później dodać lub usunąć kolumny z tabeli.
Inne punkty to:
Konwencje nazewnictwa indeksów
Możesz zechcieć wprowadzić konwencję nazewnictwa indeksów - będzie to bardzo pomocne przy każdej pracy z metadanymi w bazie danych, którą możesz chcieć wykonać. Na przykład możesz po prostu chcieć wywołać indeks
foo_bar_idx1
lubfoo_idx1
- całkowicie zależy od Ciebie, ale warto to rozważyć.Nazwy kolumn w liczbie pojedynczej i mnogiej
Dobrym pomysłem może być zajęcie się drażliwą kwestią liczby mnogiej i pojedynczej w nazwach kolumn, a także w nazwach tabel. Ten temat często wywołuje duże debaty w społeczności DB. Pozostałbym przy formach liczby pojedynczej zarówno dla nazw tabel, jak i kolumn. Tam. Powiedziałem to.
Najważniejsza jest oczywiście konsekwencja!
źródło
documenttype
lubdocument_type
. Wolałbym to drugie, ale przez większość czasu mam wiele do wielu relacji i potrzebuję stołu, który wygląda jakdocument_document_type
. Jakieś sugestie, jak sobie z tym poradzić?Spójność jest kluczem do każdego standardu nazewnictwa. Dopóki jest to logiczne i spójne, jesteś tam w 99%.
Sam standard to bardzo osobiste preferencje - więc jeśli podoba ci się twój standard, biegnij z nim.
Odpowiadając wprost na twoje pytanie - nie, MySQL nie ma preferowanej konwencji / standardu nazewnictwa, więc toczenie własnej jest w porządku (a twoja wydaje się logiczna).
źródło
MySQL ma krótki opis ich mniej lub bardziej surowych reguł:
https://dev.mysql.com/doc/internals/en/coding-style.html
Najpopularniejszy styl kodowania MySQL autorstwa Simona Holywella:
http://www.sqlstyle.guide/
Zobacz także to pytanie: Czy istnieją opublikowane wytyczne dotyczące stylu kodowania w języku SQL?
źródło
Na szczęście programiści PHP nie są „fanatykami wielbłądów”, jak niektóre społeczności programistów, które znam.
Twoje konwencje brzmią dobrze.
O ile są a) proste i b) spójne - nie widzę żadnych problemów :)
PS: Osobiście uważam, że 5) to przesada ...
źródło
Prosta odpowiedź: NIE
Cóż, przynajmniej konwencja nazewnictwa jako taka zachęcana przez Oracle lub społeczność, nie, jednak w zasadzie musisz być świadomy przestrzegania zasad i ograniczeń dotyczących identyfikatorów, takich jak wskazana w dokumentacji MySQL: https://dev.mysql.com /doc/refman/8.0/en/identifiers.html
Jeśli chodzi o konwencję nazewnictwa, którą przestrzegasz, myślę, że jest ok, tylko cyfra 5 jest trochę niepotrzebna, myślę, że większość wizualnych narzędzi do zarządzania bazami danych oferuje opcję sortowania nazw kolumn (używam DBeavera i ma to), więc jeśli celem jest ładna wizualna prezentacja Twojego stołu, możesz skorzystać z tej opcji, o której wspomniałem.
Z własnego doświadczenia poleciłbym to:
lower_case_table_names
nie jest poprawnie skonfigurowany i serwer zaczyna generować błędy po prostu przez nierozpoznanie standardu camelCase lub PascalCase (problem z rozróżnianiem wielkości liter).A co z nazewnictwem „Liczba mnoga a liczba pojedyncza”? Cóż, w większości jest to sytuacja dotycząca osobistych preferencji. W moim przypadku staram się używać nazw w liczbie mnogiej dla tabel, ponieważ uważam, że tabela jest zbiorem elementów lub pakietem zawierającym elementy, więc nazwa w liczbie mnogiej ma dla mnie sens; i pojedyncze nazwy kolumn, ponieważ widzę kolumny jako atrybuty opisujące pojedynczo te elementy tabeli.
źródło