Какой уникальный идентификатор использовать для блогов и комментариев?

Этот вопрос возник из-за последствий другого вопроса: лучше ли иметь две отдельные пользовательские таблицы или одну?

Предполагая, что у меня есть два типа пользователей, Автор и Читатель, каждый из которых хранится в реляционных таблицах, привязанных к основной таблице Учетных записей следующим образом:

TABLE Accounts {
    id
    email
    password
    salt
    created
    modified
}

TABLE reader {
    id
    user_id
    ...
}

TABLE author {
    id
    user_id
    ...
}

Когда автор публикует блог, я должен пометить блог уникальным идентификатором из таблицы авторов или уникальным идентификатором из таблицы учетных записей? То же самое касается комментариев читателей. Должен ли я пометить комментарий уникальным идентификатором таблицы Reader или уникальным идентификатором таблицы Account?

Итак, в основном либо:

TABLE Blogs {
    id
    author_id
}

ИЛИ ЖЕ

TABLE Blogs {
    id
    account_id
}

Который с меньшей вероятностью откусит позже?

2 ответа

Решение
TABLE user {
    id
    email
    password
    salt
    created
    modified
}

TABLE profile {
    user_id
    age
    favorite_movie
    ... other useless stuff...
}

TABLE user_role {
    user_id
    role_id
}

TABLE role {
    id
    name (author, admin, user, subscriber, etc...)
}

TABLE blog {
    id
    user_id
    title
    text
    ...etc...
}


user HASMANY role
user HASONE profile
user HASONE blog

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

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

Обратите внимание, что я также считаю, что все авторы должны быть пользователями: каждый является пользователем, но только некоторые пользователи также имеют статус автора.

Другие вопросы по тегам