![]() |
Модераторы: LSD |
![]() ![]() ![]() |
|
JVM |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 189 Регистрация: 30.10.2006 Репутация: нет Всего: 5 |
С БД знаком очень поверхностно, поэтому такой вопрос. Посоветуйте, какие таблицы создать в БД(использую MS SQL 2005), если есть следующее:
full-name - фамилия и имя пользователя в системе e-mail - электронный адрес пользователя, может быть несколько type-rights - тип прав пользователя, под которыми он заходит в систему host-name - имя компьютера пользователя ip-host - IP-адрес компьютера пользователя password - пароль пользователя |
|||
|
||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 1 Всего: 122 |
-------------
TableUser ******** ID (INCREMENT) FIO (VARCHAR) - можно на три поля разделить EMail (VARCHAR) CodeTypeRight (INT) HostName (VARCHAR) IpHost (VARCHAR) Password (VARCHAR) ------------ ------------- TableTypeRight ******** ID (INCREMENT) Typ0eName (VARCHAR) ------------- |
|||
|
||||
JVM |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 189 Регистрация: 30.10.2006 Репутация: нет Всего: 5 |
а если у поьзователя несколько e-mail, то они записываются в TableUser
под разными ID? |
|||
|
||||
chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 8 Всего: 77 |
А вот тут вопрос требований, а не структуры Если нужен ОДИН мэйл, неизменный, допустим для человека - тогда просто себе поле Если их много - тогда дополнительная табличка - <мэйл>,<ID человека> -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
JVM |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 189 Регистрация: 30.10.2006 Репутация: нет Всего: 5 |
Возникли еще вопросы. Как хранить IP-адрес? Могут ли мне понадобиться отдельные части IP?
Использую Java. Стоит ли смотреть в сторону hibernate? Это сообщение отредактировал(а) JVM - 2.2.2007, 09:08 |
|||
|
||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 1 Всего: 122 |
JVM, если у юзера могут быть несколько почтовых ящиков - то
------------- TableUser ******** ID (INCREMENT) FIO (VARCHAR) - можно на три поля разделить CodeEMail (VARCHAR) CodeTypeRight (INT) HostName (VARCHAR) IpHost (VARCHAR) Password (VARCHAR) ------------ ------------- TableTypeRight ******** ID (INCREMENT) TypeName (VARCHAR) ------------- ------------- TableEmail ******** ID (INCREMENT) IDUser (INT) EmailName (VARCHAR) ------------- а про IP - лучше хранить его целиком... |
|||
|
||||
JVM |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 189 Регистрация: 30.10.2006 Репутация: нет Всего: 5 |
Rodman, но если так делать, то в TableUser получается избыточность.
Зачем в TableEmail создавать поле ID? Ведь сам по себе EmailName уже уникален. |
|||
|
||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 1 Всего: 122 |
Я всегда при создании новой таблицы создаю ей ID - потому что при возможном (дальнейшем) расширении базы, может понадобится использования ID этой таблицы... (согласен, если тебе не надо, мож не добавлять это поле)... Решай сам... мож мой метод глупый, но ИМХО я так делаю, т.к. мои базы состоят как минимум из 20 таблиц... |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 24 Всего: 538 |
Это мы должны знать? ![]()
Поищи по форуму, тема "естественные ключи vs синтетические" уже обсуждалась. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
SergeBS |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1111 Регистрация: 10.6.2005 Где: Владимир Репутация: 1 Всего: 22 |
Rodman,
Не можно, а НУЖНО. JVM, На DelphiKingdom - статья Т.Тенцера "Естественные ключи против искусственных". Читай. Я давно сделал практический вывод для себя: в любой таблице - столбик типа autoinc иметь в обязательном порядке, даже если в ней никогда не будет больше 10 записей. Поскольку обычно "никогда" не бывает. Год-два - и вдруг нате. |
|||
|
||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 1 Всего: 122 |
SergeBS, не я же базу делаю, я просто советую...
Я с тобой полностью согласен - писал выше |
|||
|
||||
JVM |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 189 Регистрация: 30.10.2006 Репутация: нет Всего: 5 |
||||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 5 Всего: 260 |
дело здесь, в первую очередь, не столько в "естественности", сколько в длине: при работе с самим адресом имеешь ключ переменной длины(что само по себе сильно влияет на скорость работы) и длиной - не менее 6 байт(ну, вроде "[email protected]"), в то время, как unsigned long int, если память мне не изменяет, фиксировано 8 байт. И не больше. |
|||
|
||||
JVM |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 189 Регистрация: 30.10.2006 Репутация: нет Всего: 5 |
Rodman, елси у пользователя будет несколько email, то зачем TableUser создавать столбец CodeEMail (VARCHAR)?
TableUser ******** ... CodeEMail (VARCHAR) ... |
|||
|
||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 1 Всего: 122 |
создай отдельную таблицу для Email
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Общие вопросы по базам данных" | |
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |