MySQL Поделиться user_id с таблицей пользователей и таблицей администраторов - PullRequest
0 голосов
/ 05 января 2012

Я создаю таблицу для комментариев , и одно из полей - user_id.Ну, и обычный пользователь, и администратор смогут оставлять комментарии, поэтому я не уверен, как мне это сделать.


Таблица пользователей имеет первичный ключ user_id

Таблица администраторов имеет первичный ключ admin_id


Так как мне это сделать?

Ответы [ 4 ]

2 голосов
/ 05 января 2012

почему бы не иметь всех пользователей и администраторов в одной таблице и иметь столбец "isAdmin" - если для пользователя установлено значение admin, равное 1, по умолчанию 0

или

ваша таблица комментариев должна иметь два столбца и обновлять либо user_id, либо admin_id, по умолчанию 0 - но это не очень хороший способ ...

1 голос
/ 05 января 2012

Если вы можете изменить дизайн, чтобы иметь одну таблицу (login?) С флагом isAdmin, я бы сделал это.


Если вы не можете, то есть процесс, который заставляет каждую запись в таблице администратора создавать связанные записи в пользовательской таблице. В таблице администраторов может быть поле user_id, чтобы связать их вместе.

Таким образом, у каждого администратора есть пользователь, и все комментарии могут быть сделаны с использованием этого user_id.


Я бы настоятельно рекомендовал не добавлять комментарии к и user_id и admin_id, при этом один из них должен быть пустым. Это сделает запросы неопрятными, помешает вам применять ограничения и свяжет вас с грязным двухключевым методом, если вы столкнетесь с подобной потребностью где-либо еще.

0 голосов
/ 05 января 2012

Тогда вы можете сделать комментарии к таблице как

comment_id-int
user_id-fk from users table or admin table
user_type- enum('admin','user')
comment

// И другие необходимые поля

0 голосов
/ 05 января 2012

Вы можете сделать это несколькими способами.либо иметь один commenter_id, который ссылается либо на user_id, либо на admin_id со связанным флагом user_type, либо иметь два поля commenter_id, одно для пользователей и одно для администраторов, а ключ off, из какого поля есть значение, чтобы определить, к какой таблице обращаться для любогозапросы.Я уверен, что есть и другие, более элегантные варианты, но эти два - быстрые и грязные.

...