Создание пользовательской системы CRM Я столкнулся с стеной, выясняя правильный способ компоновки MySQL. Система должна быть динамичной, т.е. расширяемый для нескольких новых продуктов с течением времени. Каждый продукт должен иметь индивидуальный биллинг, и каждый контакт должен иметь несколько продуктов.Правильный макет базы данных MySQL
Должен ли я использовать таблицы, как это:
Contacts{ ID }
Product_1{ ID; FK_ID; +Custom columns}
Product_2{ ID; FK_ID; +Custom columns}
Product_3{ ID; FK_ID; +Custom columns}
+ 15 more products (Expanding)
Или я должен использовать что-то вроде этого:
Contacts{ ID }
Products{ ID; FK_ID; +100 other columns (expanding)}
Первый пример будет легко настроить, но будет содержать много таблиц более время. Также для связывания контактов с продуктами потребуется другая таблица.
Последний пример будет проще настраивать в PHP, но будет беспорядок, смотрящий на таблицу.
Любые другие идеи? Что из них быстрее? Что является наиболее «общим»?
У меня такое ощущение, что ни одно из этих решений не оптимально, должен быть лучший способ?
Зачем вам нужны разные столбцы для каждого продукта? Ни один из предложенных вами вариантов не выглядит хорошо. Вы должны попытаться сделать вещи более универсальными, обнаружив сходство между всеми различными продуктами.Вы, возможно, все же получите несколько разных таблиц и столбцов (например, для разных типов продуктов), но это все равно будет улучшением. – acfrancis
Продукты имеют очень мало общего, так что это действительно невозможно. – Jeppe