Welcome to Sign in | Help

Re: Feedback Intalnire 20 Octombrie 2007

  •  10-21-2007, 8:43 PM

    Re: Feedback Intalnire 20 Octombrie 2007

    Legat de noua functionalitate din sql2008 denumita "sparse columns" si de exemplul cu respectivele produse care au caracteristici diferite (ex. pentru mouse : este wireless = {D/N} , ... pentru monitor: tip = {CRT, LCD} ), soluţia sugerata a fost utilizarea unei singure tabele care va include ca şi câmpuri toate caracteristicile (ex. IsWireless) ca şi campuri care accepta si valori nule.

    Problema enuntata mai sus e in primul rand (in opinia mea) una de proiectare a bazei de date. Daca am avea la dispozitie o baza de date orientata-obiect sau un limbaj de programare orientat-obiect atunci solutia ar fi fost simpla: specializarea & mostenirea.

    In cazul acesta subclasele Monitor si Caiet vor mosteni atributele superclasei Produs.

    Aceasta diagrama UML poate fi implementata intr-o baza de date relationala astfel:

    a) câte o tabela pentru fiecare clasă =>

    Produs(CodProdus - Cheie Primara, Denumire)

    Monitor(CodProdus - CheiePrimara si CheieExterna referinta Produs(CodProdus), Tip, Diagonala, DimensiunePunct, ...)

    Caiet(CodProdus - CheiePrimara referinta Produs(CodProdus) si CheieExterna, NrPagini)

    E adevarat ca va apare astfel o joncţiune suplimentară.

    b) o singură tabelă care include toate atributele (cazul amintit de catre tine)

    c) câte o tabelă pentru fiecare subclasă =>

     

    Monitor(CodProdus - CheiePrimara, Denumire, Tip, Diagonala, DimensiunePunct, ...)

    Caiet(CodProdus - CheiePrimara, Denumire, NrPagini)


    Alta solutie de proiectare a bazei de date ar presupune crearea urmatoarelor tabele:

    Produs(CodProdus - CheiePrimara, Denumire)

    Caracteristica(CodCaracteristica - CheiePrimara, Denumire)

    CaracteristicaProdus(CodCaracteristicaProdus - CheiePrimara, CodProdus - CheieExterna, CodCaracteristica - CheieExterna, Valoare) (CodProdus + CodCaracteristica index cu valori unice si nenule daca caracteriticile sunt monovaloare)

    E adevarat ca solutia de mai sus:

    [1] nu este 100% in spiritul modelului relational,

    [2] presupune 2 joncţiuni suplimentare,

    [3] este cea mai flexibilă (îmi permite chiar să adaug noi caracteristici dinamic, fară a fi necesară modificarea codului sursă a aplicaţiei client la adăugarea unei noi caracteristici). 

    ... alte soluţii ... de proiectare / implementare.

     

     

     

View Complete Thread
Powered by Community Server (Commercial Edition), by Telligent Systems