Справка по разработке схемы базы данных - Mysql - PullRequest
0 голосов
/ 15 сентября 2010

Хорошо, нужна помощь,

У меня есть система, которую я создаю, которая позволит пользователям приобретать кредиты на сайте и зарабатывать их, а с помощью этих кредитов можно заказать продукты и получить доступ к функциям, которые могут быть выставлены на продажу.Моя проблема заключается в создании таблиц заказов и транзакций.У меня есть 2 отдельные таблицы заказов: одна для кредитов сайта (sitecredit_orders), другая для заказов продуктов (product_orders), а затем таблица транзакций 1, на которой я хочу иметь возможность связать заказ с моей дилеммой: я не могу просто сделать одно поледля orders_id, потому что они могут перекрываться в 2 разных таблицах.И не может объединить таблицу 2 заказов, потому что они содержат 2 разных типа информации.Как мне создать и связать таблицу транзакций с этими таблицами заказов?Спасибо.

1 Ответ

2 голосов
/ 15 сентября 2010

Просто чтобы расширить мой комментарий:

Таблица заказов с OrderId и OrderType («Продукт» или «Кредит сайта»; это называется дискриминатором подтипа).

Таблица Sitecredit_Ordersс OrderId (внешний ключ для Orders.OrderId) и всеми другими полями, необходимыми для кредитов сайта.

Таблица Product_Orders с OrderId (внешний ключ для Orders.OrderId) и всеми другими полями, необходимыми для продуктов.

Таблица транзакций с OrderId (внешний ключ для Orders.OrderId).

Когда вы добавляете новый кредит сайта или заказ товара, вам нужно будет вставить две таблицы вместо одной.Вставьте новую запись в Orders, получите OrderId (при условии, что он автоматически сгенерирован), а затем вставьте запись в одну из таблиц подтипов, используя тот же OrderId.

...