Zalecane długości dla pełnej nazwy kraju i miasta

0

Projektuję tabelę, która będzie przechowywać pełne nazwy krajów i miast. Szukam w google i trafiłem na stronkę https://ss64.com/sql/syntax-field-sizes.html na której napisano

Town              Max 35 chars
Country           Max 70 chars (ISO 3166)
  1. Czy to dobre długości?
  2. Jakie polecilibyście długości dla tych kolumn zakładając, że w tabeli mogą znaleźć się wszystkie kraje oraz miasta z całego globu?
4

Town Max 35 chars

Słabe. Na szybko znalazłem Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch. 58 liter.
Z drugiej strony najdłuższa nazwa państwa to podobno Zjednoczone Królestwo Wielkiej Brytanii i Irlandii. 56 liter.

Jest jeszcze czasem coś takiego jak pełna, historyczna nazwa. Możesz powiedzieć Sanok, a możesz powiedzieć Królewskie Wolne Miasto Sanok i ta nazwa jest dalej używana i poprawna

UPDATE. to może pomóc:

1

Kraj zdecydowanie w słowniku, z dwuliterowym do trzycyfrowym kodem (mowa o kilku istniejących konwencjach).

Miejscowości polskie - baza Teryt? Byłoby "pro"

1

W robocie przechowujemy adresy i dla nazw miast mamy nvarchar(100)

3

W PostgreSQL - varchar (bez określania limitu)

1

Krajów nie jest dużo, o czym tu w ogóle myśleć daj nvarchar(255) lub ogólnie max, nie powinno to nikomu zaszkodzić bo aplikacja i tak powinna takie wolno zmienne dane cache'ować.
Z miastami jest ciekawiej bo jest ich już całkiem sporo na świecie. Mamy 7 miliardów ludzi, załóżmy że miasto z minimalną liczbą mieszkańców ma ich 1k, czyli wychodzi 7 milionów miast na świecie z bardzooooo dużym zapasem. Dając varchar(100) to mamy jakieś 700MB (ascii/utf-8) - co jest śmiesznie małą wartością. Generalnie dopóki nie przekroczysz rozmiaru wiersza, który jest dosyć niewielki (np. 8kb) to będzie OK. Baza może również trzymać nvarchar'y poza tabelą co będzie miało negatywny wpływ na wydajność.

Musisz sobie zrobić takie kalkulacje "serwetkowe" i ocenić sam ile tego potrzebujesz. Ja bym się nie szczypał i dał nvarchar(256)...

4
KamilAdam napisał(a):

Z drugiej strony najdłuższa nazwa państwa to podobno Zjednoczone Królestwo Wielkiej Brytanii i Irlandii. 56 liter.

Chyba raczej Zjednoczone Królestwo Wielkiej Brytanii i Irlandii Północnej, a więc jeszcze dłuższa nazwa. Takie państwo jak Zjednoczone Królestwo Wielkiej Brytanii i Irlandii już od dawna nie istnieje ;)

1

Masz liste krajów według ISO, polecam używanie jako klucza głównego 2 digit lub 3 digit.

https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes

1

ale czy dasz varchar(10) czy varchar(1000) to dla nazwy składającej się z 4 znaków w obu polach zajmie tyle samo miejsca więc w czym problem dać np. 100 czy 150?

5
  1. Przeczytaj
  2. Przeczytaj jeszcze raz.
  3. Jeśli dalej uważasz, że należy ograniczyć długość tych pól, to przeczytaj jeszcze raz.
  4. Użyj TEXT lub VARCHAR bez jakiegokolwiek ograniczenia (po stronie aplikacji też nie ograniczaj, chyba, że chcesz się zabezpieczyć przed super długim wpisem, wtedy możesz użyć np. 1024 by ograniczyć ze sporym zapasem z góry).

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