Задать вопрос

Как спроектировать базу данных?

Добрый день! Подскажите. Я хочу спроектировать базу данных своего проекта. Это мой первый проект. Я уже примерно представляю себе, что там будет, например таблица id - логин - пароль для авторизации и регистрации. id - логин - тема - текст - дата чтобы оставлять записи. Систему "лайкания" записей (вернее поставления им плюсов и минусов) думаю реализовать id - логин пользователей которые плюсанули - логин пользователей которые минусонули. Личные сообщения видимо нужно реализовать при помощи id - логин отправителя - логин получателя - текст сообщение - дата. К каждому посту мне видимо нужна таблица id - текст комментария - логин оставившего коммент - дата. В общем у меня стандартный проект типа социальной сети.
Как спроектировать всё это по-научному? Всё это уже было реализовано много раз, можно ли где-нибудь например взять структуру базы данных для обмена личными сообщениями? Я понимаю, что конкретная структура зависит от того, какие запросы происходят чаще. Но тогда хотя-бы хотелось прокачать свой мозг до понимания того, какие у меня есть варианты проектирования одного и того же. Ничего не имею против, если Вы подскажите мне учебник, но только если он только про проектирование структуры БД, а не про всё подряд типа переноса БД с одного хостинга на другой.
  • Вопрос задан
  • 1772 просмотра
Подписаться 2 Оценить Комментировать
Ответ пользователя hail3b К ответам на вопрос (5)
@hail3b
Во первых вам нужнно научиться задавать вопросы а вернее их форматировать, в вашем вопросе нечитабельна структура таблиц.
Во вторых литературы полно в сети выбирай самую свежую и вперед. Техническую литературу не нужно читать последовательно если вы с главой знакомы читайте следующую. Индивидуальную книгу под ваш проект не найти в ней всегда будет что-то "лишнее".
В третьих вам нужно определиться с приоритетом поставленной задачи скорость выполнения или интерес/самообразование. Для новичка и не только это два противоположных друг другу приоритета и план выполнения будет разный. Если это заказ и нужно быстрее сделать, то берите готовый движок и настраиваете для себя. Если вам интересен сам процесс проектировки БД, то делайте все сами. Готовый проект также брать не стоит т.к. в нем нужно разбираться и он покажется вам очень сложный.

По вашему вопросу:
В вашей структуре есть ошибка, в каждой таблице есть поле логин а должно быть id ссылка на таблицу логин. Структура БД в вашем случае будет примерно такой:
-- Пользователи
CREATE TABLE user AS(
	id int identity,
	name varchar(128),
	pass varchar(128)
)
-- Авторизация / сессия
CREATE TABLE user_session AS(
	id int identity,
	user__id int,
	timestamp datetime
)
-- Сообщения
CREATE TABLE message AS(
	id int identity,
	post__id int,
	user_session__id int,
	subject varchar(255),
	text varchar(max)
)
-- лайк / дизлайк
CREATE TABLE message_like AS(
	id int identity,
	user_session__id int, -- пользователь кто плюсанул
	message__id int,
	value int -- плюс 1 / минус 1
)
Ответ написан
Комментировать