[ Miro Spiro @ 30.01.2012. 11:46 ] @
Pozdrav svima.Imam jedno pitanje pa se nadam vašoj pomoci,sugestijama itd.

Naime radim jedan web program koji sam skoro zavrsio a problem je bio sa PHP-om.Pisao sam u http://www.elitesecurity.org/t443328-0-Problemcic-sa-programcicem ovoj temi o njemu. Naravno PHP problem je bio "glupe" prirode ali sam dosao do problema sa MySQL-om. Tj. rekli su mi da baza neodgovara dizajnu i da bi trebalo da se uradi normalizacija podataka.

Sama baza je temelj za program koji se zove registar lijekova. U bazi bi se nalazilo otprilike nekih 1000 lijekova a smatram da veci broj nikako ne bi trebao da bude. Moj program i baza su radili izuzetno dobro ali da kazem ponukan primjedbom da bi baza ubrzala pretrazivanje kao i njeno odrzavanje odlucio sam da poslusam savjet. Baza je napravljena i sve je uredu do dijela kada treba da napravim tabelu za grupe lijekova. Tu nastaje problem. Od tabele vrsta lijekova je sve uredu ali ovo grupa lijekova nikako ne mogu da napravim kako treba .

Ja sam sada ponovo napravio taj dio pa pitanje bi glasilo da li je ovo uredu ili nije (vjerovatno opet nije) te da li bi trebao apsolutno sve grupe razdvojiti ili neke ostaviti uz glavnu tabelu lijekovi posto zna za 2-4 lijeka bude ista podgrupa a onda nema nista narednih 20-30 lijekova.

Postavljam stampanu sliku registra kao i tabele dosadasnjeg rada.

Unaprijed hvala




tabela grupelijekova

Code (sql):

CREATE TABLE grupelijekova
(  grupalijekova_id INT(11)  NOT NULL AUTO_INCREMENT,
   grupalijekova  CHAR(250),
   PRIMARY KEY (grupalijekova_id));
 



tablea glavna grupe lijekova

Code (sql):

CREATE TABLE glavnagrupalijekova
(   glavnagrupalijekova_id INT(11) NOT NULL AUTO_INCREMENT,
    glavnagrupalijekova  CHAR(250) NOT NULL,
    PRIMARY KEY (glavnagrupalijekova_id));
 


table podgrupe lijekova

Code (sql):

CREATE TABLE podgrupelijekova
(  podgrupelijekova_id INT(11)  NOT NULL AUTO_INCREMENT,
   glavnagrupalijekova_id INT(11)UNSIGNED NOT NULL,
   grupalijekova_id INT(11)UNSIGNED NOT NULL,
   podgrupalijekova CHAR(250),
   PRIMARY KEY (podgrupelijekova_id));
 



tabela vrste lekova

Code (sql):

CREATE TABLE vrstelijekova
(  vrstelijekova_id INT(11)  NOT NULL AUTO_INCREMENT,
    vrstalijeka longtext,
     PRIMARY KEY (vrstelijekova_id));
 


tabela lekovi

Code (sql):

CREATE TABLE lijekovi
( lijekovi_id INT(11)  NOT NULL AUTO_INCREMENT,
     grupelijekova_id CHAR(250),
     vrstelijekova_id CHAR(250),
     imelijeka CHAR(100),
     djelovanje longtext,
     indikacije longtext,
     doziranjeinacinprimjene longtext,
     kontraindikacije longtext,
     nezeljeniefekti longtext,
     posebnaupozorenja longtext,
     registriranilijekovi longtext,
     PRIMARY KEY (lijekovi_id));
 



Naravno fale foreign key itd u ovim tabelama itd ali da li je sama struktura dobra.




[ djoka_l @ 30.01.2012. 12:27 ] @
Hm, malo je reći da je dizajn vrlo čudan, ali ne mogu da kažem da li odgovara onome što treba, ili ne. Napravio si vrlo čudnu hijerarhiju, a ne poznajem problem klasifikacije lekova, kao ni šta želiš da postigneš.

Da li jedan lek može da pripada u više grupa? Na primer, pošto je na slici deo koji se zove stomatološki lekovi, da li jedan antibiotik širokog spektra dejstva, može da bude u više grupa, ako se koristi za infekcije kod stomatoloških problema i kod nekih drugih infekcija?

Ako je to slučaj, onda bi bilo bolje da u lekovima imaš samo ID leka (bez idgrupe i idvrste), a da napraviš tabelu:

idgrupe
idglavnegrupe
idpodgrupe
idvrste
idleka

a sve ostale tabele napraviš samo kao id i opis (da ne ubacuješ hijrerahiju).
[ Miro Spiro @ 30.01.2012. 12:42 ] @
Ne jedan lijek pripada samo jednoj grupi, glavnoj grupi i podgrupi tako da lijek moze samo da bude izbrisan nista drugo. Ja sam bio napravio bazu u kojoj je u jednoj tabeli sve i zauzima neka 2 MB. Meni je dobra jer ionako radi na localhostu a preko mreze sam nakacio 20 racunara na tu bazu i nije bilo nekog zastoja.Ovo radim zato jer svi kazu da se ne radi tako kako sam ja uradio prvi put.
[ farmaceut @ 31.01.2012. 20:35 ] @
Sigurno ce ti se jedan "lijek" javiti u vise od jedne grupe....Vidjeo sam dosta medicinskih baza gdje je ovaj "previd" stvarao dosta problema.

Ove grupe su ti u stvari ATC (anatomsko terapijska) klasifikacija ljekovitih supstanci, i predstavlja mjesto na koje supstanca djeluje.
Ovo sto zoves "lijek" je INN (internacionalni nezasticeni naziv) ljekovite supstance.

Jedan lijek moze da djeluje na vise mjesta.
Na primejr acetil-salicilna kiselina (Andol, Aspirin) ima djestvo na nervni sistem kao analgetik (N) i na krvni sistem, za zgrusavanje (B),te moze da se klasifikuje kao:

N02BA01
B01AC06
A01AD05

U sustini, obavezno odvoji INN u posebnu tabelu, ATC klasifikaciju u posebnu tabelu, pa pravi "cross" -kombinacije

Sad kako ces "razbiti" ATC tabelu, tebi na volju. (Prvo slovo je anatomska grupa, onda 2 broja predstavljaju podgrupru.... i tako dalje.)





[ Miro Spiro @ 01.02.2012. 21:57 ] @
Ma da lijek 2 vrste genericko i fabricko ime, aktivna supstanca itd. Anatomska klasifikacija tip receptora na kojima djeluju. Znam to medicina mi je bliza nego dizajn baza.Zamislio sam ja to bas tako kako si napisao i onda da na tabele nakacim foreign key-ove i pomocu left joina povezem a imam i nekakvog PHP koda od jednog projekta CMS-a koji mogu tu iskoristiti. Sada mi je cijeli registar u papirnoj verziji. Napravio sam obicnu bazu s jednom tabelom i polako unosim lijekove da vidim s cim raspolazem i da imam laksi uvid a onda polako cu prebacivati u ovu novu bazu sve podatke. Problem je sto nisam mogao tako da objasnim jer ne znam da li bi me mogli svi shvatiti.Ocigledno se vidi da se bavis bas ovom problematikom

Hvala na pomoci

[Ovu poruku je menjao Miro Spiro dana 01.02.2012. u 23:08 GMT+1]

[Ovu poruku je menjao Miro Spiro dana 01.02.2012. u 23:21 GMT+1]