@StoneHeart
Я бы здесь с EAV и MVC весь путь.
@Bill Karvin
Вот некоторые из недостатков EAV:
No way to make a column mandatory (equivalent of NOT NULL).
No way to use SQL data types to validate entries.
No way to ensure that attribute names are spelled consistently.
No way to put a foreign key on the values of any given attribute, e.g.
для таблицы поиска.
Все те вещи, которые вы упомянули здесь:
- проверки данных
- имена атрибутов орфографическую проверку
- обязательные столбцы/поля
- обработки уничтожение зависимых атрибутов
, на мой взгляд, не принадлежат к базы данных вообще, потому что ни одна из баз данных не может обрабатывать эти взаимодействия и требования на надлежащем уровне, как это делает язык программирования приложения.
По-моему, использование базы данных таким способом - это использовать камень, чтобы забить гвоздь. Вы можете сделать это с помощью скалы, но разве вы не должны использовать молоток, который более точно и конкретно предназначен для такого рода деятельности?
Fetching результаты в обычной компоновке табличной является сложным и дорогостоящим , так, чтобы получить атрибуты следующим из нескольких строк, что вам нужно сделать JOIN для каждого атрибута.
Эта проблема может быть решена путем создания нескольких запросов на частичные данные и обработки их в виде таблиц с вашим приложением. Даже если у вас есть 600 ГБ данных о продукте, вы можете обрабатывать его партиями, если вам нужны данные из каждой строки в этой таблице.
Идти дальше Если вы хотите улучшить производительность запросов, вы можете выбрать определенные операции, например, например. отчетности или глобального поиска текста и подготовить для них индексные таблицы, которые будут хранить требуемые данные и будут периодически обновляться, скажем каждые 30 минут.
Вам даже не нужно беспокоиться о стоимости дополнительного хранения данных, поскольку он дешевле и дешевле с каждым днем.
Если вы по-прежнему относитесь к выполнению операций, выполняемых приложением, вы всегда можете использовать Erlang, C++, Go Language для предварительной обработки данных, а затем просто обрабатывать оптимизированные данные в главном приложении.
Я искал это с давних времен ... вариант 4,5 кажется хорошим ... –
@ HimalayaGarg Вариант «4.5» действительно является противоположностью всей цели сообщения Билла. – user3308043
В отличие от MySQL, SQL Server имеет обширную поддержку XML, XPath и XQuery. Поэтому для пользователей SQL Server лучшим вариантом будет хранение дополнительных атрибутов в столбце типа XML (вариант 4). Таким образом, вам НЕ нужно «возвращать весь кадр обратно в приложение и сортировать его там». Вы даже можете создавать индексы в столбцах XML в SQL Server. –