2010-06-03 4 views
0

У меня ограниченный фон SQL, в основном небольшое количество манипуляций с помощью HTML и в основном с уже существующими базами данных. То, что я пытаюсь сделать, - это создать базу данных, которая будет хранить информацию о времени для маршрутов автобусов. Поэтому в основном у меня разные маршруты с остановками для каждого маршрута, а затем список раз, когда автобус прибывает на каждую остановку. Ниже приведен пример таблицы раз с их сайта: Link.Начало работы с SQLite (Android)

Мне интересно, какой был бы лучший способ компоновки моей базы данных/таблиц?

Также в чем цель поля _id в каждой таблице?

Thanks, Rob!

P.S. Извините, если моя нехватка знаний по этому вопросу заставила меня опубликовать дублирующий вопрос.

+0

_id - это уникальный идентификационный номер для входа, который не является существенным в некоторых вещах, но есть в других, поэтому он всегда должен быть включен. Это также помогает отслеживать записи, поскольку другие поля могут быть дублированы, но не идентификационный номер – HXCaine

ответ

1

Вы задали два вопроса:

  1. поле 'идентификатор' является хорошим соглашением как уникальная идентификация строки. Это не является строго обязательным, и некоторые данные, которые имеют свой собственный уникальный серийный номер для каждой строки, будут использовать этот серийный номер. Программы часто хотят просмотреть всю запись уникальной идентификацией строки, поэтому поле должно быть первичным ключом. Обычно используемым предложением для создания идентификатора является «id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (id)». Уникальный идентификатор будет присваиваться автоматически при добавлении новой записи. См. Tizag's MySQL Tutorial для подробного разбиения. Лично некоторые называют эти «_id», например, «route_id», «bus_id», и ваш стиль может отличаться.

  2. Укладка ваших данных зависит от того, что вы хотите с этим сделать. Я предполагаю, что для каждого маршрута автобуса вы хотите найти следующий автобус на определенной остановке через некоторое время, а затем, когда этот автобус прибывает на следующую остановку. У каждого маршрута много остановок; остановка может быть разделена между маршрутами; маршрут меняется в течение дня, пропуская несколько остановок; маршруты идут в двух направлениях; и т. д. Я бы добавил абстракцию «пробега», который одна шина пробегала через остановки от начала до конца.

Моя первая догадка при прокладке его будет:

Маршрут автобуса имеет название автобуса, номер и другую информацию: «# 1 Красный», «Юг и Запад», «SF Муни ", "карта://..."

Упора имеет уникальное имя и другую информацию:„“.„Северный Гранд Молл Юг“,„Под вишней, к западу от Гранд Авеню“

Перспективы имеет номер маршрута, дни. неделя, направление, возможно, порядковый номер пробега в этом направлении в этот день, возможно, время запуска/остановки для запуска: «63 (route_id для # 1 Red)», «обратное направление», «MTWRF» (дни недели) , «2» (2-й прогон), «7:00», «7:36».

Затем у вас есть таблица расписания «Run_id», «Stop_id», «Stop Sequence Number», «Time».

Выпишите запланированную схему, а затем попробуйте t опишите схемы против них. Не удивляйтесь, что пара множественных соединений «SELECT *» из «Списка как S», «Запуск от имени R», «B» как B для B ... WHERE B.id == R.bus_id и S.run_id == R.id и B .id = (запрошенная шина) и S.time> = now() и .... «Вы денормализуете производительность после ее работы.

Это все мой бесплатный совет. :)

2

Поле id предоставляет уникальный идентификатор каждой строке, на которую могут ссылаться другие таблицы в базе данных. Когда он ссылается на этот путь, он называется внешним ключом. Это позволяет вам иметь одну таблицу с подробной информацией о студенте (имя, адрес и т. Д.), А затем однозначно ссылаться на этого учащегося в другой таблице, где рассказывается о членах класса.

Существует, как правило, много разных способов создания базы данных, которая лучше всего зависит от того, что вы хотите делать с данными. Большая часть этого дизайна не уникальна для SqlLite, поэтому чтение в реляционных базах данных в целом может оказаться полезным.

Один из способов положить его ваш конкретный пример:

Маршрут таблицы: идентификатор, имя

Stop стол: номер, имя

Время таблицы: идентификатор, внешний ключ к маршруту, внешний ключ чтобы остановить

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