Я запускаю Apache на Ubuntu, и моя проблема в том, что файл /etc/apache2/mods-available/php5.conf
отсутствовал:
<FilesMatch ".+\.ph(p[345]?|t|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>
Я добавил его обратно, а php правильно обрабатывал файлы php.
У вас есть по крайней мере эти пять вариантов моделирования иерархии типов, которую вы описываете:
Я написал об этом больше в презентации, Расширяемое моделирование данных .
Дополнительные мысли о EAV: Хотя многие люди предпочитают EAV, я этого не делаю. Это похоже на самое гибкое решение, и, следовательно, лучшее. Однако имейте в виду поговорку TANSTAAFL . Вот некоторые из недостатков EAV:
NOT NULL
). JOIN
для каждого атрибута. Степень гибкости EAV дает вам жертвы в других областях, возможно, делая ваш код сложным (или хуже), чем это было бы для решения исходной проблемы более обычным способом.
И в большинстве случаев, нет необходимости иметь такую степень гибкости. В вопросе OP о типах продуктов гораздо проще создать таблицу для каждого типа продукта для атрибутов, специфичных для продукта, поэтому у вас есть некоторая согласованная структура, принудительная, по крайней мере, для записей одного и того же типа продукта.
I ' d использовать EAV только в том случае, если каждой строке должно быть разрешено потенциально иметь отдельный набор атрибутов. Когда у вас есть конечный набор типов продуктов, EAV является излишним. Класс Наследование наследования был бы моим первым выбором.
@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.
для таблицы поиска.
blockquote>Все те вещи, которые вы упомянули здесь:
- проверка данных
- атрибуты имен проверка орфографии
- обязательные столбцы / поля
- обработка уничтожения зависимых атрибутов
по-моему
На мой взгляд, использование базы данных таким образом - это например, используя камень, чтобы забить гвоздь. Вы можете сделать это с помощью скалы, но не можете ли вы использовать молоток, который более точно и специально разработан для такого рода деятельности?
Получение результатов в обычном табличном макете является сложным и дорогой, потому что для получения атрибутов из нескольких строк вам нужно сделать JOIN для каждого атрибута.
blockquote>Эта проблема может быть решена путем создания нескольких запросов на частичные данные и обработки их в табличной компоновке с вашим приложением , Даже если у вас есть 600 ГБ данных о продукте, вы можете обрабатывать его партиями, если вам нужны данные из каждой отдельной строки в этой таблице.
Далее. Если вы хотите улучшить производительность запросов, вы можете выбрать определенные операции, например, например отчет или глобальный текстовый поиск и подготовить для них индексные таблицы, которые будут хранить требуемые данные и будут периодически обновляться, скажем каждые 30 минут.
Вам даже не нужно беспокоиться о стоимости дополнительных данных хранения, потому что каждый день он дешевле и дешевле.
Если вы все равно будете обеспокоены эксплуатацией операций, выполняемых приложением, вы всегда можете использовать Erlang, C ++, Go Language для предварительной обработки данных, а затем просто обработайте оптимизированные данные в главном приложении.
you can always use Erlang, C++, Go Language to pre-process the data
Что вы имели в виду? Вместо DB, используйте Go lang? Не могли бы вы рассказать об этом?
– Green
6 November 2016 в 09:15
У вас может быть таблица Product и отдельная таблица ProductAdditionInfo с тремя столбцами: идентификатор продукта, дополнительное информационное имя, дополнительная информация. Если цвет используется многими, но не всеми видами Продуктов, вы можете иметь его столбцом с нулевым значением в таблице Product или просто поместить его в ProductAdditionalInfo.
Этот подход не является традиционным методом для реляционной базы данных, но я видел, что он много использовал на практике. Он может быть гибким и иметь хорошую производительность.
Steve Yegge называет это шаблоном Properties и написал длинный пост об использовании его.
3 columns: product ID, additional info name, additional info value
, я понял эту концепцию. И я на самом деле сделал это раньше, и столкнулся с проблемами. Однако на данный момент я не помню, какими были эти проблемы.
– JD Isaacks
16 September 2010 в 19:55