Какие таблицы должны быть созданы для хранения всех видов файлов для онлайн-приложений? - PullRequest
0 голосов
/ 31 мая 2010

Я новичок в проектировании баз данных.

У меня вопрос к моему собственному решению, как вы думаете?

Какие таблицы должны быть созданы для всех видов файлов, хранящихся в моем интернет-магазине (изображения, прикрепленные файлы электронной почты, текстовые файлы для тела электронной почты магазина и т. Д.)?

вариант 1: использовать отдельную таблицу для типов файлов

files{
id
files_types_id FK
file_path
file_extension
}

files_types
id
type_name (unique)
}

вариант 2: использовать поле bool для каждого типа файла

files{
id
file_path
file_extension
is_image_main
is_image_icon
is_image_logo
is_pdf_file
is_text_file
}

вариант 3: использовать одно поле ENUM 'file_type' для каждого типа файла

files{
id
file_path
file_extension
file_type (image_main,image_icon,image_logo,image_main,pdf,text) **enum**
}

Спасибо, Йосеф

1 Ответ

2 голосов
/ 31 мая 2010

Я бы выбрал вариант 1 - это «классическая» полностью нормализованная форма.

Я считаю вариант 3 «нормализацией бедняка» - столбец все еще ограничен ограниченным набором типов, но вы не предоставляете список возможных типов пользователям базы данных. (В SQL Server это может быть сделано с ограничением CHECK.) В зависимости от вашего проекта и (отсутствия) актуальности данных это может стоить сделать, но информация о «типе файла» полезна и важна, и я бы не стал хочу это скрыть.

В завершение я добавлю вариант 4: создайте одну таблицу для каждого типа файла:

files_text{ 
id 
file_path 
file_extension 
} 

files_pdf{ 
id 
file_path 
file_extension 
} 

files_image_main{ 
id 
file_path 
file_extension 
} 

etc.

Эта структура тоже может иметь свое место, но, как правило, это ужасный дизайн, и вам не стоит перечислять ее. (Хм, что это делает меня?)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...