Правильная организация базы данных
Правильная организация базы данных
Здравствуйте. Возник вопрос. как правильно организовать базу данных SQLite? Использоваться в приложении будет уже готовая база, созданная и заполненная на ПК.
Структура базы будет такова:
Страна:
-Россия
---Амурская область
-----Благовещенск
--------Объект, Адрес, Заметка, Оценка
--------Объект, Адрес, Заметка, Оценка
-----Завитинск
--------Объект, Адрес, Заметка, Оценка
--------Объект, Адрес, Заметка, Оценка
---Пермская область
-----Пермь
--------Объект, Адрес, Заметка, Оценка
--------Объект, Адрес, Заметка, Оценка
-----Краснокамск
--------Объект, Адрес, Заметка, Оценка
--------Объект, Адрес, Заметка, Оценка
-----......
-Украина
---Автономная Республика Крым
-----Алушта
--------Объект, Адрес, Заметка, Оценка
--------Объект, Адрес, Заметка, Оценка
-----Феодосия
--------Объект, Адрес, Заметка, Оценка
--------Объект, Адрес, Заметка, Оценка
---Винницкая область
-----Винница
--------Объект, Адрес, Заметка, Оценка
--------Объект, Адрес, Заметка, Оценка
-----Хмельник
--------Объект, Адрес, Заметка, Оценка
--------Объект, Адрес, Заметка, Оценка
---Волынская область
-----Луцк
--------Объект, Адрес, Заметка, Оценка
--------Объект, Адрес, Заметка, Оценка
---....
А приложение будет вытягивать данные объекта (Объект, Адрес, Заметка, Оценка), и отображать их на экране. Каким образом сделать такие "вложения" SQLite на компьютере?
Структура базы будет такова:
Страна:
-Россия
---Амурская область
-----Благовещенск
--------Объект, Адрес, Заметка, Оценка
--------Объект, Адрес, Заметка, Оценка
-----Завитинск
--------Объект, Адрес, Заметка, Оценка
--------Объект, Адрес, Заметка, Оценка
---Пермская область
-----Пермь
--------Объект, Адрес, Заметка, Оценка
--------Объект, Адрес, Заметка, Оценка
-----Краснокамск
--------Объект, Адрес, Заметка, Оценка
--------Объект, Адрес, Заметка, Оценка
-----......
-Украина
---Автономная Республика Крым
-----Алушта
--------Объект, Адрес, Заметка, Оценка
--------Объект, Адрес, Заметка, Оценка
-----Феодосия
--------Объект, Адрес, Заметка, Оценка
--------Объект, Адрес, Заметка, Оценка
---Винницкая область
-----Винница
--------Объект, Адрес, Заметка, Оценка
--------Объект, Адрес, Заметка, Оценка
-----Хмельник
--------Объект, Адрес, Заметка, Оценка
--------Объект, Адрес, Заметка, Оценка
---Волынская область
-----Луцк
--------Объект, Адрес, Заметка, Оценка
--------Объект, Адрес, Заметка, Оценка
---....
А приложение будет вытягивать данные объекта (Объект, Адрес, Заметка, Оценка), и отображать их на экране. Каким образом сделать такие "вложения" SQLite на компьютере?
Re: Правильная организация базы данных
раскройте вопрос. Вас интересует структура бд?
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Правильная организация базы данных
да. как правильно связать в базе данные. К примеру что к России относятся Амурская область и Пермская область, но никак не Винницкая область. К Амурской области относятся Благовещенск, Завитинск и тд. И в каждом из них есть множество объектов с данными (Объект, Адрес, Заметка, Оценка). Как это все правильно организовать,чтобы потом проще было вносить новые данные с ПК, ну и отображать эту инфу в приложении?
Re: Правильная организация базы данных
нужно разбить на несколько сущностей, и получится несколько таблиц:
Вот и будет 4 таблицы. Если спросите почему так много таблиц? То овтечу наперёд - нужно знать СУБД и СУРБД.table name: cuntry
column:
id_country int primary key auto_increment not null,
cuntry_name varchar[10] not null
table name: region
column:
id_region int primary key auto_increment not null,
id_country int foreign key not null,
region_name varchar[20] not null
table name: city
id_city int primary key auto_increment not null,
id_region int foreign key not null,
city_name varchar[20] not null
table name: description
id_desc int primary key auto_increment not null,
id_city int foreign key not null,
object varchar[20] not null,
adres varchar[40] not null,
note varchar[50],
rating varchar[10] not null //может быть и int, я просто не знаю что у вас тута будет
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Правильная организация базы данных
rezak90, благодарю! буду пробовать. Я так понимаю что создавать необходимо в SQLite Expert Personal 3?
Re: Правильная организация базы данных
Это уже на ваше усмотрение где создавать, какой софт предпочитаете такой и используйте.Softvok писал(а):rezak90, благодарю! буду пробовать. Я так понимаю что создавать необходимо в SQLite Expert Personal 3?
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Правильная организация базы данных
У меня тоже есть вопрос по SQLite. Я не являюсь спецом по СУБД.
Есть база, записи с TEXT-овыми полями, их очень много. Нужно построить поиск записей с выборкой по первым буквам слов в полях определенного столбца. LIKE и MATCH работают не очень хорошо, у них нет таких возможностей как у RegExp (типа поиска по границам слов и пр.) поэтому в результаты попадает много лишнего, да и при больших размерах базы они работают медленно.
Есть идея добавить еще один столбец в который поместить что-то вроде "сигнатур" с начальными буквами слов, и поиск производить по нему, для этого написать скрипт, чтобы обработать базу, но у меня такое ощущение, что я изобретаю велосипед. Может есть какие встроенные средства SQLite , чтобы обойтись меньшей кровью? Конечно нужно, чтобы эти средства поддерживались в Android.
Есть база, записи с TEXT-овыми полями, их очень много. Нужно построить поиск записей с выборкой по первым буквам слов в полях определенного столбца. LIKE и MATCH работают не очень хорошо, у них нет таких возможностей как у RegExp (типа поиска по границам слов и пр.) поэтому в результаты попадает много лишнего, да и при больших размерах базы они работают медленно.
Есть идея добавить еще один столбец в который поместить что-то вроде "сигнатур" с начальными буквами слов, и поиск производить по нему, для этого написать скрипт, чтобы обработать базу, но у меня такое ощущение, что я изобретаю велосипед. Может есть какие встроенные средства SQLite , чтобы обойтись меньшей кровью? Конечно нужно, чтобы эти средства поддерживались в Android.
Последний раз редактировалось AndreyI 19 окт 2012, 15:35, всего редактировалось 1 раз.
Re: Правильная организация базы данных
а почему бы не выгрузить всё в ArrayList<String> и в нём уже поиск осуществить?
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Правильная организация базы данных
Это будет занимать слишком много памяти, в базе десятки тысяч записей с длинными полями
Да и разумно будет использовать средства SQLite, если таковые имеются т.к. сам движок достаточно шустрый.
Да и разумно будет использовать средства SQLite, если таковые имеются т.к. сам движок достаточно шустрый.
Последний раз редактировалось AndreyI 19 окт 2012, 15:39, всего редактировалось 1 раз.
Re: Правильная организация базы данных
думаешь перебор в бд будет быстрее? будет но не на много что практически не заметно. Но...
Если уж зашла речь о таком количестве бд, то нужно использовать orm технологии. Есть прекрасная под андроид ormlite. Бесплатная и полно примеров. Сейчас посмотрю, но мне кажется даже LIKE умеет использовать регулярки. Вот нашёл: http://stackoverflow.com/questions/5071 ... lite-query
Если уж зашла речь о таком количестве бд, то нужно использовать orm технологии. Есть прекрасная под андроид ormlite. Бесплатная и полно примеров. Сейчас посмотрю, но мне кажется даже LIKE умеет использовать регулярки. Вот нашёл: http://stackoverflow.com/questions/5071 ... lite-query
Последний раз редактировалось rezak90 19 окт 2012, 15:42, всего редактировалось 1 раз.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Правильная организация базы данных
В LIKE я нашел маски только % и _ но как их сориентировать, чтобы поиск шел по границам слов пока не разобрался.
Последний раз редактировалось AndreyI 19 окт 2012, 15:53, всего редактировалось 1 раз.
Re: Правильная организация базы данных
по моему у них в доке чётко и красиво с примерами написано:
http://www.sqlite.org/lang_expr.html
http://www.sqlite.org/lang_expr.html
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Правильная организация базы данных
Осталось выяснить поддерживается ли это в Android, что-то мне подсказывает что нетrezak90 писал(а):думаешь перебор в бд будет быстрее? будет но не на много что практически не заметно. Но...
Если уж зашла речь о таком количестве бд, то нужно использовать orm технологии. Есть прекрасная под андроид ormlite. Бесплатная и полно примеров. Сейчас посмотрю, но мне кажется даже LIKE умеет использовать регулярки. Вот нашёл: http://stackoverflow.com/questions/5071 ... lite-query
Re: Правильная организация базы данных
поддерживает, sqlite одна везде.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Правильная организация базы данных
Не все функции SQLite поддерживаются в Android особенно это касается расширенных.
http://www.sqlite.org/lang_expr.html#regexp
http://www.sqlite.org/lang_expr.html#regexp
No regexp() user function is defined by default and so use of the REGEXP operator will normally result in an error message. If a application-defined SQL function named "regexp" is added at run-time, that function will be called in order to implement the REGEXP operator.
Re: Правильная организация базы данных
ну хотя бы попробуй. Но всё таки взгляни на ormlite, по крайней мере скорость бд увеличится.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Правильная организация базы данных
Хорошо, посмотрю
Re: Правильная организация базы данных
Ну, собственно, как и ожидалосьrezak90 писал(а):ну хотя бы попробуй.
E/AndroidRuntime(7873): FATAL EXCEPTION: main
E/AndroidRuntime(7873): android.database.sqlite.SQLiteException: no such function: REGEXP:
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Правильная организация базы данных
Ну вы даете!!!
Для вырезания левых символов существует функция substr(X,Y). X - строка из которой вырезают, Y- количество символов.
Работает в разы быстрее LIKE. Забудьте вообще про этот LIKE, используйте его только когда по другому никак.
Для вырезания левых символов существует функция substr(X,Y). X - строка из которой вырезают, Y- количество символов.
Работает в разы быстрее LIKE. Забудьте вообще про этот LIKE, используйте его только когда по другому никак.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Правильная организация базы данных
Ничего вырезать не нужно. Проблема вообще не в этом.
У меня тоже есть вопрос по SQLite. Я не являюсь спецом по СУБД.
Есть база, записи с TEXT-овыми полями, их очень много. Нужно построить поиск записей с выборкой по первым буквам слов в полях определенного столбца. LIKE и MATCH работают не очень хорошо, у них нет таких возможностей как у RegExp (типа поиска по границам слов и пр.) поэтому в результаты попадает много лишнего, да и при больших размерах базы они работают медленно.
Есть идея добавить еще один столбец в который поместить что-то вроде "сигнатур" с начальными буквами слов, и поиск производить по нему, для этого написать скрипт, чтобы обработать базу, но у меня такое ощущение, что я изобретаю велосипед. Может есть какие встроенные средства SQLite , чтобы обойтись меньшей кровью? Конечно нужно, чтобы эти средства поддерживались в Android.