Aplikacja dopiero się będzie tworzyła więc mam jeszcze szanse na podmianę na
małe litery (co prawda ponad 70 tabel). I czy naprawdę wielkie litery w pg to
taki problem?
--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
> jakie mogą mnie czekać niespodzianki, jeżeli w nazwach tabel i pól
> mam wielkie litery? gdzieś wyczytałam, że nie jest to zalecane
> (wielkie litery). w moim przypadku jest to pozoztałość z migracji
> bazy z Accessa
Duze litery w nazwach to rozszerzenie postgresa i moze sie zdarzyc ze
narzedzie firmy trzeciej nie bedzie sie potrafiło z taką bazą
porozumieć.
Standard przewiduje nazwy małym, duze litery sa przerabiane na male,
wiec PAULINA=Paulina=PaUlInA jest tożsame z nazwą tabeli/kolumny
paulina . Jednak w pg jesli obudujesz nazwe ciapkami "" oznaczaja 3
różne nazwy więc "PAULINA"!="Paulina"!="PaUlInA".
Wprowadza to sporo zamętu w kodzie i utrudnia migracje na cos innego
poza tym takie nazwy mogą się mylić.
>
> Aplikacja dopiero się będzie tworzyła więc mam jeszcze szanse na
> podmianę na małe litery (co prawda ponad 70 tabel). I czy naprawdę
> wielkie litery w pg to taki problem?
>
Zależy.
to nie jest problem dla pg - to jest problem interfejsów - np. tego
najgorszego czyli ludzi.
załóżmy, że zrobiłaś:
create table "People" ( "ID" serial, "Name" text).
select:
select Name from People
nie zadziała, bo (podobnie zgodnie ze standardem sql, ale ja nie
czytałem, więc nie oceniam), jest robiony "case folding" i zapytanie
jest wykonywane jako:
select name from people;
a tabeli tabeli i takiego pola nie masz.
ergo - jak zrobisz "quotowane" nazwy (bo zawierają wielkie litery, albo
coś innego dziwnego) to *zawsze* musisz potem quotować.
depesz
--
Linkedin: http://www.linkedin.com/in/depesz / blog: http://www.depesz.com/
jid/gtalk: dep...@depesz.com / aim:depeszhdl / skype:depesz_hdl / gg:6749007
kiepsko :-(,
szkoda tylko, że nie zwróciłam na to uwagi kilka lat temu a zauważyłam dopiero
przy próbie migracji z accessa - i na początku nie mogłam zrozumieć co robię
nie tak wpisując SQL z palca. Ale też widziałam te "" więc załozyłam że tak
musi być w pg (tym bardziej że EMS SQL Manager wszystko dla bezpieczeństwa
wrzuca w te "", nawet nazwy z małych liter)
Jeżeli problem leży w aplikacjach zewnętrznych to chyba jednak pozostanę przy
nazwach Tabel1.Pole1. Tym bardziej że aplikacje napisze się raz i można nad
tym zapanowac mając swiadomość gdzie tkwi problem
Dzięki za info
PS. Szkoda, że w ksiąkach tego nie piszą :-)