DyDa: Motivating Example

 

Below we illustrate the maintenance anomaly problem by a motivating example. Assume we have four data sources with one relation each as shown below:
DS1: Customer(Name, Address, Phone)
DS2: Tour(TourID, TourName, Age, Type, NoDays)
DS3: Participant(Participant, TourID, StartDate, Loc)
DS4: FlightRes(Name, Age, FlightNo, Source, Dest)

The view Asia-Customer is defined as:
SELECT C.Name, F.Age, F.FlightNo, F.Dest, T.TourID
FROM Customer C, FlightRes F, Tour T
WHERE F.Dest = 'Asia' AND F.Name = T.Tourname

Assume the data update ``insert into Customer values(`Ben',`MA',123456)''. In order to determine the delta effect on the view extent, the view manager generates the incremental view maintenance query Q below by decomposing the view query into individual source queries to each data source.

Maintenance Query Q:
SELECT 'Ben' as Name, F.Age, F.FlightNo, F.Dest
FROM FlightRes F
WHERE F.Name = 'Ben' AND F.Dest = 'Asia'

Two different types of anomaly problems can be distinguished:
(a) Duplication Anomaly: If during the transfer time of the query Q to the relation FlightRes in the DS4, FlightRes has committed a new data update "insert (`Ben', 18,`AA3456',`Asia')". This new tuple would also be included in the join result of Q. After querying over relation Tour similarly, one possible final tuple (`Ben', 18, `AA3456',`Asia') would be inserted into the view. However, later when the view manager processes the same tuple would be inserted into the view again. A duplication anomaly appears, as also observed by [13].
(b) Broken Query Anomaly: During the transfer time of query Q to DS4, the FlightRes relation has just been decomposed and normalized to two relations FlightRes (Name,Age,FlightNo) and FlightInfo(FlightNo,Source,Dest) Then the maintenance query Q faces a schema conflict, i.e., the selected attribute F.Dest is no longer available in the FlightRes relation. Thus the maintenance query Q from the out-of-date view definition cannot be processed by DS4 due to the inconsistency between the schemata specified in the query (``F.Dest'') and the schema of the underlying source (no such attribute). We then say that the query Q is broken.