@delongeroman

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

Я в этом деле новичок, только начал изучение PHP. Прошу подсказать как мне лучше осуществить связь между таблицами внутри базы данных. Я буду делать базу данных для удобной работы с клиентами, будет поиск по заказчикам, их прошлые заказы и тд. Наверняка кто-то делал похожее, поделитесь пожалуйста, как вы это реализовали. На данный момент у меня 2 варианта. Либо искать связь через циклы. Например, в таблице заказчик будет id заказчика и через цикл перебором он будет искать этот же id в другой таблице и подставлять значения при совпадении, либо сделать связь через внешний ключ. Конечно же при внесении заказа должна быть выпадающая строка(условно, по прошлым адресам, на которые были сделаны заказы у конкретного заказчика). Будут уместны любые советы, желательно с примерами, дабы было от чего отталкиваться.
Набросал пример на листочке(извиняюсь за письменный вид)
5fa96440070e2211943358.jpeg
Спасибо заранее за помощь!
  • Вопрос задан
  • 85 просмотров
Решения вопроса 2
ThunderCat
@ThunderCat Куратор тега MySQL
{PHP, MySql, HTML, JS, CSS} developer
Все по классике:
1) 3 нормальная форма
2) join
Ответ написан
BasiC2k
@BasiC2k
.NET developer (open to job offers)
1. Определите - какие у Вас будут сущности (сотрудник, заказ, компания и т.д.) Сущность - это то, что нужно описать с помощью отдельной таблицы, то, что потребует несколько полей для описания.
2. Определите связь между сущностями (один - к одному, один - ко многим). Исходя из этого можно составить схему БД наподобие Вашего рисунка.
3. Определите - какие данные в какие поля будут вноситься, какой тип данных и размерность нужно использовать.
4. Смоделируйте ситуации по каждой таблице - например, что если у компании будет два телефонных номера? Как вы будете их сохранять? Перезаписывать? Записывать в том-же поле рядом? Или создать новую сущность (таблицу) с телефонными номерами?

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

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

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