2009-10-14 2 views
0

Мой вопрос заключается в том, как моделировать транзакции для разных типов продуктов.Вопрос схемы БД, типы продуктов

Так есть Транзакции таблица:

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

ответ

2

Прежде всего мне не нравится модель БД. Для определения продукта может использоваться только одна таблица: (таблица) Продукты: ID - ПК, название, описание, цвет, цена, тип продуктаID - FK

Вам нужна дополнительная таблица, объясняющая тип продукта, это категория Пусть говорят: (таблица) ProductTypes: ProductTypeID - PK, ProductTypeName

А для регистрации сделок вам потребуется только одна таблица: (таблица) сделки: TransactionID, ProductID - FK, сумма, Method , AuthorizedBy

Я думаю, что эта схема будет в порядке, чтобы решить вашу проблему. Счастливое кодирование.

+0

Но мои типы продуктов сильно отличаются друг от друга, и, например, в моей таблице «Заточка карандаша», поскольку это услуга, в этой таблице есть много разных записей, и как эти данные будут храниться в ваших продуктах таблицы, так как у них нет «цветов» или любых других столбцов, кроме цены, описания. – theraven

+0

+1 Чтобы добавить определенные свойства, можно расширить таблицу продуктов соотношением 1: 1; например ProductTypes, упомянутых в этом ответе, или ProductColor для вашего комментария.Сама таблица продуктов может содержать все поля, необходимые для создания счета-фактуры, а код фактурирования может обойтись без сложности, необходимой для работы с различными типами продуктов. – Andomar

+0

Я собираюсь дать этот ответ тик, так как он отвечает на вопрос, который я задал, но, к сожалению, мой вопрос необходимо реформировать и спросить позже. – theraven

Смежные вопросы