Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Организовать хранение небольших файлов в поле  [new]
Игорь1973
Member

Откуда: Санкт-Петербург
Сообщений: 317
Здраствуйте.

Хочу организовать хранение небольших (до 1024 Кб) файлов в таблице БД в поле типа BINARY.
Помимо самого файла нужно также хранить и его имя.
Вопрос, как лучеше это сделать?
Сначала выделить определенное число байт под имя файла или в конце BINARY-массива добавить какой-нибудь символ-разделитель (типа "|") и уже после него записать имя файла.

Заранее благодарю.
5 дек 11, 15:33    [11707638]     Ответить | Цитировать Сообщить модератору
 Re: Организовать хранение небольших файлов в поле  [new]
Glory
Member

Откуда:
Сообщений: 104751
Сделать 2 поля - для имени и содержимого
5 дек 11, 15:37    [11707672]     Ответить | Цитировать Сообщить модератору
 Re: Организовать хранение небольших файлов в поле  [new]
Игорь1973
Member

Откуда: Санкт-Петербург
Сообщений: 317
Я думал так, но мне чем-то больше нравится идея хранения имени файла в том же поле.
А чем это плохо?
5 дек 11, 15:42    [11707727]     Ответить | Цитировать Сообщить модератору
 Re: Организовать хранение небольших файлов в поле  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31959
Игорь1973
А чем это плохо?
Тем же, чем хранить содержимое всех полей в одном поле. Труднообъяснимое желание с массой недостатков.
5 дек 11, 15:44    [11707752]     Ответить | Цитировать Сообщить модератору
 Re: Организовать хранение небольших файлов в поле  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
Игорь1973
Я думал так, но мне чем-то больше нравится идея хранения имени файла в том же поле.
А чем это плохо?

в 2008 уже появился тип filestream.

Плохо будет при манипуляциях с именами, в общем хрень придумали.. поле имя и поле данных, чего велосипед городить ?
5 дек 11, 15:45    [11707762]     Ответить | Цитировать Сообщить модератору
 Re: Организовать хранение небольших файлов в поле  [new]
Игорь1973
Member

Откуда: Санкт-Петербург
Сообщений: 317
Да, если бы планировались хоть какие-нибудь манипуляции с именами (поиск, фльтры...) я бы и сделал 2 поля.
Но они точно не планируются, вообще имя файла даже нигде не будет показываться - только в момент создания и открытия в файловой системе. Просто в таблице у меня потом может быть несколько таких полей-файлов, и к каждому отдельное поле... мне это кажется неудобным.
5 дек 11, 15:51    [11707831]     Ответить | Цитировать Сообщить модератору
 Re: Организовать хранение небольших файлов в поле  [new]
Glory
Member

Откуда:
Сообщений: 104751
Игорь1973
Но они точно не планируются, вообще имя файла даже нигде не будет показываться - только в момент создания и открытия в файловой системе.

И с каким именен вы будете создавать этот файл то ?
Удобнее и быстрее искать это имя в бинарном поле по каким то признакам, чем взять сразу и целиком из своего поля ?
5 дек 11, 15:54    [11707846]     Ответить | Цитировать Сообщить модератору
 Re: Организовать хранение небольших файлов в поле  [new]
Игорь1973
Member

Откуда: Санкт-Петербург
Сообщений: 317
Да, с точки зрения быстроты и удобства для программирования - это так.
Но для меня сейчас более важный критерий - не захламлять таблицу лишними, служебными (в данном случае) полями.
Сразу массового создания файлов у меня не будет, только по нажатию спец. кнопки будет создаваться и открываться файл.
Так что мне, в принципе, все равно, откуда прочитать имя фала.
5 дек 11, 16:03    [11707929]     Ответить | Цитировать Сообщить модератору
 Re: Организовать хранение небольших файлов в поле  [new]
invm
Member

Откуда: Москва
Сообщений: 9827
Игорь1973
Да, если бы планировались хоть какие-нибудь манипуляции с именами (поиск, фльтры...) я бы и сделал 2 поля.
Но они точно не планируются, вообще имя файла даже нигде не будет показываться - только в момент создания и открытия в файловой системе. Просто в таблице у меня потом может быть несколько таких полей-файлов, и к каждому отдельное поле... мне это кажется неудобным.
Почитайте что-нибудь про нормализацию и нормальные формы. Ваша задача решается с помощью дополнительной таблицы:
create table dbo.MasterTable
(
 id int not null,
 ...
 constraint PK_MasterTable primary key (id)
);
go

create table dbo.Files
(
 id int not null,
 file_id int not null,
 file_Name varchar(255) not null,
 file_Body varbinary(1024) not null,
 constraint PK_Files primary key (id, file_id),
 constraint FK_Files_MasterTable foreign key (id) references dbo.MasterTable (id)
);
5 дек 11, 16:05    [11707955]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить