2009-09-22 3 views
1

Каков наилучший способ хранения длинных текстов (статей) в базе данных? он не должен быть доступен для поиска.Сохранение длинного текста

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

EDIT: доступ к базе данных

+3

какая база данных? –

+0

база данных доступа –

ответ

0

Использовать CLOB.

+0

Это CLOB вещь система или что-то еще? Могу ли вы показать мне пример PLZ. –

+0

CLOB = Характер Большой объект –

+0

Да, я красный, что в wikipedia .. но wt это означает, что это бесполезно? это PDF-файл CLOB? –

3

Если SQL Server 2005 USE VARCHAR (MAX)

EDIT,

Это кажется, он Саиф доступ,

так я бы с памяткой

до 63 , 999 символов. (Если поле Memo манипулируют через DAO и только текст и цифра [не двоичные данные] будут сохранены в нем, то размера поля Memo ограничен размера базы данных.)

или OLE Object (если вы можете)

объект (например, Microsoft Excel электронных таблиц в Microsoft Word документа, графика, звуки или другие двоичные данные) связаны (ссылка OLE/DDE : A связь между объектом OLE и его OLE-сервер, или между динамической обмена данными (DDE) исходный документ и документ назначения) или встроенный (код вставки:. Для того, чтобы вставить копию объекта OLE из другого заявление. Источником объекта, , называемым OLE-сервером, может быть любое приложение , которое поддерживает привязку и встраивание объекта . Изменения в встроенном объекте не отражены в исходном объекте.) В таблице доступа Microsoft .

до 1 гигабайт (ограниченного свободного пространства на диске)

+3

Почему varchar вместо текста/blob? Не используется ли varchar для обычно коротких строк? –

+2

VARCHAR (MAX) отменяет использование устаревшего типа данных TEXT в SQL Server 2005 и далее. –

+0

@mjv -see http://msdn.microsoft.com/en-us/library/ms187993.aspx –

1

Я не знаю, какую базу данных вы используете, но если текст не требуется для поиска, вы можете просто сохранить текст в формате HTML (например, значение, исходящее от FCKEditor или таких компонентов) , Если вам нужна также возможность поиска, вы можете сохранить оба HTML в виде обычного текста в двух разделенных полях.

Поля могут быть nvarchar (MAX), если вы используете MS SQL Server 2008 или любой эквивалентный тип данных в других базах данных.

EDIT: Кажется, вы используете Access, поэтому идите на тип данных Memo! Если вы решили сохранить HTML-код, подумайте о сохранении только общей разметки (div, p), чтобы разделить текст, а затем применить форматирование CSS, обернув сохраненный текст в другом div, определяющем классы форматирования для дочерних элементов.

-1

Поместите его в поле TEXT и поместите его в <p>, чтобы вы могли стилизовать абзацы.

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

0

Для SQL Server

TEXT/NTEXT для SQL Server 2000

VARCHAR(MAX)/NVARCHAR(MAX) для SQL Server 2005 года

1

у вас есть несколько вариантов:

  • сохранить как длинная одиночная строка без форматирования, которая будет выглядеть мягко на экране.

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

  • нормализовать его, чтобы у вас были таблицы для хранения книг, глав, абзацев и т. Д., После чего вы могли форматировать и стилизовать текст при его загрузке в приложение.

0

Я бы предложил сохранить первую главу в формате pdf. Это безопасно и позволяет хорошо форматировать. Затем используйте blob, clob, varchar или текстовое поле в зависимости от вашего продукта (см. Другие ответы).

Или вы можете использовать образы и изучать что-то вроде «заглянуть внутрь». Он будет работать с теми же методами db.

В качестве альтернативы вы можете использовать что-то вроде разметки.

Мне лично не нравится размещать html в моей базе данных. Даже если это только для вывода. Слишком легко вставить некоторые javascript. Но, может быть, я слишком осторожен.

+1

Я ненавижу использование PDF в Интернете .. требуется много времени, чтобы загрузить простой текст .. и обычно вы застреваете с загрузкой, замораживающей все вокруг браузера. –

+0

Это медленный процесс, потому что вы загружаете его через Интернет. Локальный доступ не должен быть проблемой вообще. -1 на ваш комментарий, если я могу проголосовать за комментарии. –

1

Главное отличие между длинным текстом (CLOB/TEXT/VARCHAR(MAX)) и длинными данными (BLOB/IMAGE/VARBINARY(MAX)) состоит в том, что первое подвергается преобразованиям символов, а первое - нет.

Если вам нужно сделать преобразование набора символов на стороне базы данных, используйте CLOB и тому подобное.

Если вы всегда хотите получить свои данные, когда вы его использовали, байт-байт (в отличие от символа-символа), используйте BLOB и тому подобное.

+0

Ваш ответ не полностью зависит от конкретного доступа. Можете ли вы это уточнить? –

+0

Это было дано до того, как автор упомянул Access. Извините, я не эксперт по доступу. – Quassnoi

1

Я не хотел хранить какие-либо документы в базе данных, но хранить данные в файлах в файловой системе, и единственное, что есть в базе данных, было бы указателем на файлы данных.

Вы не задаете никаких вопросов в своем вопросе, которые бы предполагали любую потребность в хранении документов в самой базе данных.

И очень мало обстоятельств, когда это выгодно.

+0

@David W. Fenton: «Я не буду хранить какие-либо документы в базе данных, но хранить данные в файлах в файловой системе» - что случилось с типом данных вложений? – onedaywhen

+0

Я не вижу тег 2007 по этому вопросу, поэтому тип данных вложений не был бы вариантом.Я действительно не знаю, как это работает, и я также опасаюсь новых типов данных в первом выпуске основной версии движка Jet db. Я просто помню все проблемы с байтовыми и десятичными полями при введении Jet 4 и не хочу комментировать что-то, что может работать некорректно. –

+0

access-2007 - это подмножество ms-доступа. – onedaywhen

0

Применимо к Jet 4.0, являясь версией Access Database Engine в эпоху Access2000 до Access2003 включительно:

Я не хотел хранить какие-либо документы в базе данных, но хранить данные в файлах в файловой системе и только вещь, которая находится в базе данных, будет указателем на файлы данных.

Вы не задаете никаких вопросов в своем вопросе, которые бы предполагали любую потребность в хранении документов в самой базе данных.

И очень мало обстоятельств, когда это выгодно.

Если вы используете ACE, являющийся версией Access Database Engine в эпоху Access2007, тип данных вложений будет вариантом, однако я действительно не знаю, как это работает, я никогда не использовал его так Я не могу рекомендовать его и не сказать, для этого лучше или хуже. Я также опасаюсь новых типов данных в первом выпуске основной версии механизма Database Access. Я просто помню все проблемы с байтовыми и десятичными полями при введении Jet 4 и не хочу комментировать что-то, что может работать некорректно. Тип Присоединения в формате ACCDB был введен для совместимости с Sharepoint, и что внешняя зависимость - это то, что дает мне паузу. Будет ли тип данных ACCEDB когда-нибудь изменяться, если Sharepoint изменит способ его работы? Я не уверен, что хочу рискнуть.

+0

Могли бы вы, по крайней мере, удалить личные местоимения из текста, который вы скопировали из моего ответа? Как бы то ни было, вы утверждаете что-то как свою политику, которой нет. Фактически, в этом посте почти ничего нет, что вы не отменили мой ответ или мои комментарии. Тем не менее, вы представляете его так, как будто это ваши мысли. Вы - настоящая работа. –

+0

ИМО, идеальный член сообщества, напишет ответы в третьем лице, стиле вики, чтобы облегчить редактирование другими пользователями. Есть ли шанс сделать эту личную «политику»? Если вы отредактируете свой ответ соответствующим образом, я повторно сделаю операцию copy + paste. Кроме того, отредактируйте мой ответ; Я вряд ли откажусь от любого редактирования, где кто-то удалил личные местоимения и тому подобное. – onedaywhen

+0

Ну, если бы я редактировал вашу версию своего сообщения, я бы удалил первый абзац, так как это НЕПРАВИЛЬНО, а затем указать, что все остальное было цитатой другой должности с добавлением выбранных комментариев. Это то, что вы хотите? Если это так, я отредактирую его, но у меня есть ощущение, что вы не будете довольны этим - вы, похоже, настаиваете на том, что в него включен неправильный первый параграф. Это ваш пост - вы это исправите. Я уже опубликовал ответ вместе с объемными комментариями, которые ясно дают понять, какова моя позиция по этой проблеме. И я верю, что мой ответ правильный, поскольку он стоит. –