Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Access návrh DB

Zdravim, rad bych v Accessu navrhl databazi nasledujici:

Chci mit uzivatele identifikovane nejakym cislem, u nich oddeleni kam spadaji ve firme a jmeno a prijmeni
K temto uzivatelum chci evidovat 14 různých zkoušek. Každá zkouška by měla stejnou strukturu až na typ/označení (1-15). U každé zkoušky bych chtěl vést následující: datum přípravy, datum zkušebního testu, datum ostrého testu, body z ostrého testu. Pokud by uživatel nedal prvni test (mene jak 50 bodu ze sta), sel by na druhy a zase bych chtel mit vedene datum druheho testu a body druheho, pokud by nedal druhy, tak zase datum tretiho a body tretiho. Pokud by nedal treti mel by mel jedno datum zkusebniho testu (jakoby druhy v poradi v ramci jedne zkousky) a pak datum ostreho a a body ostreho. Tzn v praxi by neuspesny clovek mohl postupovat nasledovne:

1234 Petr novak:
zkouska 1
priprava 1.1.2010
pripravny test 12.1.2010
ostry test 13.1.2010
body ostry test 51
(tzn splnil)

zkouska 2
priprava 1.2.2010
pripravny test 12.2.2010
ostry test 13.2.2010
body ostry test 40
ostry test 15.2.2010
body ostry test 42
ostry test 16.2.2010
body ostry test 43
ostry test 17.2.2010
body ostry test 44
pripravny test 18.2.2010
ostry test 19.2.2010
body ostry test 45
ostry test 19.2.2010
body ostry test 46
ostry test 19.2.2010
body ostry test 47
ostry test 19.2.2010
body ostry test 48
ostry test 19.2.2010
body ostry test 49
ostry test 19.2.2010
body ostry test 50 (konecne prosel :D)

Je toto mozne nejak v accessu udelat? pripadne pres co takhle rozsiruciji. Jake mit tabulky a hlavni klice a navázání? Chtel bych pak delat ruzne query treba kolik lidi ma hotovej Test 2 (tzn kde je u osoby v ostrem testu alespon 50 bodu a vice) a tak... a aby pripadne bylo mozne pridavat nove lidi, lidem nastavovat zkousky data zkousek, delat souhrne reporty kolik procent lidi uz ma vsechnz zkousky ....

Díky moc za pomoc.

Předmět Autor Datum
Doporučuju nastudovat: http://cs.wikipedia.org/wiki/Normalizace_datab%C3% A1ze Stačí 3 tabulky: 1…
touchwood 20.08.2010 08:17
touchwood
Mi to nějak neštymuje... Co když stejnou zkoušku dělali dva uživatelé? EDIT: Daleko lepší model IM…
MaSo 20.08.2010 09:47
MaSo
Ale to máš úplně to samý, jen sis navíc udělal číselník na typ zkoušky.
Wikan 20.08.2010 09:58
Wikan
Jsem sice po kalbě, ale tohle není to samé. :-) Pokud v touchwoodově modelu půjdou dva studenti na s…
MaSo 20.08.2010 10:04
MaSo
Já asi právě potřebuju bejt po kalbě, protože pokud beru, že tvoje tabulka Zkouska by se přejmenoval…
Wikan 20.08.2010 10:17
Wikan
Pokud to jde vůbec nějak vztáhnout, tak: moje Zkouška = Test, Typ_Zkoušky = Předmět, Uživatel = Uživ…
MaSo 20.08.2010 10:35
MaSo
chápu co myslíš, ale to by platilo v okamžiku, kdy stejný test dělá více lidí, což IMHO není ten pří…
touchwood 20.08.2010 12:48
touchwood
Stejny test muze delat vic lidi. Vetsinou treba na jeden termin 20 lidi. Nekdo vsak jde na prvni pok…
Novaacek 22 20.08.2010 15:12
Novaacek 22
v tom případě, pokud se jedná o klasickou "písemnou zkoušku", je lepší použít model od MaSa. Techni…
touchwood 20.08.2010 15:48
touchwood
Jen jeste k tomuto uplne prilis nechapu Typ Zkouska a Zkouska. U Typ zkouska bych mel mit zadefinova…
Novaacek 22 22.08.2010 17:41
Novaacek 22
Typ zkouška je tabulka, kde budeš mít taxativně vyjmenovány všechny "typy" neboli varianty zkoušek (…
touchwood 22.08.2010 19:24
touchwood
Pokud to dobre chapu tak zhruba takto: Pokud to dobre chapu tak Typ_Zkouška ID_Typ_Zkouška (PK) /…
Novaacek 22 22.08.2010 21:43
Novaacek 22
Typ_zkouška bych asi trochu rozvinul, komentáře, možná výsledky, apod. - prostě vše, co se daného té…
touchwood 22.08.2010 22:08
touchwood
To pole "typ zkoušky" by nejlépe měla být další tabulka navázaná na Uživatel_Zkouška.
MaSo 22.08.2010 22:18
MaSo
A nemely by ty vysledky byt prave ne u "typ zkouska"(definice F1-F14) ale u "Zkouska"? Protoze prece…
Novaacek 22 23.08.2010 15:05
Novaacek 22
ty výsledky byly myšleny jako správné odpovědi (tedy nápověda/data pro hodnotitele zkoušky) :-), nik…
touchwood 23.08.2010 15:11
touchwood
Ok diky to tam asi nebudu davat, nebot vysledky ani nezname. Zkousky dela externi organizace. jde sp…
Novaacek 22 23.08.2010 15:17
Novaacek 22
Tak to mam : acca.jpg myslite ze je teda navrh ok?
Novaacek 22 23.08.2010 22:40
Novaacek 22
v obrázku máš špatně relaci (one-to-one) jinak pokud "Typ zkouška" má jen jedno pole, tak jsi mohl…
touchwood 23.08.2010 23:29
touchwood
Bylo by hodne neprakticke vzhledem k tvorbe dotazu mit proste teda jen tri tabulky. Uzivatel - info… poslední
Novaacek 22 25.08.2010 18:42
Novaacek 22

Doporučuju nastudovat:

http://cs.wikipedia.org/wiki/Normalizace_datab%C3% A1ze

Stačí 3 tabulky:

1. tabulka "uživatelé", primární klíč id_usera
2. tabulka "předměty" (tj. těch 14 typů zkoušek), primární klíč id_predmetu
3. tabulka "testy" (tj. samotné zkoušky), primární klíč id_zkoušky

je to klasický model m:n, pivot table je tabulka testy, tedy:

uživatelé propojeni na testy v relaci 1:n přes id_usera,
předměty propojeny na testy v relaci 1:n přes id_predmetu

Mi to nějak neštymuje...

Co když stejnou zkoušku dělali dva uživatelé?

EDIT: Daleko lepší model IMHO je:
Mít 4 tabulky Zkouška, Uživatel, vazební tabulku Uživatel_Zkouška a tabulku Typ_Zkouška propojené následovně:

Typ_Zkouška
ID_Typ_Zkouška (PK)

Zkouška
ID_Zkouška (PK)
ID_Typ_Zkouška(FK)

Uživatel
ID_Uživatel (PK)

Uživatel_Zkouška
ID_Uživatel_Zkouška (PK)
ID_Uživatel (FK)
ID_Zkouška (FK)

Jsem sice po kalbě, ale tohle není to samé. :-) Pokud v touchwoodově modelu půjdou dva studenti na stejnou zkoušku, tak musí vznikout nová zkouška.

Ještě jinač. :-) Zkus napsat select který v touchwoodově modelu spočítá počty studentů na jednotlivých zkouškách.

Stejny test muze delat vic lidi. Vetsinou treba na jeden termin 20 lidi. Nekdo vsak jde na prvni pokus nekdo na treti. Nekdo jde na prvni opakovaci predchazejici ostre zkousce nekdo jde na druhy predchazejici trem neuspesnym pokusum.

Nekdo dalsi bude prave zadavat do DB kdy kdo jde, aby pak bylo mozne dohledat napriklad kdo jde 25.8.2010 na ostry test na zkousku F1. A vyhleda mi query lidi kteri jsou na toto datum prihlaseni a at uz jdou na prvni ci desaty pokus. Respektive kdo uz F1 udelal a jaky je prumer bodu, tak ze mi query vezme posledni pokusy nad 50 bodu (ti co prosli) a udela prumer. Ale opet nekdo to mohl dat napoprve a nekdo na paty pokus.

Pripadne jde nejak systemove nastavit, aby druhy opakovaci pokus sel dat, tedy spise byl vzdy presne po 3 neuspesich? Nebo si to musi hlidat ten kdo to tam vklada.

ALe abych se vratil k veci, na jednu zkousku treba ne jeden termin bude 15 lidi na druhou zkousku ve stejny termin 10 lidi. Takze spis to vypada na model MaSo pokud to dobre chapu.

v tom případě, pokud se jedná o klasickou "písemnou zkoušku", je lepší použít model od MaSa.

Technické věci okolo (před)vyplňování a ověřování hodnot se přece řeší až ve formuláři, to jsou z hlediska návrhu databáze nepodstatné věci. Je-li databáze normalizovaná, tohle není a nemůže být problém.

Jen jeste k tomuto uplne prilis nechapu Typ Zkouska a Zkouska. U Typ zkouska bych mel mit zadefinovane napr ze se jedna o zkousku 1-9 a u Zkoušky datum, zda se jedna o pripravny kurz, opakovaci ci ostry test a body ze zkousky?

Ci dokonce by spravne datum melo byt Uzivatel Zkouska?

Pokud to dobre chapu tak zhruba takto:

