Welcome to Sign in | Help
in Search

o intrebare

Last post 09-17-2008, 12:59 AM by Gherry. 21 replies.
Page 1 of 2 (22 items)   1 2 Next >
Sort Posts: Previous Next
  •  06-15-2008, 1:16 PM 5090

    o intrebare

    Buna
    O coloana din tabela PERSOANE care va contine codul numeric personal din cartea de identitate poate fi folosita ca Unique Key sau ca Foreign Key? sau ambele?
    Pentru cartea de identitate am nevoie de o noua tabela?
    Multumesc
  •  06-15-2008, 4:00 PM 5091 in reply to 5090

    Re: o intrebare

    O poti folosi ca o coloana cu constangere unique .Coloane poate fi numerica sau varchar chiar,asa am eu tabela personal


    Secolul XXI ori va fi religios ori nu va fi deloc
  •  06-15-2008, 6:22 PM 5093 in reply to 5091

    Re: o intrebare

    multumesc.
    de fapt era o intrebare undeva, cu variantele: Unique, Foreign, sau ambele
    deci corect e Unique, fara Foreign
  •  06-15-2008, 6:27 PM 5094 in reply to 5090

    Re: o intrebare

    mai am inca 2 intrebari:
    1. Un trigger PL/SQL declansat de UPDATE poate contine si :new si :old ? sau doar unul din ele?
    2. Pot fi definiti mai multi indecsi asociati unei tabele si care sa refere aceeasi coloana?
  •  06-15-2008, 7:58 PM 5095 in reply to 5094

    Re: o intrebare

    Ai grija la valorile "NULL". Daca vrei sa pui o constrangere "UNIQUE" pe coloana, nu poti avea acolo mai mult de o valoare "NULL". Deci toata lumea sa aibe buletin...Smile

    1. Vezi BOL ---> Using the inserted and deleted Tables

    2. O coloana poate "participa" la mai multi indecsi. Totusi, atentie la date, la patternurile de acces si la felul in care indecsii sunt folositi (daca sunt folositi Smile).

  •  06-15-2008, 9:07 PM 5096 in reply to 5094

    Re: o intrebare

    Talkabout:
    ... PL/SQL...
    Ce-i aia PL/SQL ? Embarrassed
  •  06-15-2008, 9:14 PM 5097 in reply to 5095

    Re: o intrebare

    Diana:

    ...Deci toata lumea sa aibe buletin...Smile

    Vrei să zici ... certificat de naştere.



    Diana:

    Ai grija la valorile "NULL". Daca vrei sa pui o constrangere "UNIQUE" pe coloana, nu poti avea acolo mai mult de o valoare "NULL".

    Altfel spus - dupa cum a zis si Diana mai sus - o restricţie UNIQUE pe un câmp (sau set de câmpuri) permite şi existenţa unei singure valori nule. In concluzie, daca nu defineste CNP ca fiind cheie primară, trebuie să-l defineşti cu două restricţii (asta dacă în tabelă ai doar romani):

    [1] UNIQUE şi

    [2] NOT NULL.


  •  06-16-2008, 10:14 AM 5098 in reply to 5096

    Re: o intrebare

    B_gd_n[ ]Sahlean:
    Talkabout:
    ... PL/SQL...
    Ce-i aia PL/SQL ? Embarrassed

    Un fel de T-SQL dar facut pt platforma de bd Oracle.

     


    Gheorghe Ciubuc,SQL Server Influencer, MCP(SQL 2000), MCTS (SQL Server 2005) , OCA(Oracle 9i), Sybase(Brainbench)
  •  06-16-2008, 10:28 AM 5099 in reply to 5098

    Re: o intrebare

    Talkabout, e bine sa specifci clar de la inceput niste lucruri - de exemplu faptul ca lucrezi pe Oracle. Aici cei mai multi dintre noi lucram pe platforma Microsoft, deci nu stiu daca te putem ajuta...
  •  06-16-2008, 9:01 PM 5103 in reply to 5099

    Re: o intrebare

    ceea ce am intrebat eu in primul topic nu cred ca depinde de ce platforma folosesc. si eu lucrez pe Microsoft. am pus niste intrebari legate de baze de date, independent de platforma folosita
  •  06-17-2008, 6:28 AM 5104 in reply to 5103

    Re: o intrebare

    Cred ca nu e nici o problema daca se pun intrebri cu subiecte diverse (undeva pe forum cineva pe acest forum a pus intrebari de MySQL si a primit rspunsuri bune !)
    Gheorghe Ciubuc,SQL Server Influencer, MCP(SQL 2000), MCTS (SQL Server 2005) , OCA(Oracle 9i), Sybase(Brainbench)
  •  06-17-2008, 8:53 AM 5105 in reply to 5090

    Re: o intrebare

    1. Daca te gindesti sa folosesti acest CNP pentru o tabela cu angajati, ai grija ca poti avea oameni care nu au CNP (ex. cei nascuti in Rep Moldova, care au permis de munca pt Romania). Si atunci pe acest cimp vei avea fie valori nule (deci nici vorba de cheie primara), fie valori in cu totul alt format decit N(13).
    2. Procedurile stocate (scrise in PL/SQL in Oracle si T-SQL in MS SQL) difera ca si sintaxa de la o platforma la alta. Pe Oracle este intr-adevar treaba asta cu :old si :new. Pe MS SQL se folosesc pseudo-tabelele inserted si deleted.
  •  06-17-2008, 9:51 AM 5106 in reply to 5090

    Re: o intrebare

    Folosirea cheilor 'naturale' (http://en.wikipedia.org/wiki/Natural_key) este in general riscanta. Desi tentatia de a le folosii este foarte mare, iata citeva din riscurile pe termen lung:
    - unicitatea nu este garantata. CNP este generat de o autoritate in afara controlului tau si aceasta poate face o greseala si sa genereze un duplicat. Sau o persoana se poate prezenta cu un CNP fals. Busniess-ul tau probabil nu este in masura sa urmareasca astfel de cazuri, si nici nu este interesat, si ce se poate intimpla este ca sistemul informatic se blocheaza cind este prezentat cu o astfel de problema. Putin probabil in practica, dar nu imposibil.
    - formatul CNP se poate schimba. O lege trecuta in graba poate adauga un RO in mijloc sau cine stie ce altceva. Aplicatia ta devine deodata 'obsoleta' pentru ca foloseste datele CNP ca cheie. Daca CNP ar fi pastrat doar ca un atribut al persoanei, anticiparea unei astfel de schimbari este mai usoara (eg. un cimp varchar in loc de numeric).
    - in fine cadrul legal legat de CNP se poate schimba oricind. Este foarte probabil ca intr-un viitor destul de apropiat (ani) cerinta de protectzie a CNP-ului sa devina lege, la fel cum s-a intimplat cu Social Security in USA. Aceasta este cea mai serioasa problema, pentru ca un cimp encriptionat nu poate fi folosit ca cheie.
    http://rusanu.com
  •  06-17-2008, 11:20 AM 5107 in reply to 5106

    Re: o intrebare

    Observaţii pertintente dar ...
    rremus:
    Folosirea cheilor 'naturale' (http://en.wikipedia.org/wiki/Natural_key) este in general riscanta. ...
    . Wikipedia spune că aceste chei naturale sunt chei candidat ("In relational model database design, a natural key is a candidate key"), cu alte cuvinte o cheie naturală şi candidat (pleonasm) nu este automat cheie primară. Chiar şi în situaţia în care aleg pentru tabelă o cheie primară artificială, cheia naturală şi alternativă trebuie totuşi implementată sub o anumită formă (cel mai simplu mod este cel al definirii unui restricţii/index UNIQUE sau se poate alege altă soluţie ...).

    rremus:
    ... iata citeva din riscurile pe termen lung: - unicitatea nu este garantata.
    Cu alte cuvinte trebuie să suflu şi în iaurt ? Asta ar presupune să nu călătoresc cu maşina deoarece oricând poate apare un descreierat de pe sens opus care să ... sau ar trebui să evit calătoria cu avionul deoarece ... ?
    Conform http://ro.wikipedia.org/wiki/Cod_numeric_personal CNP este unic. Este adevărat că teoretic şi practic pot apare "erori" (CNP-uri duplicate) dar aceste situatii trebuiesc tratate "local" la nivelul sistemului informatic.

    rremus:
    ... Sau o persoana se poate prezenta cu un CNP fals. Busniess-ul tau probabil nu este in masura sa urmareasca astfel de cazuri, si nici nu este interesat, ...
    CNP este un cod autodetector de erori, ultima cifra fiind cifra de control. Deci se poate implementa un algoritm de verificare a CNP-ului, fapt care nu exclude în totalitate CNP-urile false (atât timp cât nu avem acces la baza de date a MIRA).

  •  06-17-2008, 11:31 AM 5108 in reply to 5106

    Re: o intrebare

    rremus:
    - formatul CNP se poate schimba. O lege trecuta in graba poate adauga un RO in mijloc sau cine stie ce altceva. Aplicatia ta devine deodata 'obsoleta' pentru ca foloseste datele CNP ca cheie. Daca CNP ar fi pastrat doar ca un atribut al persoanei, anticiparea unei astfel de schimbari este mai usoara (eg. un cimp varchar in loc de numeric). - in fine cadrul legal legat de CNP se poate schimba oricind. Este foarte probabil ca intr-un viitor destul de apropiat (ani) cerinta de protectzie a CNP-ului sa devina lege, la fel cum s-a intimplat cu Social Security in USA. Aceasta este cea mai serioasa problema, pentru ca un cimp encriptionat nu poate fi folosit ca cheie.

    E adevărat că structura CNP-ului poate fi modificată la un moment dat, dar aceasta este deja o problemă de proiectare a sistemului informatic în sensul "flexibilităţii/rezintenţei la modificari" (modificarea regulilor de gestiune / "business rules" în general). După cum se spune, modificare cerinţelor (funcţionale şi nonfuncţionale) este fapt cert, o realitate. Totul depinde de cât de flexibil dorim să fie sistemul informatic pe care-l dezvoltăm, iar flexibilitatea are în general costurile ei. Totuşi probabilitatea de modificare a CNP-ului acuma este mică, fiind posibilă modificarea CNP-ului peste 15/20 de ani. Dacă avem în vedere faptul că durata medie de viaţă a unui sistem informatic este de aproximativ 5 ani ...

    În concluzie, soluţia care mi-ar plăcea mie ar fi cea o cheie primară artificială (surogat) plus o restricţie/index UNIQUE pe CNP, problema fiind acuma faptul că voi avea 2 indecşi în loc de un singur index.
Page 1 of 2 (22 items)   1 2 Next >
View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems