2013-06-13 3 views
2

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

Например, первый список (страны) имеет (Великобритания, США, Китай, Япония и другие страны)

Вы нажимаете на США, вы получите еще один список (состояний) есть (Калифорния, Нью-Йорк, штат Аризона , ...)

вы нажимаете на Калифорнии, вы получите свои данные (население, площадь, капитал)

то же самое произойдет, если вы нажмете Великобритания затем Лондон ...

Итак, как следует Я организую свои данные, должен ли я сделать:

  1. одна таблица для стран и другая таблица для каждой страны,

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

  3. любое другое предложение?

+0

Я бы предложил вариант 2., запрос в одну таблицу должен быть более эффективным в этом случае – IAM

+0

Определенно 3 таблицы, страна, состояние, детали. – SOfanatic

ответ

1

Вы должны сделать 3 таблицу 1 для стран, а другую для штатов и другую для деталей.

Причина:

  1. К этому не будет избыточных данных и следует правилам нормализации.
  2. вы получите единственные данные, которые вы хотите не за исключением этого.

Вы можете использовать форму submit или ajax для получения данных из таблиц.

EDITED:

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

+0

какие избыточные данные? пример? может быть только население и область – IAM

+0

@IAM Я отредактировал это сообщение. надеюсь, что это очистит все. –

+0

была моей глупой ошибкой, извините – IAM

1

попробовать что-то вроде следующего .. и идти оттуда ..

 
create table countries (
    id int(11) not null auto_increment, 
    name varchar(255) not null, 
    primary key (id) 
);

create table states ( id int(11) not null auto_increment, name varchar(255) not null, country_id int(11) not null, primary key (id) constraint foreign key (country_id) references countries(id) on delete cascade );

create table properties ( name varchar(255) not null, primary key (name) );

create table state_properties ( id int(11) not null auto_increment, property varchar(255) not null, state_id int(11) not null, primary key(id), constraint foreign key (property) references properties(property) on delete cascade, constraint foreign key (state_id) references states(id) on delete cascade );

отредактирован: опечатка

+0

Спасибо Илану, я просто хочу понять, почему вы положили таблицу свойств? для чего это? – CSawy

+0

Это мои личные предпочтения. Лучше нормализовать свойства и ограничить внешние ключи, а затем полагаться на строки. Вы можете дополнительно использовать тип перечисления, поддерживаемый некоторыми поставщиками db. Я продолжаю переключать db, чтобы я забыл, какие из них поддерживают перечисление. –

0

Предполагая, что информация хранится в виде JSON или XML сгустков, вы должны иметь две таблицы , Не один или три. Строй с нуля.

CREATE TABLE locale (locID int PRIMARY KEY, data BLOB) 

CREATE TABLE localGrouping (
    groupID int PRIMARY KEY, 
    groupName varchar(255), 
    parentGroup int NULL, 
    locID int NULL 
) 

Вы упомянули, что хотите иметь список стран, а затем развернуться в городах или штатах.Это все находка и денди, но что произойдет, если вы хотите включить статистику на уровне штата над городом? Или на уровне города над окрестностями?

Правильная нормализация базы данных, как и при любом правильном программировании, следует правилу «Нулевой бесконечности». Особенно это касается иерархических наборов данных.

(Конечно, не стесняйтесь добавлять однако многие таблицы apporopriate из LOCALE на вниз. Но если вы не собираетесь работать сравнительные показатели по свойствам Локаль, в сериализованная объект данных должен быть в порядке.)

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

  • Нет связанных вопросов^_^