Pokud to dobre chapu tak


Typ_Zkouška

ID_Typ_Zkouška (PK) // zde to bude vyjmenovane F1-F14 bez nejakych dalsich poli

Zkouška
ID_Zkouška (PK) //treba autonumber
ID_Typ_Zkouška(FK)
//typ zkousky (na urovni formulare upravim aby bylo pevne dano na vyber ze tri moznosti :priprava,opakovani, ostry test)
//datum zkousky (date)
//pocet dosazenych bodu (na urovni formulare se osetri, aby vkladat slo jen v pripade ostre zkousky, jinak bude pole prazdne)

Uživatel
ID_Uživatel (PK)
/jmeno, prijmeni, oddeleni

Uživatel_Zkouška // vazebni tabulka zajistujici relaci kdy jakej uzivatel jde na jakou zkousku a v ramci zkousky na jakej typ kurzu a pripadne kolik v minulosti dosahl bodu
ID_Uživatel_Zkouška (PK)
ID_Uživatel (FK)
ID_Zkouška (FK)

Typ_zkouška bych asi trochu rozvinul, komentáře, možná výsledky, apod. - prostě vše, co se daného tématu týká.

Jinak tam vidím jeden potenciální problém - pole "typ zkoušky" by mělo IMHO být až v tabulce "uživatel-zkouška", protože předpokládám, že se mohou sejít "repetenti" s lidmi, kteří ji dělají poprvé nebo jen jako "přípravu"). Aby sis to ulehčil, můžeš si ve formuláři toto pole "předpočítat" - u prvního výskytu daného uživatele (předpokládám, že příprava je jen u jedné, ostatní jsou "naostro) předvyplníš "příprava", u druhého (pokud již existuje záznam "příprava") vyplníš "ostrý" a v ostatních už to bude "opakování" (tedy existuje-li už jeden ostrý na daný test) - toto lze samozřejmě přizpůsobit potřebám a požadavkům.

A nemely by ty vysledky byt prave ne u "typ zkouska"(definice F1-F14) ale u "Zkouska"? Protoze prece vysledky by bylo historicky dobre evidovat u jednotlivych pokusu. Tzn typ zkouska napr F3, Zkouska (ostry 12.2.2010 40 bodu, ostry 13.2.2010 60 bodu).

"Typ Zkouska" jak ho zde pisete spis chapu jen definice F1-F14. Samotna Zkouska pak dodatecne informace ("typ zkousky" - pripravna lekce, opakovaci lekce, ostry 1. pokus, ostry 2. pokus,...;; Datum;; body).

Reperenti se mohou sejit na ostrem terminu s temi kdo jdou poprve, tzn. "typ zkousky" ktery uvadis (priprava, opakovaci lekce ostry test) by mel byt v "uzivatel zkouska"? Na priprave se sejit znovu nemohou, protoze ti co to opakuji uz pripravu nemaji. Jedine kde se jeste mohou sejit je opakovaci lekci pred ostrym testem (ta je jen pokud 3x neuspeli u ostre zkousky).

To s tim prepoctenim good idea. Vcera jsem prave to nahodil +- tak jak jsem upravoval a doplnil ten prispevek vyse a nefungovalo to uplne presne

Ok diky to tam asi nebudu davat, nebot vysledky ani nezname. Zkousky dela externi organizace. jde spise pouze o evidenci kdo dal, zda se na to uplne odflakl a nebo to nedal napr. o bod a hlavne o ty data, kdy je napr. prihlasen na jake zkousky a terminy.

Zkusim to prehodit pole "typ zkousky" k "uzivatel-zkouska" jako rozeznani pripravz, opakovaci lekce a ostreho testu a snad to bude ok.

Kazdopadne diky moc za rady.

v obrázku máš špatně relaci (one-to-one)

jinak pokud "Typ zkouška" má jen jedno pole, tak jsi mohl jen nevázat tu databázi jako zdroj hodnot pro pole ID typ zkouška, nemusíš dělat relaci.

Zda je to správně, musíš posoudit ty, ty jediný máš přesnou znalost toho, jak celý proces zkoušek funguje a zda ten model doopravdy odpovídá realitě..

Bylo by hodne neprakticke vzhledem k tvorbe dotazu mit proste teda jen tri tabulky.

Uzivatel - info o uzivateli.
Zkouska - pevnych 14*4 zaznamu. Tj 4 zaznamy pro jednu zkousku ve forme:

Typ kurzu Kurz ID zkouska
F1 Exam F1E
F1 Intro F1I
F1 Mock F1M
F1 Revision F1R
F2 Exam F2E
F2 Intro F2I
F2 Mock F2M
F2 Revision F2R
...

a Uzivatel-zkouska kde by bylo datum, ID zkouska, ID uzivatele a ID uzivatel zkouska??

Zpět do poradny Odpovědět na původní otázku Nahoru