Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Внешний ключ для таблиц MyISAM
 
 автор: baston   (23.04.2010 в 12:20)   письмо автору
 
 

Возник вопрос по правилам именования внешних ключей.
Допустим, есть таблица users (пользователи).
Таблица пользователей имеет столбцы id_user, user_name.

Поскольку каждого пользователя нужно будет относить к одной из групп (администратор, модератор, пользователь), то решено создать дополнительную таблицу groups (группы). Эта таблица имеет два столбца: id_group, name_group. Значения в ней: admins, moders, members.

Таким образом, необходимо теперь добавить новый столбец в таблицу users со значением id_group из второй таблицы.

Вопрос: как следует именовать такой новый столбец в таблице users? С тем же именем, который имеется в таблице groups или это неважно (ведь FK для таблиц MyISAM не устанавливаются)?
Спасибо.

  Ответить  
 
 автор: Trianon   (23.04.2010 в 12:28)   письмо автору
 
   для: baston   (23.04.2010 в 12:20)
 

В таблицу users ничего добавлять не надо.
Ну если только очень сильно хотите, чтобы у каждого пользователя была некая базовая группа - одна и только одна. Хотя это и не отменит основное решение.
А так просто - не надо.

Нужна таблица связки из двух чужих ключей - как и практически для любой связи многие-ко-многим.

  Ответить  
 
 автор: Valick   (23.04.2010 в 12:37)   письмо автору
 
   для: Trianon   (23.04.2010 в 12:28)
 

куда уж мне успеть поперед Трианона :)))
кстати есть еще один плюс использования таблицы связи, обычно самая многочисленная группа это простые смертные юзеры, которых вообще можно не писать в таблицу, а применять к ним действия (привилегии) по-умолчанию

  Ответить  
 
 автор: baston   (23.04.2010 в 13:06)   письмо автору
 
   для: Valick   (23.04.2010 в 12:37)
 

Вы имеете в виду гостей? Так ведь есть гости, которые могут только читать, допустим, и есть зарегистрированные пользователи, которые помимо чтения могут еще и писАть.

  Ответить  
 
 автор: baston   (23.04.2010 в 12:53)   письмо автору
 
   для: Trianon   (23.04.2010 в 12:28)
 

Может быть, я что-то недопонимаю...

Каждый пользователь должен входить в какую-то одну группу - админ, модератор или обычный пользователь.
Таким образом, таблица groups все-равно нужна.

Но если в таблицу users не будем добавлять новый столбец с id из groups, то придется создавать дополнительную таблицу-связку, как вы сказали. И в этой связке у нас будут два id: id_user и id_group.
И вот здесь я не понимаю, в чем преимущества такого подхода?

  Ответить  
 
 автор: Trianon   (23.04.2010 в 13:05)   письмо автору
 
   для: baston   (23.04.2010 в 12:53)
 

Это у Вас сейчас админ, модер и обычный пользователь.

Глазом не моргнете, как появятся помощники, враги, желтые штаны, малиновые штаны, эцилопы и прочая дифференцированная нечисть.

  Ответить  
 
 автор: baston   (23.04.2010 в 13:07)   письмо автору
 
   для: Trianon   (23.04.2010 в 13:05)
 

Мысль понял! Спасибо.

  Ответить  
 
 автор: Valick   (23.04.2010 в 12:32)   письмо автору
 
   для: baston   (23.04.2010 в 12:20)
 

Давайте я забегу немного вперёд...
если у вас один и тот же user может входить в ноль и более групп, то следует задуматься о третьей таблице, а уж как вы там поля эти обзомете - это по-барабану.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования