Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Boxa membrana tweeter infundata

ajutor

Whisky for Mac

Xiaomi 14 Gpay
 Izolare zid exterior de scandura

Dezinstalare drivere W11 23H3

Recomandare masina de spalat fiab...

BSOD din cauza Intel Audio DSP dr...
 De ce sunt oamenii nostalgici

Cum vand casa fara factura Hidroe...

Scor FICO minim

Tonometru compensat CAS?
 polita RCA ONLINE

Termostat frigider - verificare

Mai au PC-urile vreun viitor?

Centrala termica immergas
 

Baze de date - design problem

- - - - -
  • Please log in to reply
14 replies to this topic

#1
serbanov

serbanov

    New Member

  • Grup: Junior Members
  • Posts: 6
  • Înscris: 12.06.2017
Salutare,

Am si eu o baza de date pe care intentionez sa o folosesc in realizarea lucrarii de licenta cu o interfata de utilizator in C#. Problema e ca baza de date nu functioneaza ca atare.

Mai jos am atasat *.accdb ( Design facut in access, ulterior va fi trecuta in SQL server ).

Problema mea este urmatoarea:

Am tabelele Client, Camera, Minibar, Cheltuiala_minibar, Produse_minibar, Factura_client, Meniu_restaurant, Produse_restaurant, cheltuiala_restaurant.

Vreau sa leg cheltuielile de factura pe care o voi oferi clientului din sistem ...

Problema e cum incerc eu sa leg...

Daca un client are o comanda X, iar pe comanda respectiva are 3 produse diferite, eu vreau sa am un ID in tabela Factura_client pentru a tine evidenta clientilor ... insa nu reusesc ..

Sper sa ma puteti ajuta ..

Attached Files


Edited by serbanov, 12 June 2017 - 11:36.


#2
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,596
  • Înscris: 30.07.2003
Mai bine ai posta structura tabelelor cu pricina si ce te impiedica sa faci asa cum spui.

Edited by neagu_laurentiu, 12 June 2017 - 11:37.


#3
serbanov

serbanov

    New Member

  • Grup: Junior Members
  • Posts: 6
  • Înscris: 12.06.2017
Momentan sunt la lucru, nu am MS Access instalat pe comp Posted Image ca sa intru sa fac un snip la relatiile dintre bazele de date ...

Cand incerc sa adaug date in cheltuiala_minibar/cheltuiala_restaurant, nu pot deoarece primesc "You cannot add or change a record because a related record is required in table 'Factura_clienti' " ...

Iar "factura_clienti" e goala !!! Nu are niciun record..

Edited by serbanov, 12 June 2017 - 11:44.


#4
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,596
  • Înscris: 30.07.2003
Dar nu ai structura in minte/pe hartie?

Edited by neagu_laurentiu, 12 June 2017 - 11:50.


#5
serbanov

serbanov

    New Member

  • Grup: Junior Members
  • Posts: 6
  • Înscris: 12.06.2017
Ba da, am o poza cu structura tabelelor, i-am trimis-o unui prieten, o atasez imediat, doar ca am uitat sa leg camera de factura, dar nu e o problema, aia se face imediat.


E ok acum ?

Attached Files



#6
romio79

romio79

    Active Member

  • Grup: Members
  • Posts: 1,655
  • Înscris: 30.03.2005
nu m-am uitat pe schema ta (efectiv mi-e lene :) ), dar pe factura poti sa ai un id de client, si intr-o alta tabela lista produselor din factura respectiva

#7
serbanov

serbanov

    New Member

  • Grup: Junior Members
  • Posts: 6
  • Înscris: 12.06.2017

View Postromio79, on 12 iunie 2017 - 12:03, said:

nu m-am uitat pe schema ta (efectiv mi-e lene Posted Image ), dar pe factura poti sa ai un id de client, si intr-o alta tabela lista produselor din factura respectiva


Romio79 ... eu zic sa te uiti totusi :) daca vrei sa dai un raspuns care sa fie de ajutor. Eu am o tabela intreaga de produse specifice minibarului si una specifica restaurantului. Nu inteleg ce vrei sa spui tu :), cand ai o factura cu nr 999 sa zicem, si vrei sa adaugi o lista de produse, tu trebuie sa iei produsele astea dintr-o alta tabela care sa reprezinte comanda, iar id-ul comenzii sa se regaseasca pe factura ... ;

#8
StickyFingaz

StickyFingaz

    Active Member

  • Grup: Members
  • Posts: 1,862
  • Înscris: 17.02.2016
id_cheltuiala_minibar in Cheltuiala minibar si Factura client.
Te las sa ghicesti problema.
Am impresia ca o sa ai aceeasi problema cand incerci sa populezi Cheltuiala restaurant.

Edit: acum am vazut ca ai spus si de Cheltuiala restaurant. Incearca sa faci pe hartie un workflow sa vezi cum se populeaza datele, de acolo poti sa-ti dai seama in 5 secunde care e problema.

Edited by StickyFingaz, 12 June 2017 - 12:34.


#9
danvlas

danvlas

    Guru Member

  • Grup: Senior Members
  • Posts: 11,118
  • Înscris: 04.06.2009

View Postserbanov, on 12 iunie 2017 - 11:42, said:

Cand incerc sa adaug date in cheltuiala_minibar/cheltuiala_restaurant, nu pot deoarece primesc "You cannot add or change a record because a related record is required in table 'Factura_clienti' " ...

Iar "factura_clienti" e goala !!! Nu are niciun record..
Pai face exact ce trebuie. Relatiile 1 - infinit inseamna ca in tabelul "infinit" poti baga date NUMAI DACA sunt legate de o singura inregistrare existenta din tabela 1.Ca sa pui cheltuieli pe o factura, trebuie mai intai sa generezi inregistrarea corespunzatoare facturii. "Factura" ta e, de fapt, o cazare. In tabelul Factura nu au ce cauta ID-urile de cheltuieli, altfel vei putea avea o singura cheltuiala pe factura.
Cheltuielile nu trebuie sa fie in doua tabele, ci intr-unul singur. In tabelul de cheltuieli bagi ID_Factura. Sau mai faci un tabel de comenzi.
Produsele ar trebui sa fie centralizate undeva, nu-ti trebuie doua tabele separate. De exemplu, poti avea bere atat in restaurant cat si in minibar. Ce faci in cazul asta, definesti "Bere_minibar" si "Bere_restaurant"?
Ai tabelul "Camera", dar nu indici hotelul in care se gaseste (desi se pare ca vrei sa faci baza de date sa mearga pentru mai multe hoteluri).
Nu vad nicaieri un tabel care sa-ti permita date istorice. Daca schimbi pretul unui produs si vrei sa tiparesti o factura retroactiv (ti-o cere clientul), ce o sa afiseze factura?

Esti la info? Educa-ti mintea sa judece logic si cursiv, imitand realitatea pe care vrei sa o modelezi..

#10
romio79

romio79

    Active Member

  • Grup: Members
  • Posts: 1,655
  • Înscris: 30.03.2005
daca crezi ca raspunsul meu nu a fost de ajutor imi pare rau.

#11
serbanov

serbanov

    New Member

  • Grup: Junior Members
  • Posts: 6
  • Înscris: 12.06.2017

View Postdanvlas, on 12 iunie 2017 - 12:33, said:

Pai face exact ce trebuie. Relatiile 1 - infinit inseamna ca in tabelul "infinit" poti baga date NUMAI DACA sunt legate de o singura inregistrare existenta din tabela 1.Ca sa pui cheltuieli pe o factura, trebuie mai intai sa generezi inregistrarea corespunzatoare facturii. "Factura" ta e, de fapt, o cazare. In tabelul Factura nu au ce cauta ID-urile de cheltuieli, altfel vei putea avea o singura cheltuiala pe factura.
Cheltuielile nu trebuie sa fie in doua tabele, ci intr-unul singur. In tabelul de cheltuieli bagi ID_Factura. Sau mai faci un tabel de comenzi.
Produsele ar trebui sa fie centralizate undeva, nu-ti trebuie doua tabele separate. De exemplu, poti avea bere atat in restaurant cat si in minibar. Ce faci in cazul asta, definesti "Bere_minibar" si "Bere_restaurant"?
Ai tabelul "Camera", dar nu indici hotelul in care se gaseste (desi se pare ca vrei sa faci baza de date sa mearga pentru mai multe hoteluri).
Nu vad nicaieri un tabel care sa-ti permita date istorice. Daca schimbi pretul unui produs si vrei sa tiparesti o factura retroactiv (ti-o cere clientul), ce o sa afiseze factura?

Esti la info? Educa-ti mintea sa judece logic si cursiv, imitand realitatea pe care vrei sa o modelezi..

Vreau sa fie strict pentru un singur hotel/pensiune, dar am zis sa imi tin datele hotelului intr-o tabela .. poate am gresit la faza asta, poate nu.
E o lucrare de licenta, nu un software profesionist pe care sa il vand pe bani ca sa am date istorice cum spui tu, apreciez sincer ideea, dar cred ca ma complic mai mult decat trebuie cu datele istorice ...

Cat despre produse_minibar si produse_restaurant, mi se pare normal sa fie diferite pentru ca poti avea un pret la minibar si un pret la restaurant :) si asta se practica, e chiar real case ... deci da, mi se pare normal sa am 2 tabele pentru situatia asta, mai ales ca in minibarul vietii nu o sa fie decat sticlute de alea mici - cel putin pe unde am fost eu si m-am cazat, doar asta am vazut in mare parte, a dracu bere de a fost ea in frigider, scuza-mi expresia - si totusi de ce trebuie sa imi pun id_factura in tabela cheltuieli ??? Nu vad ideea aici ...  Plus ca eu consider ca in tabela factura ar trebui sa se regaseasca id-urile cheltuielilor pentru a tine un tracking ulterior ... Poate vad eu gresit lucrurile, poate le vad bine .. mi-am argumentat alegerea consider ..

Poti te rog sa imi prezinti un flow chart cum vezi tu ?? M-ar ajuta mult !

#12
romio79

romio79

    Active Member

  • Grup: Members
  • Posts: 1,655
  • Înscris: 30.03.2005
pe logica asta, daca pretul e diferit la un produs, ar trebui sa aibe o tabela proprie.

#13
serbanov

serbanov

    New Member

  • Grup: Junior Members
  • Posts: 6
  • Înscris: 12.06.2017

View Postromio79, on 12 iunie 2017 - 12:58, said:

pe logica asta, daca pretul e diferit la un produs, ar trebui sa aibe o tabela proprie.


Nu, produsul difera ca atare, nu o sa gasesti la un restaurant o sticluta de 15 ml sau cat e aia din minibar ...

#14
colombo2003

colombo2003

    Senior Member

  • Grup: Senior Members
  • Posts: 6,312
  • Înscris: 16.07.2008
Si cine te opreste sa ai in tabela de produse doua inregistrari, chiar daca au acelasi nume, celeallte campuri vor fi cele care vor face diferenta: cantitatea, pretul si... mai ales ID-ul produsului? Ala e unic si in orice tabela s-ar regasi, stii clar, in orice moment, la orice ora, despre ce e vb.

Edited by colombo2003, 12 June 2017 - 13:08.


#15
danvlas

danvlas

    Guru Member

  • Grup: Senior Members
  • Posts: 11,118
  • Înscris: 04.06.2009
si totusi de ce trebuie sa imi pun id_factura in tabela cheltuieli ??? Nu vad ideea aici ...  Plus ca eu consider ca in tabela factura ar trebui sa se regaseasca id-urile cheltuielilor pentru a tine un tracking ulterior ... Poate vad eu gresit lucrurile, poate le vad bine .. mi-am argumentat alegerea consider ..

Pai sa vedem: cate facturi emiti pentru un client? Una, da? In tabelul de facturi vei avea o singura inregistrare, corect? Cate ID-uri de cheltuieli poti sa tii intr-o singura inregistrare de factura? Unul. Deci nu merge asa.
Cate cheltuieli poti pune pe factura aia? Fara numar, da? Adica vei avea multe inregistrari, aferente unei singure facturi. Fiecare inregistrare din Cheltuieli trebuie sa arate carei facturi ii apartine si asta se face usor: bagi IDFactura in tabelul de cheltuieli. Sper ca m-am facut inteles, pentru ca clarificarea asta iti va folosi foarte mult in proiect.
LE: ID-ul facturii din Facturi e "primary key". ID-ul facturii bagat in Cheltuieli se numeste Foreign Key si arata carei inregistrari-parinte ii apartine inregistrarea "copil".

Lucrarea de licenta, daca e pe baze de date, ar trebui sa arate ca ai inteles cateva notiuni de baza, cum ar fi normalizarea, integritatea referentiala, legaturile one-to-one, one-to-many si many-to-many. Pe urma vin Join-urile, pe care trebuie sa le intelegi ca sa nu te trezesti cu milioane de inregistrari cand tu nu ai mai mult de 1000 randuri intr-un tabel. Inner Join, Left Join, Right Join, Full Join, Cross Join.

E ok daca nu ti-ai propus sa pastrezi date istorice, dar mi se pare ca ai o mentalitate de genul "merge si-asa". In bazele de date NU merge asa.

Edited by danvlas, 12 June 2017 - 13:42.


Anunturi

Bun venit pe Forumul Softpedia!

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate