[ sadux @ 07.08.2006. 17:08 ] @
Kako napraviti najbolje resenje,i uostalom koje se koristi kod baza gde se cesto ponavljaju polja tipa:
Jel blizanac > jeste,nije,
Pol > musko,zensko

U pitanju je mdb baza i ja sam napravi posebne tabele koje sa spojio..

Znaci imam tabelu pol i u njoj dva polja > musko,zensko. Poblem je sto ja ne znam da li sam ja to dobro spojio,pa ako moze neko da mi malo pomogne..

Hvala.
[ jajo @ 07.08.2006. 18:41 ] @
Koji je spol i dal je blizanac je atribut entiteta osobe. Pošte se nemože napraviti idealan sustav uobičajeno da se ovakve stvari (koje imaju fiksi broj mogućih vrijednosti) ne vežu na tablice koje imaju popis mogučih vrijednosti, već se koriste tzv. domene. Dakle u polje blizanac se može unjeti J ili N (je ili nije) i stavi se check constraint na te dvije vrijednosti.
E sad da je nešto zaista fiksna vrijednost jako ovisi za koga se radi sustav. ukoliko se radi program za videoteku, onda je M/Ž dovoljno za spol. Međutim ukoilko se to treba implementirati u kliniku za promjenu spola, više nije dosta (inaće medicinske ustanove zaista imaju 4 mogućnosti kod unosa spola). Pa se zbog toga neke stvari kasnije moraju malo proširivati, ali je manja drama to proširivati po nekoj potrebi nego održavat još 15 tablica u kojima piše DA/NE, Ujutro/Popodne, Volim/Nevolim i slično.
[ chachka @ 07.08.2006. 23:06 ] @
Slazem se da je pol atribut kojem ne treba posebna tabela. Takodje pol ima cetiri vrednosti po ISO 5218 sto znaci da se pol resava na primer
Code:

CREATE TABLE Osobe
(
  sifra INTEGER NOT NULL,
  ime VARCHAR(15) NOT NULL,
  pol CHAR(1) NOT NULL,

  CONSTRAINT pk_oso
    PRIMARY KEY (sifra),

  CONSTRAINT ch_oso_pol
    CHECK (pol IN ('0', '1', '2', '9'))
);


Sto se tice blizanaca, osoba 1 je blizanac osobi 2 i obratno. Reci 'je blizanac' indiciraju relaciju izmedju dve osobe. Onda mu dodje da se to resava sa
Code:

CREATE TABLE Blizanci
(
  prvorodjen INTEGER NOT NULL,
  drugorodjen INTEGER NOT NULL,

  CONSTRAINT pk_bli
    PRIMARY KEY (prvorodjen, drugorodjen),

  CONSTRAINT ch_bli_razlicite_osobe
    CHECK (prvorodjen <> drugorodjen),

  CONSTRAINT fk_bli_prvorodjen
    FOREIGN KEY (prvorodjen) REFERENCES Osobe(sifra)
    ON DELETE RESTRICT ON UPDATE CASCADE,

  CONSTRAINT fk_bli_drugorodjen
    FOREIGN KEY (drugorodjen) REFERENCES Osobe(sifra)
    ON DELETE RESTRICT ON UPDATE CASCADE
);

Posebno pitanje je sta je sa trojkama, cetvorkama,...
[ sadux @ 11.08.2006. 01:33 ] @
Ok ljudi,hvala..

Ali meni je problem jer ja sad treba da ispravim tu bazu..Naime ona je vec napunjena sa oko 20.000 zapisa..!!

Kako to sad odraditi...
[ chachka @ 11.08.2006. 11:00 ] @
Tesko je odgovoriti na ovo pitanje bez originalne strukture i bez znanja o sistemu koji modeliras.

1. Pol

U pocetnoj tabeli imas atribut koji referencira ka tabeli u kojoj drzis spisak polova.

Taj atribut vec sadrzi podatke o polu nekako kodirane (('M', 'Z') ili ('1', '2') ili ('Y', 'N')). Dovoljno je da tom atributu ogranicis opseg vrednosti, prekines vezu sa tabelom polova i odbacis tabelu polova.

Ako hoces da menjas kodiranje podataka o polu (naprimer iz 'M' u '1', iz 'Z' u '2') tada dodajes nov atribut nad njim postavljas ogranicenja i sa UPDATE popunis taj atribut na osnovu prvog atributa nesto poput
Code:

UPDATE ime_tabele
   SET ime_drugog_atributa = IIF(ime_prvog_atributa = 'M', '1', '2')

2. Blizanci

Ne znam sta modeliras. Mozda ti moja predlozena relacija 'Blizanci' uopste ne odgovara. Mozda nisu oba blizanca upisana u tabelu osoba. Tada ti ostaje da bliznce uvedes kao atribut mada mi nije jasno cemu takva informacija sluzi?

Jedino sto mi pada na pamet je situacija sa dva blizanca jedan upise gimnaziju prirodni smer, a jedan neku drugu gimnaziju drustveni smer, pa ne idu u iste smene i onda se menjaju na kontrolnim zadacima. U tom slucaju bi podatak da osoba (ucenik) ima blizanca mogla biti upozorenje nastavniku da obrati paznju na potencijalno varanje. Mada mi to previse lici na Lambrozovu teoriju da se po obliku lica moze prepoznati kriminalac:)
[ sadux @ 13.08.2006. 20:41 ] @
Ispravio sam polja koja su bila 'blizanci'..Napravio sam novo polje u glavnoj tabeli i od ukupno 15.000 bilo je 200 blizanaca sto sam rucno ispravio..

E sad mi nije jasno kako da napravim za pol?
Jel mi treba dva polja za pol,kao recimo:musko pa poplje za yes/no;pa onda sledece polje zensko sa yes/no ili nesto drugo...

Ako moze neko da mi pojasni malo kako se to radi u accesu..

Hvala puno..
[ sadux @ 13.08.2006. 21:03 ] @
I jos jedna stvar koja mi zadaje probleme,a to je sto mi treba poslje koje glasi 'koje je dete po rodjenju?prvo,drugo,trece itd..
Kako to odraditi..
Pretpostavlja se da je cesto upisivanje : prvo,drugo eventualno trece..

Kako to resiti?

Hvala.