Я знаю, что вы делаете это для класса / практики, так что это может быть неактуально, но учтите, что наличие истории проката вещей часто очень полезно. Из-за этого вы можете не захотеть удалять арендованные записи, а просто пометить элемент как возвращенный.
Рассмотрим:
TABLE RentalTransaction:
RentalTransactionID integer PK NOT NULL
CustomerID integer FK NOT NULL
RentedOn datetime NOT NULL
DueDate datetime NOT NULL
<..any other fields you may need..>
TABLE RentalItems:
RentedID integer PK NOT NULL
RentalTransactionID integer FK NOT NULL
RentedItemID integer FK NOT NULL
RentedQty integer NOT NULL
RentalRetuned datetime NULL
Вы можете увидеть, отсутствует ли какой-либо отдельный элемент, если его поле RentalReturned
имеет значение null
или нет. Если он ненулевой, то вы знаете, что товар вернулся, и теперь вы можете агрегировать данные аренды, чтобы увидеть, как часто он выходит, какова средняя продолжительность аренды и т. Д. конечно, вы не арендовали больше копий предмета, чем на самом деле, и другие подобные вещи, но я думаю, что в целом это более гибкое начало схемы. Это может быть слишком сложно для того, что вы делаете, но я хотел, по крайней мере, выдвинуть эту идею.