Концепция связи с базой данных - PullRequest
0 голосов
/ 22 ноября 2010

Доброе утро, эксперты

Мне нужен ваш совет.Допустим, у нас есть user, profile и post сущностей.

Вариант 1: user имеет много profile, profile имеет много post

Вариант2: user имеет много profile, user имеет много post

Что лучше?По удобству «правильно» или, может быть, даже по производительности?

Ответы [ 3 ]

2 голосов
/ 22 ноября 2010

Это зависит ...

1) от того, как работает система ... если сообщения связаны с профилями.Затем вы должны использовать вариант 1. Например, вопросы, которые я публикую в Stackoverflow, должны быть связаны с моим профилем Stackoverflow.Вопросы, которые я публикую в Superuser, должны быть связаны с этим профилем.

Если вы хотите сохранить этот тип поведения в Варианте 2. В сообщении должно быть поле, указывающее, где оно принадлежит.

2) о том, как вы будете использовать данные.Если вам не нужна информация о профиле при запросе сообщений, возможно, вам не следует связывать профиль и сообщение.

3) С точки зрения производительности, используя очень простую логику, объединяя 3 таблицы для получения некоторыхинформация, вероятно, будет хуже, чем объединение двух таблиц (конечно, это зависит от столбцов в соединении, индексе и т. д., но при прочих равных условиях).

Я думаю, что лучше всего сделать этобудь проще.Проще говоря, будет проще понять, будет ли что-то работать так, как вы ожидаете.Если этого не произойдет, будет легче выяснить, почему и исправить это.И если потребуется, вам будет легче изменить его позже.

1 голос
/ 22 ноября 2010

Вариант 2 кажется мне намного лучше.
Но указание, какую информацию ваш магазин в профиле поможет понять.
Я предположил, что профиль содержит информацию о роли / категории.

1 голос
/ 22 ноября 2010

Предполагая, что вы хотите спросить: «В целом, при разработке модели данных, какие соображения должны быть оценены выше всего - удобство, правильность или производительность?», Тогда я бы сказал, что правильность должна быть первым приоритетом. Удобство и производительность будут второстепенными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...