Базы данных

Ведение архива операций проката


Связь классов сущностей Customer, Rental и Videotape показана на 2.5. Как отмечалось ранее, сущности класса Rental отражают текущее состояние проката видеокассет. При возврате клиентом видеокассеты соответствующая сущность класса Rental удаляется из базы данных. По понятным причинам, большинство предприятий испытывают потребность в хранении архивной информации. Например, компания BigHit Video хочет иметь возможность определять, какие видеофильмы выдавались напрокат и фильмы какого жанра предпочитает брать напрокат определенный клиент. Класс Rental не может предоставить необходимую для подобных аналитических исследований информацию.

Поэтому для хранения архива проката был добавлен класс PreviouslyRental. Различие между классами Rental и PreviouslyRental состоит в ограничениях кардинальности связи с классом Videotape. Класс Rental имеет связь типа “один к одному” с классом Videotape, в то время как класс PreviouslyRental имеет связь типа “многие к одному”. Эта связь позволяет хранить информацию о многих операциях проката одной видеокассеты. Также хотелось бы предоставить сущности класса PreviouslyRental возможность не быть связанной ни с одним из клиентов. Поэтому на диаграмме данный класс соединен с ромбом связи с классом Customer одинарной линией. При таком определении кардинальности можно удалить неактивных клиентов и записи об их прошлых операциях проката, сохранив возможность анализировать популярность отдельного видеофильма.

Класс PreviouslyRental является слабым классом сущностей с единственной определяющей связью. Однако сущность данного класса не определяется уникальным образом связью с некоторой видеокассетой. Это свойство является вторым отличием класса PreviouslyRental от Rental. Так как видеокассета в определенный момент времени может участвовать в не более чем одной связи с сущностью класса Rental, текущая операция проката уникальным образом определяется своей связью с видеокассетой.

Комментарии закрыты