Uno Relación muchos diferencia подставляет relacion muchos muchos

Tengo ООН ejemplo не надел termino de entender ¿Cuál es la forma óptima de resolverlo?

Таблица Una llamada usuarios.

Таблица Una llamada publicaciones.

Довод "против" Si planeo guardar los registros de una publicación el id del usuario que lo registro; la siguiente estructura es correcta?

introducir la descripción de la imagen aquí

Pero por ejemplo atendiendo средства передачи que se pudiera crear una tabla llamada publicaciones-usuarios подставьте una estructura, подобный а-ля siguiente:

introducir la descripción de la imagen aquí

¿Cuál es el modo óptimo?, ya que por ejemplo si hago la primer estructura подставляют ООН inner join Комо el siguiente:

SELECT titulo, cuerpo, username FROM publicaciones
INNER JOIN usuarios
ON usuarios.id = publicaciones.usuarios_id
WHERE usuarios.id = 2;

Puedo крестцы таблицы las publicaciones que haga un usuario teniendo en cuanta que la vinculación de ambas es el id del usuario Комо llave foránea en la tabla publicaciones; pero никакой termino de entender bajo que escenarios se США cada uno

Соло Es ООН ejemplo atendiendo que busco aclarar esta duda

8
задан 24.07.2019, 09:40
1 ответ

Связи в sГ -

Она cuestiГіn фона, чтобы отвечать на твой вопрос, нет , если используя этот тип relaciГіn я могу получать такие данные, в то время как используя этот другой тип relaciГіn я не могу получать .

Действительно, ты можешь получать данные также с любым типом relaciГіn, если те же самые estГЎn довольно выдвинутые.

Кратко мы можем говорить, что:

Она relaciГіn один ко многим

Применяется Гєnicamente когда: У

  • publicaciГіn не может быть одна mГЎs пользователя.... ( один в... )
  • у пользователя может быть несколько публикаций............... ( много )

Или, в revГ©s:

  • пользователь не может иметь mГЎs одной publicaciГіn.... ( один в... )
  • у одной publicaciГіn может быть несколько пользователей............... ( много )

Она relaciГіn многие ко многим

Применяется когда: У

  • publicaciГіn может быть одна mГЎs пользователя........ ( многие в... )
  • у пользователя может быть несколько публикаций............... ( много )

в зависимости от cГіmo estГ© собранная ты aplicaciГіn, основанные на реальности данных, которая манипулирует , тогда tendrГЎs, который принимать решение из-за которого типа relaciГіn осуществить.

Или же ВїcuГЎl это - реальность из данных, которыми будешь манипулировать ты aplicaciГіn?:

  • Вїun usario, несколько публикаций?: relaciГіn один (пользователи) во многие (публикации)
  • Вїuna publicaciГіn, несколько пользователей?: relaciГіn один (публикации) во многих (пользователей)
  • Вїvarios пользователи, несколько публикаций?: relaciГіn много (пользователей) во многие (публикации) осуществляя ассоциативную таблицу или uniГіn (usuarios_publicaciones)

способ Гіptimo

Относительно способа Гіptima делать вещи, как он сказал @gbianchi в Вашем комментарии. Способ Гіptimo тот, что оптимизировал то, что ты хочешь сделать в базе данных, выполняя деловые правила.

не достаточен иметь тип relaciГіn в соответствии с реальностью данных, которым ты манипулируешь. TodavГ - в quedarГЎn некоторые детали, которые ты должен связывать в ней definiciГіn подмостков, такие, как Г-ndices, чтобы упрощать ее obtenciГіn данных, контролировать дублированные реестры, добавлять ограничения ссылочной целостности, которые предотвращали бы существование реестров huГ©rfanos, и т.д.


Получать данные

Было, который состоял та relaciГіn в том, чтобы ты использовал, всегда podrГЎs в том, чтобы получать данные, которых ты хочешь, подмостков.

Давайте Видеть:

Получая данные в одной relaciГіn один во многие

SELECT 
    u.nombre, 
    p.titulo 
FROM usuarios u
INNER JOIN publicaciones p ON u.id_usario = p.id_usuario

Получая данные в одной relaciГіn многие во многие

SELECT 
    u.nombre, 
    p.titulo 
FROM usuarios_publicaciones up
INNER JOIN usuarios u ON up.id_usario = u.id_usuario
INNER JOIN publicaciones p ON up.id_publicacion = p.id_publicacion

В обоих примерах получают те же колонны. Ло Гєnica, что varГ - в es способ получать данные делая JOIN корреспондентов, основанных на форме, в которой мы создали связи.

того, что я хочу сказать, состоит в том, что ты не можешь определять одну relaciГіn думая, что у этого есть какая-то implicaciГіn в способе получать данные . У него нет ни одной implicaciГіn. В обоих примерах мы получаем те же колонны nombre из таблицы usuarios и titulo из таблицы publicaciones. И asГ, - мы можем получать любую колонну, которая участвовала бы ее relaciГіn.

Другая вещь serГ - в факт получения группируемых данных, например в случае связей многие во многие. Для этого tambiГ©n существуют функции agrupaciГіn, как GROUP_CONCAT, в конкретном случае MySQL.

9
ответ дан 03.12.2019, 06:22
  • 1
    Я могу доводить до сведения, что в вопрос каков оптимальный способ, ответ тот, который он оптимизировал, которое queres делать в базе данных, и выполнило деловые правила? потому что всегда в этих вопросах, оставляется в стороне, что оптимальный способ не способ книги, если не тот, который истекает, с которым он требуется – gbianchi♦ 28.03.2018, 03:22
  • 2
    @gbianchi respondí в вопрос стараясь объяснять простой формы cuá ndo он применял тип relació n или другой, потому что выражала трудность понимать, который использовать... Относительно способ ó ptimo из этого делать, я верю в то, что serí вследствие применения типа relació n, которого потребовали, basá ndose в реальности данных в этом случае. В других случаях, serí во что-то такое широкое, что не habrí в способ ó ptimo отвечания :) – A. Cedano 28.03.2018, 03:32
  • 3
    Совершенный, но это разъяснение всегда оставляется в стороне. как будто она не была необходима. это как кричание их в тех, которые делают queries со страниц, твой код склонный к вставкам. это должен бы быть стандартный ответ также ;) равный твой ответ очень понравился мне... – gbianchi♦ 28.03.2018, 03:35

Теги

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