2 / 2 / 0
Регистрация: 05.12.2018
Сообщений: 109
|
|||||||||||
Промежуточное общение между таблицами12.09.2023, 06:10. Показов 733. Ответов 6
Метки нет Все метки)
(
Здравствуйте, изучаю Laravel - появился вопрос в ORM.
Создал таблицы сделал связи - *Скрин Дальше Определил модели:
0
|
12.09.2023, 06:10 | |
Ответы с готовыми решениями:
6
Отношения между таблицами laravel Посоветуйте что-нибудь промежуточное между Шилтдом и Рихтером Наладить связи между практически одинаковыми таблицами таблицами |
![]() 2481 / 1406 / 665
Регистрация: 23.08.2015
Сообщений: 3,546
|
|
12.09.2023, 15:53 | |
Xpystum, 1) У вас связь многие ко многим. Получается, что у Music может быть несколько артистов и несколько альбомов. Действительно ли такое нужно?
Если песня может быть только в одном альбоме и у него может быть только один артист, то промежуточные таблицы не нужны. Далее вы должны ответить на несколько вопросов. Может ли быть песня без альбома? Может ли быть альбом без артиста?
1
|
36 / 28 / 9
Регистрация: 02.01.2022
Сообщений: 131
|
|
13.09.2023, 18:07 | |
1. Musics можно назвать songs или lyrics (я еле понял, о чём это тут)
2. Many-to-many (MTM) таблицы тоже называть во множественном числе 3. В MTM таблицах id-шник не нужен 4. Размерность интов должна быть одинаковая. Если в MTM таблице user_id int(11), то в users должен быть id int(11), а не int(7) 5. "Но, что если я хочу напрямую обращаться через Artist к Album или наоборот" - скорее всего дополнительные MTM таблицы Конечно. Обычное дело, когда несколько исполнителей. Eminem ft. Dido - Stan Одна песня может быть в нескольких альбомах. Например, песня "Последний герой" Цоя представлена в альбомах а) "Последний герой", группа Кино б) "Легенда", группа Кино в) "Grand Collection", в которой 300 исполнителей. (сборники такие из 90-х) Другое дело, стратегия, как эту песню хранить в таблице. Если мы считаем песню уникальной сущностью, тогда запись об этой песне в songs будет одна (идеальный вариант, но тогда нужны дополнительные поля в MTM таблицах, например, sort и т.д.). Или мы считаем, чтодве разные песни в разных альбомах - это две разные записи в таблице songs. Это тоже вариант, но менее интересный. Каждый раз нужен будет distinct и другие, боком вылазящие, проблемы. Ещё одна стратегия в такого рода ресурсах: Плодить MTM таблицы или в конкретном MTM таблице "фильтровать" данные с помощью дополнительных полей. Мне нравится первый вариант, т.к. диски сейчас дешёвые, а по названию таблицы (если их правильно именовать), сразу понятно, какие данные в ней лежат.
0
|
![]() 2481 / 1406 / 665
Регистрация: 23.08.2015
Сообщений: 3,546
|
|
14.09.2023, 13:10 | |
Это может зависеть от конкретного проекта, как построят модель предметной области.
Xpystum, Если нам нужно вывести все альбомы конкретного артиста, то глупо это будет делать через песни, тем более если песня может состоять в других альбомах, которые в свою очередь могут относиться к другим артистам (судя по вашей реализации). Между альбомом и артистом должна быть прямая связь. Я бы делал связь один ко многим, чтоб альбом мог принадлежать только одному артисту, т.е. в таблице albums добавить поле artist_id с внешним ключом.
0
|
2 / 2 / 0
Регистрация: 05.12.2018
Сообщений: 109
|
|
16.09.2023, 04:41 [ТС] | |
Да я об этом как раз и думал, но меня напрягает то, что я делаю удобность для себя (для вывода Артистов и их альбомов добавляю таблицу и получается замыкаю по кругу данные), то-есть получается у меня лишняя таблица будет в БД, я понимаю если маленький проект, но если в больших работать? - лишняя таблица ARTIST -> ALBUMS (многие ко многим), когда данные я и так могу достать через музыку (что конечно будет сложнее)
0
|
16.09.2023, 04:41 | ||||||
Помогаю со студенческими работами здесь
7
Вёрстка таблицами ( разрыв между таблицами в ie) Общение между C++ и Java
Общение между программами Общение между диалогами Искать еще темы с ответами Или воспользуйтесь поиском по форуму:
|
|
Новые блоги и статьи
![]() |
||||
Переменные в Python
py-thonny 10.04.2025
Переменная в программировании — это символическое имя, связанное с областью памяти, в которой хранится значение. Она позволяет получать доступ к данным через понятные человеку идентификаторы, а не. . .
|
Многопоточность в C#: Task и асинхронные операции
UnmanagedCoder 10.04.2025
Многопоточность позволяет выполнять несколько операций одновременно, что важно для решения двух основных задач: повышения скорости выполнения вычислительно-сложных операций и сохранения отзывчивости. . .
|
Линейное решение не линейной задачи (емкость вычислений в сравнении с традиционными решениями пока не определена).
Hrethgir 10.04.2025
В рамках предстоящих вычислений пришлось (да, я тоже знаю про корень числа, и про степеня, и прочие теоремы, но. . . ) найти способ нахождения отношения двух углов. . . .
|
Запуск контейнеров Docker на ARM64
Mr. Docker 09.04.2025
Появление таких решений, как Apple M1/ M2, AWS Graviton, Ampere Altra и Raspberry Pi, сделало использование ARM-систем обыденностью для многих разработчиков и DevOps-инженеров. При этом Docker,. . .
|
Vue SFC компонент на PHP с Fusion
Jason-Webb 09.04.2025
PHP на сервере и JavaScript на клиенте — классическое сочетание, которое, несмотря на свою эффективность, создает определенный когнитивный диссонанс при разработке. В этом контексте появляются. . .
|
TypeScript vs JavaScript: Отличия и когда что использовать
Reangularity 09.04.2025
JavaScript появился в 1995 году как творение Брендана Эйха и быстро стал основой интерактивности в вебе. За свою историю он прошел путь от простого языка для манипуляций с DOM до полноценной. . .
|
Подключение Kafka к Elasticsearch
Codd 09.04.2025
Apache Kafka и Elasticsearch — две мощные технологии, которые при совместном использовании создают эффективную платформу для обработки и анализа данных в реальном времени. Kafka, выступая в роли. . .
|
Реализации таймеров в Unity
GameUnited 09.04.2025
Время — важный ресурс любой игры. Разработка качественных игровых механик невозможна без грамотного управления временем, а таймеры выступают ключевым инструментом этого управления. Представьте себе. . .
|
Функции высшего порядка в JavaScript
run.dev 09.04.2025
Функции высшего порядка представляют собой один из фундаментальных камней функционального программирования в JavaScript. По сути, это функции, которые либо принимают другие функции в качестве. . .
|
Flutter: Оптимизация производительности сложных UI
mobDevWorks 09.04.2025
Когда речь идет о сложных интерфейсах, Flutter сталкивается с несколькими фундаментальными проблемами производительности. Одна из них — избыточная перерисовка (repainting), когда даже небольшие. . .
|