Все отношения должны быть определены?

Все отношения должны быть определены? В этом случае следует также определить отношение «компания-реклама»? Я имею в виду преимущество в том, что вам не нужно присоединяться к множеству столов. Что правильно?

company 1 - n person

person 1 - n advertising

(company 1 - n advertising)

Компания:

id | name
1  | xcompany  
2  | ycompany

человек:

id | name     | company_id
1  | xperson  | 1
2  | yperson  | 2

Реклама:

id | name     | person_id
1  | xad      | 1
2  | yad      | 2

advertising->person()->company();

SELECT 
    *
FROM
    advertising
        LEFT JOIN
    person ON advertising.person_id = person.id
        LEFT JOIN
    company ON person.company_id = company.id;

против рекламы:

id | name     | person_id | company_id
1  | xad      | 1         | 1
2  | yad      | 2         | 2

$advertising->company();

SELECT 
    *
FROM
    advertising
        LEFT JOIN
    company ON advertising.company_id = company.id;

Я полагаю, вы думаете о денормализации БД, которая является допустимой техникой, но ее следует применять только при необходимости: en.wikipedia.org/wiki/Denormalization

Andrius Rimkus 31.03.2018 16:00

Хотя я считаю этот вопрос вполне основанным на мнении, решение в рамках laravel довольно ясное: отношение HasManyThrough

Namoshek 31.03.2018 16:11

денормализуйте только тогда, когда у вас крупномасштабное приложение и вам нужно повысить производительность, в противном случае продолжайте нормализацию и сэкономьте много времени.

Ben 31.03.2018 21:05

Проверьте, подходит ли полиморфные отношения вашим потребностям.

Tpojka 01.04.2018 12:49
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
4
78
1

Ответы 1

Поскольку реклама в основном связана с человеком, я бы связал только отношения реклама -> человек. Однако это мое мнение о простом сценарии, и он упрощает жизнь.

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