miki555
15.03.2006, 16:20:03
Witam wszytskich na forum!!
Moj problem polega na tym, że od dłuższego czasu walcze ze skonstruwaniem bazy, która spełniałaby następuje kryteria:
1) Kazdy student należy do jakies grupy (tylko do jednej)
2) Każda z grup ma przypisane konkretne przedmioty
3) Grupy sa przypisane do prowadzacych
4) Kazdy z nauczycieli moze uczyc wiecej niz jeden przedmiot ale zarazem jeden przedmiot moze byc prowadzony przez więcej niz jednego prowadzacego
5) Kazdy student otrzymuje ocene z danego przedmiotu u odpowiedniego prowadzacego
Czy ktos ma pomysł na skonstruwanie takiej relacyjnej bazy?
Byłbym wdzięczny
dr_bonzo
15.03.2006, 16:53:22
Praca domowa? Projekt na kurs z baz danych? Nie odrabiamy tu prac domowych.
Nawet nie pokazales z czym masz problemy, co udalo ci sie zrobic.
Zlecenie -- to na inne forum.
miki555
15.03.2006, 21:42:37
Witam
Mam screen bazy zrobiony w accesie, ale nie bardzo wiem jak go tutaj dodac, bo z tego co widze znacznik img wskazuje na odnośnik do strony, a swojej nie posiadam, więc troche ciężko to pokazać!!
FiDO
15.03.2006, 21:56:59
Do umieszczania screenow sluza serwisy takie jak np.
imageshack, nie trzeba miec swojego serwera.
nospor
15.03.2006, 22:01:11
student:
Kod
id
id_grupa
nazwisko
....
grupa:
Kod
id
nazwa
....
przedmiot:
Kod
id
nazwa
....
grupa_przedmiot_prowadzacy:
Kod
id_grupa
id_przedmiot
id_prowadzacy
prowadzacy:
Kod
id
nazwisko
....
ocena:
Kod
id_student
id_przedmiot
....
Tak na szybko
miki555
16.03.2006, 08:18:14
Witam
Na wstępie dziękuje za wszelkie odpowiedzi. Powiem troszke szerzej, baza będzie mi potrzebna do portalu internetowego. Dlatego też potrzebuje jak najoptymalniejszej bazy, która będzie obsługiwana z poziomu php. Poniżej podaje screen z tego co narazie mam:

