Basi di Dati XML

  1. Tradurre il seguente schema ER in uno schema XML, includendo nello schema XML anche i vincoli di integrità referenziale (chiavi primarie e chiavi esterne) e identificando eventuali vincoli dello schema ER che non sono esprimibili nello schema XML. Per lo schema XML si usi la notazione sintetica proposta durante il corso (Target Language).

    Vi sono due possibili soluzioni: la prima annida F in A, la seconda annida F in G. La seconda soluzione è da preferire perchè non fa perdere vincoli dello schema ER.

    // Schema
    db((A | G)*)
    A(KA, ((B, C?) | C))
      B(beta, D?, E?)
        D(delta)
        E(eta)
      C(gamma)  
    G(KG, S+)
      S(F)
        F(KF, R)
          R(KA, rho+)
            rho(rho1, rho2)
        
    // Vincoli referenziali
    KEY(A.KA)
    KEY(G.KG)
    KEY(F.KF)
    KEY(R.KA)
    KEYREF(R.KA -> A.KA)       
    
  2. Scrivene un breve documento XML ben formato che sia valido rispetto allo schema XML risultato del punto precedente. Popolare il documento con i valori per gli attributi chiave primaria e chiave esterna (è possibile tralasciare i valori per gli altri attributi). [Soluzione]