Я ищу руководство по структуре базы данных для многорегионального веб-сайта.Многонациональная база данных база данных с MySQL
Я создаю сайт, похожий на craigslist.com, который позволит пользователям добавлять сообщения в свой город. Я использую базу данных MySQL.
Я хочу иметь регионы в качестве подпапок, связанных с субдоменами, например. ca.mysite.com отправляется на mysite.com/ca.
Мой вопрос в том, как мне управлять базой данных, когда я хочу добавить другой город на свой сайт.
Если я использую другую базу данных для каждого города, пользователи не смогут входить в другие города, поскольку их данные для входа в систему хранятся в городе, в котором они зарегистрированы, в таблице пользователей его базы данных.
Это может быть и не проблема, поскольку контент является специфическим для города, например, Craigslist. Но, если они хотят связаться с пользователями в других городах, они не смогут.
Кроме того, были бы дублированные имена пользователей и адреса электронной почты в целом, так как пользователи могли бы зарегистрироваться во всех городах, используя тот же адрес электронной почты и имя пользователя.
Если я создаю центральную базу данных, например, таблицу пользователей и таблицу сообщений, а затем отдельную базу данных для каждого города со всеми сообщениями городов, то при отображении базовой информации мне нужно будет проконсультироваться с городом специфический db плюс центральный db, который хранит информацию пользователя.
В качестве альтернативы я мог бы хранить все на одной базе данных, и сохранить местоположение зарегистрированного пользователя в куки, передать, что в переменной сеанса, и использовать это место как часть запроса к базе данных при отображении результатов поиска и т.д.
Однако, это не добавит лишних накладных расходов на каждый запрос?
например. в каждом поиске должно быть добавлено значение «AND location = $ user_location».
Я действительно не знаю, какой был бы лучший способ здесь.
Заранее благодарим за помощь.
Спасибо, Hieu. Я не хотел перечислять все, потому что вопрос уже довольно длинный. Я просто хотел какое-то направление, используя пример реального мира, такой как craigslist, или меньший пример, который пользователь stackoverflow может иметь опыт построения. Основные функции сайта: размещение объявлений (включая текст и до 8 изображений) , В любой момент я ожидаю около 10 000 активных рекламных объявлений в каждом городе. Каждый пользователь может обмениваться сообщениями с помощью простой внутренней системы обмена сообщениями (все обрабатываются в таблице «сообщения»). Они также могут размещать рекламу. Это главный удар. Ключевым моментом является мультигород. – Aidan
Если вы используете MySQL, которая является реляционной базой данных, я предлагаю использовать одну таблицу для пользователей (назовем ее «Пользователи»), одну таблицу для городов (Города), одну таблицу для объявлений (Объявления) и одну таблицу для сообщений (Сообщения). Решение выше, основываясь на моем понимании того, что пользователь принадлежит только одному городу, но он может свободно переключаться между городами и сообщениями в любом городе, который он хочет. Кроме того, пользователи могут отправлять сообщения без установления дружбы. –
Да, это основная настройка, конечно, но то, что я прошу, есть, что такое NORM для создания сайтов с несколькими регионами (городами), такими как craigslist? Будет ли поиск через 100 000 объявлений (когда у меня есть 10 городов на один бит), а не 10 000 объявлений (когда есть 10 городов и 10 отдельных dbs), лучше, и если да, то как я могу поддерживать связь между сайтами в отношении к таблице пользователей? – Aidan