Wiem, że troszkę może wydawać sie to zamotane, ale chce zeby tak było że każda z grup ma charakterystyczne dla siebie przedmioty i tu właśnie troszke sie pogubiłem, bo może można by to zrobić troche sprytniej jakoś, ale może wasze oko dostrzeże w tej bazie jakies nieprawidłowości. Pozatym jak sadzę potrzbne będzie jeszcze w tabelach oprócz loginów i haseł, id_sesji, ponieważ każdy użytkoenik będzie musiał się logować do systemu. Dodam jeszcze, może to cenna informacja, że studenci bedą mieli możliwość po zalogowaniu przesyłanie swoich plików na serwer, więc jeśli ktoś już widzi istotną cechę, która przydałaby się w bazie do odrożnienia, który plik pochodzi od którego usera to byłbym wdzięczny.
Dziekuje
nospor
16.03.2006, 08:38:02
Cytat
Pozatym jak sadzę potrzbne będzie jeszcze w tabelach oprócz loginów i haseł, id_sesji, ponieważ każdy użytkoenik będzie musiał się logować do systemu
A po co id sesji pamietac w bazie? Sesja jest pamietana przez serwer, ty nie musisz.
Cytat
Dodam jeszcze, może to cenna informacja, że studenci bedą mieli możliwość po zalogowaniu przesyłanie swoich plików na serwer, więc jeśli ktoś już widzi istotną cechę, która przydałaby się w bazie do odrożnienia, który plik pochodzi od którego usera
Mozesz dorobi tabele, w ktorej piszesz jaki plik na dysku nalezy do jakiego usera. Mozesz tez stworzyc katalogi, ktore bedą sie nazywaly tak, jak id danego studenta. Pliki danego studenta bedziesz wrzucal do danego katalogu. No i oczywiscie mozesz tez połączyć obie te metody
miki555
16.03.2006, 13:41:14
Cytat
Mozesz dorobi tabele, w ktorej piszesz jaki plik na dysku nalezy do jakiego usera. Mozesz tez stworzyc katalogi, ktore bedą sie nazywaly tak, jak id danego studenta. Pliki danego studenta bedziesz wrzucal do danego katalogu. No i oczywiscie mozesz tez połączyć obie te metody
Można jakos szerzej rozwinąć. Moze jakis przykład tabeli i miejsce w którym mogła by się znajdować.
Jeśli dobrze rozmumiem to mniej wiecej coś takiego:
Kod
Id_student | nazwisko | imie | login | haslo | id_grupy | id_katalog
Kod
Id_katalog | id_plik
Kod
Id_plik | nazwa_pliku
Pozdrawiam
nospor
16.03.2006, 13:54:01
przy zalozezniu, ze katalog ma miec nazwe id_studenta, to pole id_katalog w studencie jest zbędne.
dodatkowa tabela:
Kod
id_student
nazwa_pliku
opis_pliku
typ_pliku
.....
Ta tabela jest poto, bys nie musial latac po dysku i szukac plikow dla kolesia, tylko po tabeli. oczywiscie musi sie ona zgadzac z zawartoscią na dysku
Ale mozna ja olać i zostawic tylko podzial dysku na katalogi. Ale to juz zalezy od Ciebie, jak ci bedzie wygodniej
edit: oczywiscie tabele co dodales w poprzednim poscie, są zbędne
miki555
16.03.2006, 14:33:14
A nie ma tam jeszcze jakies tabeli łączącej, bo przy tym założeniu jeden student może mieć tylko jeden plik jeżeli tak jak mowisz id_studenta będzie sie łączyć z id_studenta z tabeli z plikami. Po drugie słyszałem że jest jeszcze możliwość, trzymania plików w bazie, czy takie cos ma sens jeżeli tak to w jaki sposób to zrealizować.
Pozdrawiam
bigZbig
16.03.2006, 14:40:37
Kilka uwag dotyczacych stylu.
W encji (tabeli) grupy masz id_grupa a w pozostalych encjach jako klucza obcego uzywasz id_grupy. Moim zdaniem lepsze byloby zachowanie identycznego brzmienia tego pola we wszystkich encjach tym bardziej ze robisz tak we wszystkich pozostalych przypadkach.
Dobra praktyka jest oczywiscie podawanie nazw w mianowniku, poza tym nie radze stosowac skrotow typu id_spec (oczywiscie to sprawa indywidualna), ale nie raz juz sie zlapalem na tym ze jak przychodzi co do czego to sie czlowiek zastanawia czy to bylo id_spec, czy id_specjal.
I jeszcze nazwy encji - nie jestes konsekwentny
grupy_pracownicy - DOBRZE
grupa_przedmiot - ZLE - powinno byc grupy_przedmioty
nospor
16.03.2006, 14:41:54
Cytat
A nie ma tam jeszcze jakies tabeli łączącej, bo przy tym założeniu jeden student może mieć tylko jeden plik jeżeli tak jak mowisz id_studenta będzie sie łączyć z id_studenta z tabeli z plikami.
A skąd ci to przyszlo do glowy? Przeciez ta tabela co ci podalem, jest wiąząca.
rekordy:
std1, plik_1, opis,...
std1, plik_2, opis,...
//....
std2, plik_x, opis,...
std1, plik_y, opis,...
i tak dalej
Cytat
Po drugie słyszałem że jest jeszcze możliwość, trzymania plików w bazie, czy takie cos ma sens jeżeli tak to w jaki sposób to zrealizować.
Pole typu BLOB. ale lepiej tego nie uzywac.
miki555
16.03.2006, 16:40:36
Oki to teraz uściślijmy:
Plik musi być widoczny u danego usera , ale tez w danym przedmiocie czy w takim razie tabela o któej mówiłes:
Kod
id_student
nazwa_pliku
opis_pliku
typ_pliku
.....
może być dołączona w taki sposób:
student:
Kod
id_student
nazwisko
imie
.....
studenci_oceny:
Kod
id_student
id_przedmiot
id_ocena
pliki:
Kod
id_student
nazwa_pliku
opis_pliku
typ_pliku
.....
i tak połączenie jest między id_student z tabeli (studenci _oceny) a id_student z tabeli (pliki). Czy to zda egazmin?
nospor
16.03.2006, 16:53:13
Cytat
Plik musi być widoczny u danego usera , ale tez w danym przedmiocie
To czemu dopiero teraz o tym mowisz?
mozesz wiec jeszcze porobic podkatalogi, o id przedmiotu. ale to juz kosmetyka.
Dodaj wiec pole jeszcze id_przedmiot.
Cytat
id_student
id_przedmiot
nazwa_pliku
opis_pliku
typ_pliku
jesli nie zrobisz podkatalogow w studencie, to dla roznych przedmiotów, pliki te same bedą musialy miec rozne nazwy. ale to pestka
miki555
16.03.2006, 17:17:12
hmm
Tak dużo o tych katalogach i podkatalogach mowisz, że zaczyna mnie to zastanawiać czy to się sprawdzi w tym przypadku. Otóż baza nie będzie zawierała na stałe użtykowników, co semestr będą się oni zmieniać i poratal będzie musiał być tak zrobiony aby prowadzacy mógł z pozimu php wprowadzić nowe osoby do bazy co równa się z przydzeleniem im kont na nowe pliki, a chciałbym żebyn nie trzeba było za każdym razem przebudowywać struktury katalogow. Musi to tak działać żeby admin mógł wszytsko obsugiwać z poziomu php! Mam nadzieje ze tak mniejwiecej jasno wyraziłem o co mi chodzi.
Dziekuje
nospor
16.03.2006, 17:20:32
i w czym problem? pojawiają sie nowi studenci, dostają nowe id i po klopocie. gdu student dodaje nowy plik, to skrypt patrzy czy istnieje dla niego katalog. jesli nie - to tworzy. admin tego nie musi robic. to pojdzie z automatu
Mozesz tez napisa skrypt, ktory usunie katalogi danego studenta. ja nie widze zaddnego problemu...
bigZbig
17.03.2006, 10:01:05
Po co ta zabawa z katalogami. Skoro studenci beda dodawac pliki z poziomu strony, a wykladowcy te pliki pobierac z poziomu strony to odzwierciedlanie czesci tabel na poziomie katalogow jest moim skromnym zdaniem zadaniem zbednym. Wystarczy jeden katalog na pliki. W momencie dodawania pliku system zmieni jego nazwe dodajac prefix bedacy id studenta i to calkowicie wystarczy do odroznienia ktory plik do kogo nalezy. Nazwy plikow wystaczy zapisac w odpowiedniej tabeli w bazie danych, dodac klucz obcy z id studenta oraz drugi z przedmiotem i po sprawie. Nie trzeba dbac o spojnosc struktury katalogow z baza danych.
nospor
17.03.2006, 10:06:43
masz rację. Nie jest to niezbędne

