Если речь идет только о тех 4 полях, то это выглядит как одна таблица. Первичный ключ на ID
, уникальный индекс на LoginName
. Вы можете не хотеть хранить пароль, а только хеш.
В зависимости от ваших запросов, создайте разные индексы. Кроме того, вам может не понадобиться поле ID
.
UPDATE:
Создание индекса для определенных столбцов позволяет базе данных оптимизировать свои операторы SQL. Учитывая вашу пользовательскую таблицу:
USER
USER_ID BIGINT NOT NULL
LOGIN_ID VARCHAR(<size>) NOT NULL
PASSWORD VARCHAR(<size>) NOT NULL
NAME VARCHAR(<size>) NOT NULL
CONSTRAINT PK_USER PRIMARY KEY ( USER_ID )
Базы данных, которые я знаю, будут автоматически создавать индекс первичного ключа, что фактически означает, что база данных поддерживает оптимизированную таблицу поиска, для получения дополнительной информации см. WikiPedia .
Теперь, скажем, вы хотите запрашивать пользователей по LOGIN_ID
, что является довольно распространенным случаем использования, я думаю, вы можете создать еще один индекс, например:
CREATE INDEX I_USER_1 ON USER ( LOGIN_ID asc )
Указанный выше индекс оптимизирует select * from USER where LOGIN_ID='foo'
. Кроме того, вместо этого вы можете создать уникальный индекс, предполагая, что вы не хотите дублировать LOGIN_ID
s:
CREATE UNIQUE INDEX UI_USER_1 ON USER ( LOGIN_ID asc )
Вот и вся история, поэтому, если вы хотите оптимизировать запрос для реального имени пользователя (NAME
), просто создайте еще один индекс:
CREATE INDEX I_USER_2 ON USER ( NAME asc )