@StoneHeart
Я б поїхав сюди з EAV та MVC всю дорогу.
@Bill Karvin
Ось деякі недоліки EAV:
- Ні в якому разі не можна зробити стовпчик обов'язковим (еквівалент НЕ NULL).
- Немає можливості використовувати типи даних SQL для перевірки записів.
- Жоден спосіб забезпечити послідовність написання імен атрибутів.
- Ні в якому разі не можна ставити іноземний ключ на значення будь-якого заданого атрибуту, наприклад, для таблиці пошуку.
Усі ті речі, про які ви згадали тут:
- перевірка даних
- атрибут імен перевірки правопису
- обов'язкові стовпці / поля
- обробка знищення залежних атрибутів
на мою думку, взагалі не належать до бази даних, оскільки жодна з баз даних не може обробляти ці взаємодії та вимоги на належному рівні, як це робить мова програмування програми.
На мою думку, використовувати базу даних таким чином, це як використовувати скелю, щоб забити цвях. Ви можете це зробити зі скелею, але чи не вважаєте ви використовувати молоток, який є більш точним і спеціально розробленим для такого роду діяльності?
Отримання результатів у звичайному табличному макеті є складним і дорогим, тому що для отримання атрибутів з декількох рядків вам потрібно зробити JOIN для кожного атрибута.
Цю проблему можна вирішити, зробивши кілька запитів щодо часткових даних та обробивши їх у табличному макеті за допомогою програми. Навіть якщо у вас є 600 ГБ даних про продукт, ви можете обробляти їх партіями, якщо вам потрібні дані з кожного ряду цієї таблиці.
Продовження Якщо ви хочете покращити ефективність запитів, ви можете вибрати певні операції, наприклад, наприклад, звітування або глобальний пошук тексту та підготувати для них таблиці покажчиків, які зберігатимуть потрібні дані та періодично регенеруватимуться, скажімо, кожні 30 хвилин.
Вам навіть не потрібно турбуватися про витрати на додаткове зберігання даних, оскільки воно з кожним днем стає дешевше і дешевше.
Якщо ви все ще переймаєтесь виконанням операцій, які виконуються додатком, ви завжди можете використовувати Erlang, C ++, Go Language для попередньої обробки даних, а згодом просто обробляти оптимізовані дані далі у вашому головному додатку.