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

Всем доброго времени суток.

Вопрос 1: по чуть-чуть изучаю PHP, много где слышал, что серьезные проекты начинаются с проектирования БД, чтобы потом не разгребать и не грузить сервер запросами. Накидайте, пожалуйста, толковых книг по проектированию БД, чтобы нормальные формы 1, 2, 3, 4, желательно на русском, желательно по мере наращивания скилла, чтобы от базовых навыков, и постепенно переходя к профессиональной литературе.

Вопрос 2: хочу сделать нечто вроде автопортала, где будут все ТТХ автомобилей. К примеру, автомобили делятся на автопроизводителей (бренды: Honda, Audi, Mercedes, etc.), модели (A6, Jazz, Mondeo, CLS), а также комплектации (A6 Allroad, Mondeo 2.0 Diesel, CLS 63 AMG). Кроме того, есть ещё всякие тюнинг-ателье, которые делают модификации моделей (к примеру, Mercedes-Benz CLS AMG 63 Brabus Rocket 700). Отсюда возникает вопрос: производители, модели, комплектации и модификации комплектаций - это все разные таблички? Если да, то к примеру, где должен хранится столбец с мощностью, ведь у комплектаций и модификаций они разные? Вопрос возникает к тому, что было бы удобно переходить на сайте так Mercedes » CLS » AMG 63 » Brabus Rocket, и чтобы на любом из этих урвоней (хлебных крошек) я видел другие модификации комплектаций, или комплектации. (если я не ясно выразился, то представьте себе уровень вложенности какого-то интернет-магазина: Аксессуары для велосипеда -> Вилки -> Вилки Marzocchi -> Marzocchi 888)

Вопрос 3: какая нормальная форма БД считается оптимальной и используется в большинстве проектов? Стоит ли заморачиваться для среднего или более проекта?

Буду признателен за развернутые ответы.
  • Вопрос задан
  • 686 просмотров
Пригласить эксперта
Ответы на вопрос 2
OrlovEvgenii
@OrlovEvgenii
golang developer / DevOps
1. Имхо, джуну книги по бд не нужны, к тому же на русском годных книг по БД просто нету, впрочем на русском очень мало достойных книг так или иначе связанных с ИТ..по этому лучше читай документацию с офф сайта.
Ну а вообще БД в целом это громко сказано. Они бывают разные
Для начала тебе будет достаточно прочитать это.
СУБД (твой выбор)
https://habrahabr.ru/company/mailru/blog/266811/
Безсхемный подход (NoSQL)
https://habrahabr.ru/post/152477/

2. "Котлеты отдельно, мухи отдельно", все должно быть разделено, но при этом связанно.
Об этом почитай
Связи по внешнему ключу
https://habrahabr.ru/post/193380/

3. Возможно ты имел в виду какую базу данных использовать. Я бы тебе посоветовал postgresql, но будет православно если ты начнешь с mysql, т.к если возникнут вопросы то по mysql в рунете ты найдешь больше инфы.
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Отвечаю СРАЗУ на 3 ваших вопроса:
Всегда используется промежуточная таблица связей между сущностями при реляционных БД и связях "многие-ко-многим":
объектА:ID<->LINK: объектA:ID, объектБ:ID<->объектБ:ID

Через такие связи Вы можете задавать любые взаимосвязи между сущностями вплоть до FULL-MESH (полносвязная структура данных).
Достаточно оптимизировать структуру до 3НФ. Глубже - уже избыточность.
Ответ написан
Ваш ответ на вопрос

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

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