Documentazione del modello relazionale
Come per lo schema concettuale, anche lo schema logico deve essere documentato. In particolare lo schema di base di dati non contiene le seguenti informazioni:
- il significato delle relazioni e dei loro attributi;
- il tipo degli attributi (semplice o calcolato) e la loro obbligatorietà;
- eventuali chiavi candidate;
- le relazioni concettuali che sono state rimosse durante la fase di traduzione dallo schema ER allo schema relazionale;
- le regole aziendali. In particolare tali regole contengono le regole di derivazione degli attributi calcolati.
Come fatto per il modello concettuale, proponiamo una soluzione basato su XML per documentare lo schema logico. La seguente DTD descrive un possibile modello per la documentazione di uno schema relazionale:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!ELEMENT schema (relazione+, regola*)>
<!ELEMENT relazione (descrizione?, attributo+, chiavePrimaria,
chiaveCandidata*, chiaveEsterna*)>
<!ATTLIST relazione nome ID #REQUIRED>
<!ELEMENT attributo (nome, descrizione?)>
<!ATTLIST attributo id ID #REQUIRED
tipo (semplice | calcolato) #REQUIRED
opzionale (si | no) #REQUIRED>
<!ELEMENT chiavePrimaria EMPTY>
<!ATTLIST chiavePrimaria attributi IDREFS #REQUIRED>
<!ELEMENT chiaveCandidata EMPTY>
<!ATTLIST chiaveCandidata attributi IDREFS #REQUIRED>
<!ELEMENT chiaveEsterna EMPTY>
<!ATTLIST chiaveEsterna attributi IDREFS #REQUIRED
relazione IDREF #REQUIRED
associazione CDATA #IMPLIED>
<!ELEMENT descrizione (#PCDATA)>
<!ELEMENT nome (#PCDATA)>
<!ELEMENT regola (#PCDATA)>
Seguono alcune osservazione sulla DTD proposta:
- Gli elementi attributo che formano chiavi esterne devono essere inseriti nell'elemento relazione nell'ordine in cui sono inseriti gli elementi attributo della corrispondente chiave primaria. Questo al fine di mantenere una corrispondenza tra attributi della chiave esterna e attributi della chiave primaria. Si noti che in XML gli elementi sono ordinati secondo l'ordine in cui appaiono nel documento;
- l'attributo id dell'elemento attributo è formato concatenando il nome della relazione e il nome dell'attributo con iniziale maiuscola, ad esempio personaTelefono per la relazione persona e l'attributo telefono. In questo modo tale attributo ha valore univoco nel documento;
- l'attributo attributi dell'elemento chiavePrimaria (chiaveCandidata, chiave Esterna) è una lista di identificatori dei corrispondenti attributi che formalo la chiave;
- l'attributo relazione dell'elemento chiaveEsterna è un identificatore della relazione a cui la chiave esterna si riferisce;
- l'attributo opzionale associazione dell'elemento chiaveEsterna contiene il nome della corrispondente relazione concettuale se questa è stata rimossa nella traduzione dallo schema ER a quello relazionale.