Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.69/26: Рейтинг темы: голосов - 26, средняя оценка - 4.69
apande
17 / 17 / 2
Регистрация: 19.09.2012
Сообщений: 92
1

Как лучше организовать БД для социальной сети

02.12.2012, 03:32. Просмотров 4821. Ответов 25

Доброго времени суток, уважаемые форумчане)
Подскажите как лучше организовать БД для соц сети.
Требуется:
Возможность добавления в друзья.
Переписки
Фото)

И мне больше всего интересно как лучше всего организовать переписки)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2012, 03:32
Ответы с готовыми решениями:

Как лучше организовать базу текстовых записей?
Нужна таблица, в которой будет приличное кол-во записей, в таблице будут поля:...

Корзина интернет-магазина. Как лучше организовать
Здравствуйте! обращаюсь к вам за советом. Есть зародыш интернет-магазина (БД...

Как лучше организовать connection к SQL базе?
Доброго времени суток! Прочел тут статью ...

ASP.NET Core. Как лучше организовать работу со скриптами JS?
Собственно, вот и весь вопрос. Скидываю все скрипты в файл site.js Большинство...

Ссылка на пост социальной сети с главной страницы и вывод имени автора
Сделал систему для создание Поста на главной странице хочу теперь что бы...

25
apande
17 / 17 / 2
Регистрация: 19.09.2012
Сообщений: 92
05.12.2012, 19:06  [ТС] 21
Вот результат работы
0
Миниатюры
Как лучше организовать БД для социальной сети  
ayrat_net
82 / 82 / 12
Регистрация: 12.01.2011
Сообщений: 1,049
06.12.2012, 15:24 22
apande,
Привет. Наверное ты сделал всё правильно, но не углублялся в ход обсуждения, но заметил один недочёт наверное очень серьёзный.
Таблицу которую я вижу сейчас по всей видимости не имеет ключей то есть,

Если бы ключём был только IDUser, то каждый пользователь мог бы написать только одно сообщение для во всей таблице и всё.
А если использовать второй случай с двумя ключами он не способен сохранять историю переписки то есть чтобы написать кому то сообщение повторно то есть в ходе переписки данные сообщения должны быть
Если бы 2 ключа то есть IDUser b IDUserFor то тогда бы каждый пользователь мог бы писать написать только одно сообщение любому пользователю системы.

В общем нормальной переписке не первый ни второй случай не удовлетворяю
Первый с одним ключём IDUser по умолчанию не подходит потому что он сам видишь ущербен со всех сторон.
Если брать два ключа IDUser и IDUserFor то он скажем на любителя и в обычно применяется редко, потому что не позволяет хранить историю переписки с данным пользователем, кроме последнего сообщения, то есть чтобы написать сообщение пользователю с которым уже веется переписка написанное сообщение будет а не добавляться новая строка. Конечно у этого способа есть множества плюсов, например то что сервер не хранит конфиденциальной переписки кроме последнего сообщения, что для клиента круто, да и какая никакая экономия память жест диска сервера. Но если для Form приложений она подходит, потому что клиентское приложение можно реализовать так что он будет хранить переписку при этом сервер её может по сути не хранить в нашем случаи хранить только последнее сообщение. А для Web приложений он не годится потому что по сути во время сеанса браузер можно обновлять с помощью аякс запросов таким способом что история сообщения будет видна во время переписки, но после того как закрыть браузер то всё пропадёт, то есть при следующей попытки написать сообщение человеку появится или пустое окно или только последнее сообщение. Использовать для этого куки не рекомендую, других способов хранения данных на долгое время на клиенте более или менее адекватных не знаю.

Что-то я тут расфилосовствовался, в общем в вашем случаи нужно добавить ещё одно поле ID и только его поставить ключевым полем, а генерацию id(last) + 1 можно реализовать стандартными методами SQL Server вроде где то в IsIdentity находится. Вероятно к значениям данного столбца вам никогда не пригодятся. Но это вам нужно для того если вы будете использовать Entity Freimwork то для нормальной работы и работой с этой таблицей он обязательно требует хоть одно ключевое поле. Для других сторонних инструментов на сколько наличие ключевого поля в таблицах SQL Server нужно я не знаю, но с EF или переносом проекта на него вы можете нахлебаться по полной,
0
apande
17 / 17 / 2
Регистрация: 19.09.2012
Сообщений: 92
06.12.2012, 18:39  [ТС] 23
Цитата Сообщение от ayrat_net Посмотреть сообщение
Если брать два ключа IDUser и IDUserFor то он скажем на любителя и в обычно применяется редко, потому что не позволяет хранить историю переписки с данным пользователем, кроме последнего сообщения,
Нууу..... в принципе все хранится))))
я понимаю что такой подход неправильные) потому что не понятно что будет если будет хотя бы 10000 пользователей))
0
Миниатюры
Как лучше организовать БД для социальной сети  
apande
17 / 17 / 2
Регистрация: 19.09.2012
Сообщений: 92
06.12.2012, 18:43  [ТС] 24
как создать файл скрипта, разворачивающий на сервере базу данных (БД))))?
Разворачивание БД должно представлять собой запуск этого файла двойным щелчком мыши без каких-либо дополнительных телодвижений.
Добавление начальных данных должно также присутствовать в этом скрипте.
0
apande
17 / 17 / 2
Регистрация: 19.09.2012
Сообщений: 92
06.12.2012, 18:52  [ТС] 25
А вот и то DAL
то как достаю данные
0
Миниатюры
Как лучше организовать БД для социальной сети  
ayrat_net
82 / 82 / 12
Регистрация: 12.01.2011
Сообщений: 1,049
06.12.2012, 20:05 26
Цитата Сообщение от apande Посмотреть сообщение
Сообщение от ayrat_net
Если брать два ключа IDUser и IDUserFor то он скажем на любителя и в обычно применяется редко, потому что не позволяет хранить историю переписки с данным пользователем, кроме последнего сообщения,
Нууу..... в принципе все хранится))))
Хм. Всё же или мы друг друга не понимаем - В вашем примере представлен 1 ключ как я понимаю - это ID (то есть около которого в sql server жёлтенький ключик) всё осальное где нет к примеру жёлтого ключика не являются ключём в понятии скЪюэль сервера, но конечно же играют роль таблиц которые помогают обрабатывать данные.

Или я чего то не понимаю? - или мы просто говорим об одном и том же но друг друга не понимаем

Добавлено через 8 минут
Что касается примера ajax - я пока занят надеюсь тебе тут помогут, а если что позднее конечно же помогу.

Но если не ошибаюсь под вин формс такого понятия как аякс нет, поэтому его как пример надо показывать на mvc приложении. хотя там ничего хитроумного нет !
0
06.12.2012, 20:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2012, 20:05

Социальные сети: как на MVC 3 можно организовать быстрое уведмомление о новом сообщении
Мне в голову пришло несколько вариантов: 1) организовать запросы со страницы...

Можно ли в ASP организовать закачку файлов из сети?
Всем Добрый день! Можно ли в ASP организовать закачку файлов из ИНТЕРНЕТ? ...

Как организовать browse для выбора файла?
1)Как организовать browse для выбора файла, т.е. FILE/OPEN/BROWSE? это надо...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru