Welcome to Sign in | Help
in Search

o intrebare

Last post 09-17-2008, 12:59 AM by Gherry. 21 replies.
Page 2 of 2 (22 items)   < Previous 1 2
Sort Posts: Previous Next
  •  06-17-2008, 6:51 PM 5114 in reply to 5108

    Re: o intrebare

    in concluzie referitor la primul meu topic: CNP-ul pot sa il am Unique key sau foreign key? cum e cel mai bine sa il pastrez?
  •  06-18-2008, 1:46 AM 5115 in reply to 5114

    Re: o intrebare

    Talkabout:
    in concluzie referitor la primul meu topic: CNP-ul pot sa il am Unique key sau foreign key? cum e cel mai bine sa il pastrez?

    Nu reusesc sa inteleg de ce ti-ar trebui inca o tabela pentru Foreign.
    Ca mai toti de aici, as face o cheie surogat pe tabela persoana, lasind ca atribut/cimp CNP-ul- si l-as declara si pe el UNIQUE ( + index  dupa el)

    Ignat Andrei
    http://serviciipeweb.ro/iafblog
  •  06-18-2008, 7:48 AM 5116 in reply to 5114

    Re: o intrebare

    CNP-ul poate să fie foreign key (dacă utilizezi chei naturale, care pot fi compuse din una sau mai multe coloane introduse de utilizator) sau poate să nu fie foreign key (dacă utilizezi chei surogat, care sunt constituite dintr-o singură coloană, generată de baza de date):

    CREATE TABLE Salariati (
        CNPSalariat char(13) PRIMARY KEY,
        NumeSalariat varchar(50) NOT NULL,
        PrenumeSalariat varchar(50) NOT NULL
    )

    CREATE TABLE PersoaneIntretinute (
        CNPPersoana char(13) PRIMARY KEY,
        CNPSalariat char(13) FOREIGN KEY REFERENCES Salariati (CNPSalariat),
        NumePersoana varchar(50) NOT NULL,
        PrenumePersoana varchar(50) NOT NULL,
        Relatie char(1) NOT NULL CHECK (Relatie IN ('C','S','P')) -- copil/sotie/parinte
    )

    sau

    CREATE TABLE Salariati (
        ID_Salariat int IDENTITY PRIMARY KEY,
        NumeSalariat varchar(50) NOT NULL,
        PrenumeSalariat varchar(50) NOT NULL,
        CNPSalariat char(13) NOT NULL UNIQUE
    )

    CREATE TABLE PersoaneIntretinute (
        ID_Persoana int IDENTITY PRIMARY KEY,
        ID_Salariat int NOT NULL FOREIGN KEY REFERENCES Salariati (ID_Salariat),
        NumePersoana varchar(50) NOT NULL,
        PrenumePersoana varchar(50) NOT NULL,
        Relatie char(1) NOT NULL CHECK (Relatie IN ('C','S','P')), -- copil/sotie/parinte
        CNPPersoana char(13) NOT NULL UNIQUE
    )

    Ambele design-uri sunt posibile, iar dezbaterea despre care e mai bun este nesfârşită. Personal, optez pentru chei surogat, nu doar din raţiuni de performanţă (un int e mai mic şi mai rapid pt JOIN-uri decât un char(13)), cât mai ales de design al interfeţei (e mai uşor să fac un combo bazat pe o coloană int, decât pe una sau mai multe coloane de diverse tipuri). Un lucru important însă, atunci când folosim chei surogat, este să ne asigurăm că am definit şi o cheie unică formată din coloane introduse de utilizator.

    Răzvan
  •  06-18-2008, 9:24 AM 5118 in reply to 5116

    Re: o intrebare

    Si eu prefer aici o cheie surogat - pe langa chestiunile legate de performanta si argumentele expuse de Remus sunt destul de importrante  in acest caz.

    Vezi si http://www.sqlskills.com/blogs/kimberly/PermaLink.aspx?guid=bdaee3f7-1e15-414b-b75f-a290db645159

  •  09-16-2008, 9:36 PM 5623 in reply to 5118

    Re: o intrebare

    Incredibil! Doi români au acelaşi CNP
    Nu şi-a putut încasa alocaţia de stat, nu se poate angaja, nu poate da examen auto, nu se poate căsători şi nici nu-şi poate face un credit. Asta e drama unui tânăr, în vârstă de 21 de ani, din localitatea gălăţeană Matca, al cărui Cod Numeric Personal este identic cu cel al altui bărbat din Făurei, judeţul Brăila.

    Pentru Nelu Iacob, CNP-ul a fost o sursă inepuizabilă de probleme. Şirul necazurilor a început în copilărie când era elev de şcoală generală.

    Atunci ar fi trebuit să primească alocaţia de stat. Nu s-a întâmplat aşa şi, pentru a descâlci iţele acestei nedreptăţi, tatăl său, Gheorghe, a mers din uşă în uşă pentru a i se explica de ce fiul său nu primeşte banii cuveniţi.

    A aflat că alocaţia lui Nelu mergea la Brăila, la un anume Cristian Adrian Radu, născut tot în zona Tecuciului, şi asta deoarece CNP-urile erau identice. Ciudăţenia nu a putut fi explicată la acea vreme de autorităţi.

    Şi necazurile au continuat. “Au venit în comună taloanele pentru analizele gratuite. Toţi am primit, dar lui nu i-a venit. La fel, nu se poate angaja, pentru că CNP-ul nu este în regulă, este la fel cu al celuilalt”, spune Gheorghe Iacob, tatăl băiatului.

    Examenul pentru permisul de conducere, pe care vrut să-l susţină recent, avea să-i dea noi bătăi de cap lui Nelu din cauza aceluiaşi CNP. După ce a cheltuit bani pe zeci de drumuri la Tecuci şi Galaţi, în cursul cărora a bătut la uşile mai tuturor instituţiilor care ar fi putut să-i ofere o rezolvare, tânărul s-a trezit că avea permis de conducere de un an.

    “Când am fost să dau examen, m-au căutat în calculator după CNP. M-au găsit că aveam permis auto de un an. De fapt celălalt are permis, pentru că are acelaşi CNP, dar eu nu mai pot da examen. Am cheltuit o mulţime de bani cu şcoala de şoferi, am primit ofertă să muncesc în străinătate, dar nu am putut pleca din cauza actelor. Nu pot face nimic! Băiatul celălalt am înţeles că e plecat din ţară şi din cauza asta nu se pot face modificările în acte”, ne-a spus ieri indignat Nelu Iacob, care în această ipostază nu poate spera nici măcar să se căsătorească sau să facă vreun împrumut la bancă.

    În câteva săptămâni, Nelu Iacob va avea acte în regulă. Autorităţile din cadrul Serviciului de Evidenţă a Populaţiei Tecuci promit că documentele de identitate ale lui Cristian Adrian Radu, cu tot cu CNP, vor fi schimbate, iar tânărul din Matca îşi va câştiga identitatea “numerică”.

    Întrebarea, este dacă un sistem informatic care gestionează datele unor persoane fizice ar trebui să permită introducerea unui CNP greşit prin faptul că este duplicat (ca în cazul de faţă) ori ba ?
  •  09-16-2008, 10:26 PM 5624 in reply to 5623

    Re: o intrebare

    B_gd_n[ ]Sahlean:

    Întrebarea, este dacă un sistem informatic care gestionează datele unor persoane fizice ar trebui să permită introducerea unui CNP greşit prin faptul că este duplicat (ca în cazul de faţă) ori ba ?

    Depinde de specificatii - si, in acest caz, parerea mea este ca NU ar trebui sa permita duplicarea - avind in vedere ca CNP TREBUIE sa fie unic...

    Ignat Andrei
    http://serviciipeweb.ro/iafblog
  •  09-17-2008, 12:59 AM 5625 in reply to 5623

    Re: o intrebare

    In opinia mea, atata timp cat existenta unui CNP duplicat nu afecteaza functionarea sistemului nu cred ca ar trebui sa conteze; pe de alta parte, probabilitatea ca 2 persoane cu acelasi CNP sa ajunga in acelasi sistem informatic (altul decat cel de evidenta populatiei) e destul de mica deci nu ne costa nimic sa fortam sa fie unic.

    Eu, personal, nu il tin unic pt ca m-am lovit de multe situatii in care CNP-ul nu este disponibil si nici macar necesar; daca mai tinem cont si de faptul ca e o chestie de introduere de date si ca exista sanse reale sa se introduca gresit (din cate am inteles, din alta discutie, validarea lui nu functioneaza totdeauna asa ca daca incercam aia intram in alta discutie de acelasi gen) mi se pare frectie la picior de lemn sa fortezi sa fie unic.. In concluzie, eu zic ca se merita folosit un sistem care sa avertizeze operatorul in cazul in care nu este valid sau daca este duplicat insa doar cu titlu informativ, nicidecum ca o restrictie (Atentie: exclud din aceasta discutie cazurile cand reprezinta o componenta critica pt desfasurarea activitatii, caz in care e destul de clar Wink)

    Plus de asta, consider ca exista elemente mult mai importante si cu incidente mai dese decat CNP-ul cum ar fi felul cum se stocheaza adresele (mai ales ca acum se fac tot mai multe harti digitale si tot mai detaliate) si numerele de telefon.
Page 2 of 2 (22 items)   < Previous 1 2
View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems