CREATE TABLE VxSegmentDoubleFeature_tab ( SegmentId NUMBER NOT NULL, FieldName VARCHAR2(20) NOT NULL, Value NUMBER NOT NULL, CONSTRAINT VxSegmentDoubleFeat_pk PRIMARY KEY(SegmentId, FieldName), CONSTRAINT VxSegmentDoubleFeat_fk FOREIGN KEY(SegmentId) REFERENCES VxSegment_tab ON DELETE CASCADE ); CREATE TABLE VxSegmentIntFeature_tab ( SegmentId NUMBER NOT NULL, FieldName VARCHAR2(20) NOT NULL, Value NUMBER NOT NULL, CONSTRAINT VxSegmentIntFeat_pk PRIMARY KEY(SegmentId, FieldName), CONSTRAINT VxSegmentIntFeat_fk FOREIGN KEY(SegmentId) REFERENCES VxSegment_tab ON DELETE CASCADE );
VxSegmentIntFeature_tab and VxSegmentDoubleFeature_tab are similar to VxSegmentStringFeature_tab. The only difference is the type of the Value column.
Query examples:
Get "zoom" segments of "cam" segmentation of "friends418" with positive factor:
SQL> SELECT s.segIndex, s.startPos, s.endPos, factorFeat.value factor FROM VxSegmentation_tab seg, VxSegment_tab s, VxSegmentStringFeature_tab typeFeat, VxSegmentDoubleFeature_tab factorFeat WHERE (seg.videoName = 'friends418') AND (seg.name = 'cam') AND (seg.id = s.segmentationId) AND (typeFeat.segmentId = s.id) AND (typeFeat.fieldName = 'type') AND (typeFeat.value = 'zoom') AND (factorFeat.segmentId = s.id) AND (factorFeat.fieldName = 'factor') AND (factorFeat.value >= 0.0);
Get "zoom" segments of "cam" segmentation of "friends418" with positive factor, only in scenes with "description" beginning with "Ross":
SQL> SELECT sCam.segIndex, sCam.startPos, sCam.endPos FROM VxSegment_tab sCam, VxSegmentation_tab segCam, VxSegmentStringFeature_tab fType, VxSegmentDoubleFeature_tab fFactor, VxSegment_tab sScenes, VxSegmentation_tab segScenes, VxSegmentStringFeature_tab fDescr WHERE (segCam.videoName = 'friends418') AND (sCam.segmentationId = segCam.id) AND (segCam.name = 'cam') AND (fType.segmentId = sCam.id) AND (fType.fieldName = 'type') AND (fType.value = 'zoom') AND (fFactor.segmentId = sCam.id) AND (fFactor.fieldName = 'factor') AND (fFactor.value >= 0.0) AND (segScenes.videoName = 'friends418') AND (sScenes.segmentationId = segScenes.id) AND (segScenes.name = 'scenes') AND (fDescr.segmentId = sScenes.id) AND (fDescr.fieldName = 'description') AND (fDescr.value LIKE 'Ross%') AND (sCam.startPos >= sScenes.startPos) AND (sCam.endPos <= sScenes.endPos);