Konwencja nazewnictwa tabel w bazie danych - małą czy dużą literą?

0

Pytanie z tytułu.

Słyszałem gdzieś, że nazwy tabel powinny być z małej litery. Szczególnie w MySQL z którego korzystam, bo ma jakieś problemy ta baza z windowsem. Mimo iż programuję obecnie na linuksie w Javie to dobrze wiedzieć jak się powinno nazywać. Co więcej korzystam z mapowania, a klasy w Javie przecież są z dużej litery zawsze ponazywane. Dziwnie tak mapowanie robić tabeli "user" na klasę "User".

0

Obojętne, czy mała, czy duża litera. Ważne, by odróżnić dużą od wielkiej. :) Ja tabele nazywam "z wielkiej" litery, bo tak ładniej wygląda, a znaczenia raczej nie ma :)

1

ja to wgl robię z małej i w dodatku w liczbie mnogiej. np. mam klasę modelu Book.java a @Table(name="books") a referencje np. authors_to_books . tak samo pola z id np. w tabeli students mam student_id address_id czy group_id . wydaje mi się to przejrzyste, ale z chęcią poznałabym jakąś dobrą sprawdzoną konwencje.

1
fourfour napisał(a):

Obojętne, czy mała, czy duża litera. ...
Widać nie przenosiłeś baz MySQL'a z linuks -> windows i z powrotem.
Nie chcesz problemów - dajesz całość małymi i beż żadnych znaków regionalnych.

0
fourfour napisał(a):

Obojętne, czy mała, czy duża litera. Ważne, by odróżnić dużą od wielkiej. :) Ja tabele nazywam "z wielkiej" litery

nie ma to jak przyczepić się poprawnej polszczyzny i zaproponować rusycyzm

0

Konwencja jest ważna, moim zdaniem ważniejsza od tego jaka ona jest. Ważne, aby była spójna.
Osobiście dorobiłem się własnej konwencji i wygląda ona mniej więcej tak:

  • Używam przedrostków - przede wszystkim.
  • Wszystkie tabele rozpoczynają się literą t, np. tIvItem
  • Wszystkie widoki rozpoczynają się literą v, np. vDfLockObjects
  • Wszystkie procedury składowane rozpoczynają się literą p, np. pDfLogIU
  • Nazwy obiektów (wszystkich) piszę CaMelEm
  • Nazwy pól w tabelach nie posiadają przedrostków (lub przyrostków) określających, z której tabeli pochodzą. Uważam to za błędne i wręcz szkodliwe...
  • Pole, za którym stoi konkretny byt, np. kod kontrahenta, w każdej tabeli nazywa się tak samo. U mnie będzie to IdContractor
  • Wszystkie nazwy pól ID rozpoczynają się od Id np. jak wyżej
  • We wszystkich zapytaniach używam aliasów dla tabel/widoków. W sumie używam tego tylko po to, aby jednoznacznie określić o jakie pole chodzi, a poza tym moje oprogramowanie do klepania SQL zdecydowanie lepiej sobie radzi z podpowiadaniem obiektów, kiedy aliasy w zapytaniu istnieją...

Przykładowe zapytanie w takiej bazie wygląda tak:

with cteQtyplanned as
( select P.IdTppRouteDocSource, sum(P.Qty) as QtyPlanned
   from tPPTask P 
  where P.IdTppRouteDocSource is not NULL and P.Status <> 4 -- nie bierz pod uwagę zadań anulowanych
  group by P.IdTppRouteDocSource
)
SELECT 
  DH.IdDocHdr,
  DH.IsVoid,
  DML.IdDocLine,
  DML.IdDocLineMrp,
  DH.DocNo,
  DHM.AddInfo,
  DH.DocDate,
  DH.DocStatus,
  DH.IdContractor,
  DH.IdSyDepartment,
  DML.DocDateReq,
  DL.IdIvItem,
  DL.Qty,
  COALESCE(PT.QtyPlanned, 0) as QtyPlanned,
  DL.Qty - COALESCE(PT.QtyPlanned, 0) as QtyToPlan,
  TR.IdTppRoute,
  TR.IdTppTechRouteRelation,
  TR.TppOperation,
  TR.IdDevice,
  TR.IdTool,
  TR.Multiple,
  TR.Tp,
  TR.TpRearm,
  TR.Tz,
  TR.Tpz,
  TR.Tj,
  TR.EmpQty,
  DL.SmallNote
