2010-11-22 8 views
0

Доброе утро, экспертыКонцепция отношения к базам данных

Мне нужен ваш совет. Предположим, у нас есть user, profile и post объектов.

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

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

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

+0

Можете ли вы объяснить, что представляют собой 'user',' profile' и 'post'? Что вы на самом деле собираетесь делать с данными, как часто и в каком масштабе? –

+0

@Surreal Dreams, спасибо за ответ. Они на самом деле представляют то, что они есть :) Данные 'Post' являются наиболее часто встречающимися в создании/обновлении, а затем пользователями и профилями. Конечно, на нынешнем этапе проект недостаточно велик. Но в будущем я ожидаю 10 000 просмотров в день. – Darmen

+0

В чем разница между «User» и «Profile»? Почему у пользователя много профилей? – wuputah

ответ

2

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

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

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

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

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

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

+0

Спасибо за четкий ответ. Собираюсь держать его простым, а затем оптимизировать. – Darmen

1

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

+0

Я предполагаю, что это может быть правильно, но слишком медленно. Хорошо, спасибо, hash1baby. – Darmen

1

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

+0

спасибо. Профили содержат определенную информацию, например, местную репутацию или smth, как это (в терминах StackExchange). – Darmen

Смежные вопросы