Ja to zaproponowalem z przyzwyczajenia. Lubie mieć porządek na dysku. A to zaden wysilek stworzyc katalog. Moze ciut większy od dodania prefixu.
ale prefix trzeba by też dodawac na podstawie przedmiotu. No bo chyba moze zdarzyc się, ze koles dla rożnych przedmiotów wrzuci pliki, o tej samej nazwie.
edit:
Cytat
Nazwa to wlasciwie moze sie ograniczac do id pliku
może
bigZbig
17.03.2006, 10:16:15
Nazwa to wlasciwie moze sie ograniczac do id pliku ktory zostal mu przydzielony w bazie w momencie dodawania, a powiazanie z uzytkownikiem, przedmiotem i pierwotna nazwa pliku moze byc przechowywana w bazie danych.
miki555
17.03.2006, 11:59:37
hmm
Tak w pierwszej chwili pomysł bigZbig wydał mi się sensowniejszy, ale podejrzewam, że wszytsko okaże sie w praktyce.
BigZbig czy mogłbyś podać przykład tej tabeli i ewentulnie najlepsze miejsce jej dołączenia?
Pozdrawiam
nospor
17.03.2006, 12:04:46
@miki przeciez bigZbig mowil o tabeli, ktora juz jest:
Cytat
id_student
id_przedmiot
nazwa_pliku
opis_pliku
typ_pliku
No chyba ze bigZbig mial jeszcze co innego na mysli...
bigZbig
17.03.2006, 12:13:46
Cytat(miki555 @ 2006-03-17 12:59:37)
czy mogłbyś podać przykład tej tabeli i ewentulnie najlepsze miejsce jej dołączenia?
No nie zartuj. Kolego robisz sie leniwy. Popatrz na tabele, ktora ci zaproponowal nospor - doskonale sie nada (dodaj tylko id i ewentualnie date przeslania pliku), a sposob doloczenia rozpoznasz po kluczach obcych.
----
@nospor uprzedziles mnie
Aztech
17.03.2006, 12:28:26
Sam tworze rozbudowanynposrtal o podobnej do ciebie funkcjonalności + parę wzbogaceń i moge Ci podpowiedzieć, że sposób bigZbiga jest najlepszy, zamień nazwę pliku ma id, w bazie zapamiętaj pierwotną nazwę no i nie zapomnij sobie zapisać gdzieś rozszerzenia (MIME TYPE)
miki555
17.03.2006, 12:36:47
HEH, rzeczywiscie pytanie było głupie. Sorki. Dzieki wszytskim za rady. Niedlugo zabiore sie za robote i bede pisał na forum jak bede miał konkretniejsze problemy a nie takie głupie hehe.
Pozdrawiam wszytskich
nospor
17.03.2006, 12:38:22
Cytat
i nie zapomnij sobie zapisać gdzieś rozszerzenia
jest przeciez kolumna
typ_pliku 
ps: no i wyszlo ze namieszalem z tymi katalogami, hehe. No nic. Faktycznie może zamotalem jak na początek. Rzecz gustu. Jak pisalem, wole mieć porządek
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.