Объедините три таблицы в одну при просмотре - PullRequest
0 голосов
/ 29 сентября 2011

У меня есть три таблицы, как показано на этом изображении, и я хочу представить их, как видно из последней таблицы. Я не могу понять, как решить эту проблему - сейчас я использую три встроенных вызова, чтобы отобразить это.

Сначала я перебираю Customer, чтобы отобразить их все. Внутри этого цикла у меня есть цикл, который проходит через OrderCustom, и внутри него я проверяю, есть ли CustomerOrderCustom с правами Customer_id и OrderCustom_id.

Я не только использую много запросов, но и представление показывает OrderCustom элементов, которые сейчас используются Customer, в данном случае почтовый индекс. Я использую MySQL 5.

схема http://i52.tinypic.com/2cyi17b.png

1 Ответ

2 голосов
/ 29 сентября 2011

Это проект базы данных атрибут-значение-сущность. Это не реляционный дизайн, и вы не сможете манипулировать им с помощью реляционных операций (таких как JOIN), за исключением самых тривиальных примеров.

Если вы полны решимости сохранить эти нереляционные данные в реляционной базе данных, вы будете зависеть от вашего собственного кода или некоторой библиотеки сериализации и десериализации объектов на основе EAV для любого языка программирования, который вы используете. SQL будет бесполезен для вас.

Если вам действительно необходимо использовать подобную модель для этого проекта (то есть вы не можете использовать реляционную модель), то, если еще не слишком поздно в процессе разработки, я бы предложил отказаться от SQL и прочитать о XML, XPath и XSLT, которые, вероятно, лучше подходят для хранения и восстановления данных, в которых каждая запись может иметь различную структуру.

Бонусная статья: "Почему Entity-Attribute-Value плоха"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...