
Rname,u Robj,u,u  Rdes,u,u 
SHU-1 
APL-9 
RDA-6 
SHU-
1 
APL-9 
Explore 
Mine 
SHU-
1 
Uranus 
  
Robj,u,u Rdes,u,c 
 
 
RDA-
6 
Scientific 
 
APL-9 
RDA-
6 
Neptune 
Pluto 
 
Rname,c Robj,c,c  Rdes,c,c 
CLB-2 CLB-
2 
Explore CLB-
2 
Neptune 
 
Robj,c,s 
 
 
CLB-
2 
Spy 
 
 
Figure 2: The decomposed single-level relations. 
      All relations containing only the key - i.e., 
Rname,u   (base single level relation containing all 
keys at classification level U) and Rname,c  - are 
referred to as base relations. Suppose we want to 
recover the output of the query “Select name, obj, 
des from R where des <> Saturn”. The following is 
a description of the steps of the BVA+ associated 
with examples from the above the relation (Ai 
denotes any attribute and A1 denotes the apparent 
key). 
 
1. For every relation RAi,x,y (single level relation 
containing all entries form multilevel relation 
having keys at classification level x and Ai 
attribute values at classification level y), excluding 
base relations, create a bit vector BV.RAi,x,y 
denoting the presence or absence of the keys at 
level x. BV.RAi,x,y should have the same number 
entries as the number keys at level x (can be found 
in relation Rkey,x). 
Keys at level u = {SHU-1, APL-9, RDA-6} 
Keys at level c = {CLB-2} 
BV.Robj,u,u = 110 
BV.Robj,u,c = 001 
BV.Robj,c,c = 1 
BV.Robj,c,s = 1 
BV.Rdes,u,u = 100 
BV.Rdes,u,c = 011 
BV.Rdes,c
,c = 1 
 
2. For every RAi,x,y excluding base relations create a 
Mapping Vector Index, MVI.RAi,x,y, mapping the 
position of the keys in RAi,x,y to the position of 
the keys in RA1,x. The entries in the MVIs are of 
the form (pib, pit) where pib, Position In Base 
relation, is the position of the key in the base 
relation; and pit, Position In This relation, is the 
position of the key in this relation.
 
3. Create an Output Keys Vector OKVx (contains all 
keys with classification x  that will appear in the 
output table) for all x: 
a. As having a number of bits equal to the 
number of entries in Rkey,x. 
b. Read all relations having an attribute 
participating in the selection criteria of the 
query. 
c. Get all entries from those relations satisfying 
the selection criteria at each level x (at level u 
we have SHU-1, and APL-9; and at level c we 
have CLB-2).  
d. For every entry that succeeds, set its position 
in OKVx to 1. The position of an entry in 
OKVx can be found by matching the key of 
this entry to the key in Rkey,x and getting its 
position in Rkey,x. 
i.OKVu = 110 (the first three keys in 
Rname,u will appear in output table) 
ii.OKVc = 1 (the first and only key in 
Rname,u will appear in output table) 
4. Create a Polyinstantiated Keys Vector, PKVx,y  
that contains all polyinstantiated keys at level x by 
subjects at level y, for all x,y such that x<y. For all 
attributes  Ai requested in the output of the query 
(name, obj and des) except for the key (name) do 
the following: 
a. Create PKVAi,x,y = the ANDing of all 
BV.RAi,x,z where x <=  z < y for all z  
           PK obj,u,c = BV.Robj u,u AND BV.Robj,u,c  
                = 110 AND 001  =  000  
PK obj,u,s = BV.Robj u,u AND BV.Robj,u,c  
= 110 AND 001 =  000 
           PK obj,c,s = BV.Robj c,c AND BV.Robj,c,s  
                  = 1 AND 1= 1 
           PK des,u,c = BV.Rdesu,u AND BV.Rdes,u,c  
                             =  100 AND 011 =  000 
           PK des,u,s = BV.Rdesu,u AND BV.Rdes,u,c  
                 = 100 AND 011= 000 
    PK des,c,s  = BV.Rdes c,c  = 1  
b. Get PKVx.y as the ORing of all PKVAi,x.y  
PKVu,c = PK obj,u,c  OR  PKdes,u,c =  000 
PKVu,s = PK obj,u,s  OR  PK des,u,s =  000 
PKVc,s = PK obj,c,s OR PK des,c,s =  1 
     A 1-bit in position n in any vector PKVx
,y 
signifies that the nth entry in Rkey,x is 
polyinstantiated.  Therefore, entry 1 in Rname,c that 
is CLB-2 is polyinstantiated. 
BVA+ - A BIT VECTORS ALGORITHM FOR ACCELERATING QUERIES IN MULTILEVEL SECURE
DATABASES
497