Мой вопрос заключается в том, как моделировать транзакции для разных типов продуктов.Вопрос схемы БД, типы продуктов
Так есть Транзакции таблица:
TransactionId(pk)
Amount
Method
AuthorisedBy(fk)
И существуют различные таблицы для различных видов продукции. Книги стол:
BookId(pk)
Name
Description
Price
И ручки стол:
PenId(pk)
Color
Description
Price
И таблица услуг заточка карандаша:
SharpenId(pk)
Description
Price
Теперь мой вопрос увязки сделок с отдельные идентификаторы разных элементов. Один метод должен был иметь в таблице транзакций:
TransactionId(pk)
Amount
Method
AuthorisedBy
ProductType
ProductTypeId(fk)
Где тип продукта будет ссылаться на название таблицы, например, книги и идентификатор продукта будет ссылаться на BookID в этом случае.
ИЛИ другой метод будет иметь связующую таблицу «продукты», которые относятся к каждому отдельному ид других таблиц, так что таблица транзакций будет выглядеть следующим образом:
TransactionId(pk)
Amount
Method
AuthorisedBy
ProductID(fk)
и таблица продуктов будет выглядят так:
ProductId(pk)
PoductType
ProductTypeId(fk)
Но тогда это таблица, которая точно такая же, как таблица транзакций. Поэтому мой вопрос заключается в том, как эффективно связывать разные таблицы типов продуктов с транзакциями? Обратите внимание, что я не моделирую службу заточки для карандашей в школе, это просто примеры: P
Но мои типы продуктов сильно отличаются друг от друга, и, например, в моей таблице «Заточка карандаша», поскольку это услуга, в этой таблице есть много разных записей, и как эти данные будут храниться в ваших продуктах таблицы, так как у них нет «цветов» или любых других столбцов, кроме цены, описания. – theraven
+1 Чтобы добавить определенные свойства, можно расширить таблицу продуктов соотношением 1: 1; например ProductTypes, упомянутых в этом ответе, или ProductColor для вашего комментария.Сама таблица продуктов может содержать все поля, необходимые для создания счета-фактуры, а код фактурирования может обойтись без сложности, необходимой для работы с различными типами продуктов. – Andomar
Я собираюсь дать этот ответ тик, так как он отвечает на вопрос, который я задал, но, к сожалению, мой вопрос необходимо реформировать и спросить позже. – theraven