0

Im проектирование системы управления автосалона, и у меня есть следующие объекты:Лучший способ для реализации взаимосвязанных кортеже Sin базы данных, такие, как часть Обмен авто

Автомобили, продажа, покупка, Продавец, Покупатель, расходы. Отношения между ними прямолинейны; автомобиль может иметь много расходов, кроме одной продажи и одной покупки. В продаже может быть один покупатель, а покупка может иметь одного продавца.

Неполадка заключается в том, чтобы использовать транспортные средства для замены деталей. Это, в основном, транспортные средства, которые связаны друг с другом и находятся в одной таблице: когда автомобиль продается, он может иметь либо цену наличных денег, либо цену на карточку, либо цену за единицу товара, которая является в основном ценностью/деньгами получил в качестве оплаты. Это означает, что автомобиль может быть оплачен за использование другого автомобиля в одном столе. Но я не хочу создавать поле цены обмена для каждого автомобиля, так как такие случаи встречаются редко.

Каков наилучший способ установления таких соединений в одной таблице, чтобы я мог запрашивать такие вещи, как «Что все автомобили, которые были проданы на бирже обмена и какие автомобили я получил взамен на них»

Позвольте мне знать, если мне нужно что-то уточнить :)

ответ

0

Используйте junction table, относящиеся Автомобили к себе, зови стол что-то вроде CarPartExchange с колоннами:

  • SoldCarId - ссылка на автомобиль, который был продан,
  • ExchangedCarId - ссылка на замененный автомобиль и
  • PartExchangePrice - цена, используемая для обмена.

Что все автомобили, которые были проданы на часть обменной основе

select SoldCarId from CarPartExchange; 

и какие машины я получил в обмен на им

select SoldCarId, ExchangedCarId from CarPartExchange 
inner join Car SoldCar on SoldCar.Id = CarPartExchange.SoldCarId 
inner join Car ExchangedCar on ExchangedCar.Id = CarPartExchange.ExchangedCarId 
where PartExchangePrice > 100; 

Соединения были бы необходимы в приведенном выше примере i f вы хотите включить информацию из таблицы автомобилей в свои результаты. Я использую произвольный пример для поиска всех обменов с ценой более 100.

+0

Как настроить отношения? Или я могу просто оставить их? –

+0

Отношения устанавливаются записями в таблице CarPartExchange. См. Мое редактирование. – gknicker

+0

Jinx, я просто добавил это к моему столу. Что касается отношений, то ive сделал «Один для многих», то есть один RegistrationNo в таблице основных автомобилей для многих SoldCarId в таблице соединений. Это прекрасно? –

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

  • Нет связанных вопросов^_^