Тип поле на базата данни int или varchar

Когато имам таблица например с Потребители и тази таблица има поле за потребителски тип, мога ли просто да направя полето за потребителски тип int и когато програмирам, знам, че type=1 е admin, а type=2 други потребители и т.н.? Или трябва да поставя type="admin", type="other" във varchar и след това в приложението всеки може да разбере какъв е типът и какво представлява всяка стойност? Друго решение е да направите таблица UserType само с "id" и "description" и да я свържете с потребителя, но това добре ли е за производителността? Само за да знам какво означава идентификаторът?

Ако използвам Int, само който се развива знае какво означават 1 и 2. Коя е най-добрата практика и плюсовете и минусите на всяка от тях? Благодаря ти

Примерна таблица:

User
_________
id
name
email
type

person Proposition Joe    schedule 17.07.2016    source източник


Отговори (2)


да, прав си, съжалявам, гледах заглавката като ред.
person pimpace    schedule 17.07.2016
comment
Обикновено постъпвам по този начин. Но защо добавянето на ключ за справочна таблица би подобрило производителността? В страната на приложението е по-бързо да направите заявката без присъединяване, само с where type=2 - person Proposition Joe; 17.07.2016
comment
Можете също така да направите къде и на две маси. Можете да се придържате към една таблица, ако приложението ви остане малко и ще го поддържате завинаги. В противен случай би било по-добре да отделите групите от потребителите. - person pimpace; 18.07.2016

Когато има малък брой сравнително статични типове, често съм използвал 3-знакова мнемоника вместо цяло число. Използвайки само главни букви, това предлага 17 576 пермутации, много от които лесно се разпознават. За доказателство помислете, че 50 щата са известни с пощенски код от 2 знака, а всички летища в света - с 3-буквен код. Обзалагам се, че знаете къде е LAX.

Ако не използвате отделна таблица за типовете, можете да използвате ограничение CHECK или дефиниран от потребителя тип, за да осъществите същото прилагане. Ако има само една описателна колона (да речем „име“), можете да включите изчислена колона в оператор CASE.

Но ако не искате да променяте схемата всеки път, когато се появи нов тип, отделна таблица с FK ограничение ще ви служи добре. Можете да използвате изглед, за да включите описателната информация, въпреки че за много цели мнемониката ще служи също толкова добре или по-добре.

person James K. Lowden    schedule 23.07.2016