FROM tTppTechRoute TR 
inner join tTppTechRouteRelation TRL on (TRL.IdTppTechRouteRelation = TR.IdTppTechRouteRelation)
inner join tDocLineMrp DML on (DML.IdDocLineMrp = TRL.IdDocLineMrp)
inner join tDocLine DL on (DML.IdDocLine = DL.IdDocLine)
inner join tDocHdr DH on (DH.IdDocHdr = DL.IdDocHdr)
left join tDocHdrMrp DHM on (DL.IdDocHdr = DHM.IdDocHdr)
left join cteQtyplanned as PT on (PT.IdTppRouteDocSource = TR.IdTppRoute)
0

Ja polecam pisać wszystko małymi, bez spacji i innych kombinacji. Bo na przykład taki Oracle wszystko sobie unifikuje o ile nie dasz cudzysłowu i można się potem zdziwić :P

0

Nie daję cudzysłowu w Oracle.
Piszę tak jak napisałem.
I popatrz - nie zdziwiłem się, aczkolwiek mój DAL zamienia mi to wszystko na WIELKIE LITERY; ale pies z nim. Ważne, że wszystko działa jak trzeba.
Ale ja się tam na Oracle nie znam, zarobiony jestem...

Pisanie wszystkiego małymi/wilekimi literami?
Nie dziękuję - miałem do czynienia z taką bazą danych; 1100 tabel ponad 12 tyś procedur i wszystko było pisane łącznie, bez kombinacji wielkimi literami z max. 8 znakami (zaszłość z 4GLa, który był używany do rozwijania tego systemu).
Powodzenia z takim "tworem"...

0
_13th_Dragon napisał(a):
fourfour napisał(a):

Obojętne, czy mała, czy duża litera. ...
Widać nie przenosiłeś baz MySQL'a z linuks -> windows i z powrotem.

Przenosiłem, ale pewnie takie, z którymi problemów nie było (albo nie pamiętam... ach, jak ten czas leci :D)

_13th_Dragon napisał(a):

beż żadnych znaków regionalnych.

Moim zdaniem to akurat należy stosować zawsze -czy nazwy tabel, czy zmiennych, czy plików czy innego czegokolwiek im podobnego.

0

Czyli z tym MySQLem to prawda jednak.

Dzięki.

0

jak sie robi na windowsie to wszystko jedno.
Klopoty sie pojawiaja jak trzeba to przeniesc na linuxa i z powrotem.

Kto miał takie doswiadczenie to wie, a kto tylko dziala na windowsie to niech sobie wezmie do serca.

lepiej pisac nazwa_tabeli niz NazwaTabeli, a o spacjach to juz chlopaki zapomnijcie zupelnie.

0

Nazwa tabeli: wszystko z małej + podkreślenia + liczba pojedyncza.
Pole ID: nazwa_tabeli_id

  • przy liczbie mnogiej nazwa pola ID nie może być wygenerowana automatem
  • przy dużych / małych literach dochodzi dodatkowy element którym trzeba zarządzać: skróty (np. ZamowienieVat czy ZamowienieVAT?), ktoś coś zapomniał, ktoś stwierdził że proste tabelki słownikowe z małej (np. "kolor")
0

Ja jakoś nie widzę powodu, dla którego tabele miałyby się nazywać inaczej niż klasy, a kolumny inaczej niż właściwości, z których powstają.

1 użytkowników online, w tym zalogowanych: 0, gości: 1