Это хорошо спроектированная реляционная база данных только с одной таблицей?

У меня есть база данных MySQL, содержащая только одну таблицу, имеющую 100 строк и 12 столбцов: ID (первичный ключ), NAME, LATITUDE, LONGITUDE, TYPE, COUNTRY, CONTINENT, DESCRIPTION_PATH, STORY_PATH, PICTURE_PATH, ICON_PATH и VIDEO_PATH. Как вы думаете, нормально ли хранить все данные в одной таблице или данные следует распределять по нескольким таблицам?


person MichalB    schedule 16.05.2013    source источник
comment
Я рекомендую прочитать о нормализации базы данных, чтобы избавиться от догадок при разработке схемы.   -  person Filburt    schedule 17.05.2013


Ответы (1)


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

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

Например:

CREATE TABLE Pictures (
  picture_id INT,
  name_id INT,
  picture_path VARCHAR(100),
  PRIMARY KEY (picture_id, name_id)
  FOREIGN KEY (name_id) REFERENCES Names (id)
);

И вы бы, конечно, удалили столбец picture_path из первой таблицы.

person Bill Karwin    schedule 16.05.2013
comment
PICTURE_PATH — это URL-ссылка на папку в моей файловой системе. Внутри этой папки для каждой строки определено 5 изображений, которые я извлекаю одно за другим из базы данных в приложении Java. Но я полагаю, это не то, что вы на самом деле имели в виду, не так ли? Для каждой отдельной строки у меня есть только значение каждого столбца. Так что думаю должно быть нормально... - person MichalB; 17.05.2013
comment
Да, если у вас есть только одно изображение path в строке, это нормально. - person Bill Karwin; 17.05.2013
comment
Один маленький вопрос - как мне назвать базу данных, содержащую всего одну таблицу? Могу ли я по-прежнему называть это реляционной базой данных? - person MichalB; 17.05.2013
comment
Конечно, это нормально. Реляционный не означает отношения между таблицами. Это означает, что таблица является отношением в математическом смысле. - person Bill Karwin; 17.05.2013