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

Добрый день! Подскажите. Я хочу спроектировать базу данных своего проекта. Это мой первый проект. Я уже примерно представляю себе, что там будет, например таблица id - логин - пароль для авторизации и регистрации. id - логин - тема - текст - дата чтобы оставлять записи. Систему "лайкания" записей (вернее поставления им плюсов и минусов) думаю реализовать id - логин пользователей которые плюсанули - логин пользователей которые минусонули. Личные сообщения видимо нужно реализовать при помощи id - логин отправителя - логин получателя - текст сообщение - дата. К каждому посту мне видимо нужна таблица id - текст комментария - логин оставившего коммент - дата. В общем у меня стандартный проект типа социальной сети.
Как спроектировать всё это по-научному? Всё это уже было реализовано много раз, можно ли где-нибудь например взять структуру базы данных для обмена личными сообщениями? Я понимаю, что конкретная структура зависит от того, какие запросы происходят чаще. Но тогда хотя-бы хотелось прокачать свой мозг до понимания того, какие у меня есть варианты проектирования одного и того же. Ничего не имею против, если Вы подскажите мне учебник, но только если он только про проектирование структуры БД, а не про всё подряд типа переноса БД с одного хостинга на другой.
  • Вопрос задан
  • 1764 просмотра
Пригласить эксперта
Ответы на вопрос 5
@mletov
Для начала почитайте про нормальные формы (хотя бы про первые три) и о том, почему стоит использовать нормализацию.
Когда поймете, почитайте, в каких случаях ее использовать не стоит.
Ответ написан
Комментировать
@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
)
Ответ написан
Комментировать
А можно пойти еще более быстрым путем, но тогда вы не научитесь проектировать.
Гуглите Архитектура БД Блога/Магазина/кинотеатра и так далее.
Ответ написан
Комментировать
artgrosvil
@artgrosvil
#dev #programming #student #startups #chill
Гуглите учебник по БД, а не про архитектуру. Судя по тому, как вы описали свой вопрос, вам рано еще до архитектуры. А само понимание "архитектуры" придет с опытом.

Потом используйте этот инструмент или ему аналогичный dbdesigner
Ответ написан
Комментировать
@kretsu
Я не думаю, что правильно начинать проект с дизайна базы.
Опишите сначала объекты которыми вы будете оперировать: пользователь, топик, сообщение и тд
Опишите все свойства объектов
Далее опишите отношения между ними
Потом напишите сценарии использования
Т.е. предлагаю для начала попробовать UML

А потом уже можно все это пробовать "мапить" на базу. С другой стороны, современные фреймворки позволяют это делать автоматический. Правда часто получается мусорка. Но всем пофиг на это, пока работает и не тормозит.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы