Schemat bazy - Skoki narciarskie

Odpowiedz Nowy wątek
2014-05-05 11:24
0

Witam,
za zadanie mam zaprojektowanie modelu związków encji bazy danych Skoków narciarskich.
Przeanalizowałem już wszystkie możliwe opcje ale niestety nie mogę znaleźć błędu w mojej koncepcji. Błąd polega na tym że nie można sprawdzić ile skoczył dany zawodnik na danych zawodach.
Proszę o pomoc z tym problemem. W załączniku zamieściłem pliki mojego projektu z programu MySQL Workbench 6.1
Z góry dziękuję za pomoc.

Pozostało 580 znaków

2014-05-05 11:55

generalnie schemat jest zły.

  • Masz zawodników i ci zawodnicy powiązani są WYŁĄCZNIE ze skocznią! Nie da się zapisać ile na danej skoczni skoczył konkretny zawodnik.
  • Złe jest rozbicie na poszczególne typy zawodów (jak kiedyś dojdą nowe zawody albo zmienią się zasady to będziesz musiał całą bazę zmieniać).
  • Nie można przypisać kilku trenerów do jednej reprezentacji natomiast można przypisać jednego trenera do kilku drużyn (co się nie zdarza).
  • Nie można przypisać kilku zawodników do jednej reprezentacji natomiast można przypisać jednego zawodnika do kilku drużyn.

Wg mnie powinno to wyglądać mniej więcej tak:

Zawodnik
PK
FK Nazwa
* zawodnik_id
# reprezentacja_id
pozostałe_pola
Trener
PK
FK Nazwa
* trener_id
# reprezentacja_id
pozostałe_pola
Reprezentacja
PK
FK Nazwa
* reprezentacja_id
pozostałe_pola
Skocznia
PK
FK Nazwa
* skocznia_id
pozostałe_pola
Typy_zawodów
PK
FK Nazwa
* typ_zawodow_id
nazwa
druzynowe
Zawody
PK
FK Nazwa
* zawody_id
# skocznia_id
# typ_zawodow_id
data
pozostałe_pola
Skoki
PK
FK Nazwa
* skok_id
# zawody_id
# reprezentacja_id
# zawodnik_id
numer_skoku
odleglosc
punkty

//w razie jakby zawodnik zmienił reprezentację to żeby było wiadomo z jaką reprezentacją skakał podczas konkretnych zawodów


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.

Pozostało 580 znaków

2014-05-05 12:35
0

Tak właśnie myślałem że cała koncepcja jest zła.
Bazę danych mam zaprojektować jako model związków encji w notacji Oracle (z uwzględnieniem ról).
Już od kilku dni siedzę nad tym i nic nie mogę wymyślić. :/
Czy w tym przypadku też mogę liczyć na waszą pomoc?

Pozostało 580 znaków

2014-05-05 12:47
0
  1. podałem Ci moją koncepcję schematu bazy - przeanalizuj, zobacz czego Ci brakuje i działaj
  2. notacja w jakiej będziesz rysował to rzecz względna.
  3. Pomoc w czym? Pewnie jak zwrócisz się z konkretnym pytaniem lub poprawionym schematem to ktoś Ci coś podpowie

Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.

Pozostało 580 znaków

2014-05-05 21:51
0

Zgodnie z Twoją radą wykonałem projekt bazy. Nie jestem w 100% pewnie czy dobrze zaznaczyłem relacje.
W załączniku projekt.

Pozostało 580 znaków

2014-05-05 23:14
0
  1. cała tabelka Reprezentacja_has_skoki jest błędna ponieważ

    • to nie reprezentacja skacze ale zawodnik
    • skok może mieć tylko jednego zawodnika (w Twojej wersji reprezentację), w sensie, że tego samego skoku nie może oddać kilku zawodników więc powiązanie m..n jest błędne
  2. w tabeli skoki zbędne są pola

    • idskocznia
    • idtyp_zawodow
      ponieważ te dane określone są w tabeli zawody, do której każdy skok ma referencje
  3. w tabeli skoki brakuje pól

    • idZawodnik
    • idReprezentacja
      bo tak jak masz teraz nie jesteś w stanie stwierdzić kto oddał dany skok

Jeśli potrzebował byś jeszcze dodatkowe tabele (bo np. projekt musi ich mieć np. co najmniej 8) to możesz jeszcze dodać dwie o podobnej strukturze, jedną (był_zawodnikiem) pomiędzy tabele zawodnik i reprezentacja a drugą (był_trenerem) pomiędzy tabelę trener i reprezentacja.

był_zawodnikiem
PK
FK Nazwa
* # idZawodnik
* # idReprezentacja
* data_od
data_do
był_trenerem
PK
FK Nazwa
* # idTrener
* # idReprezentacja
* data_od
data_do

Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.
edytowany 1x, ostatnio: abrakadaber, 2014-05-05 23:15

Pozostało 580 znaków

2014-05-06 09:56
0

Dziękuję za sugestie. Naniosłem proponowane zmiany do projektu. Mam nadzieję że teraz będzie dobrze. Jeśli chodzi o ilość tabel to nie mam wymaganej ilości. Baza musi być zaprojektowana poprawnie pod względem merytorycznym nie ilościowym.
W załączniku projekt.

Pozostało 580 znaków

2014-05-06 10:19
0

wydaje mi się, że podstawowa wersja jest OK. Co do ew. rozbudowy to już zależy od tego jakie jeszcze dane chciałbyś tam trzymać. Na dzień dzisiejszy możesz zapisać skoki w poszczególnych turniejach, wyciągnąć kto ile miał punktów po każdym skoku w danym turnieju i na którym był miejscu. Kto ile miał punktów ogólnie w sezonie itp.


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.

Pozostało 580 znaków

2014-05-06 21:44
0

Raz jeszcze dziękuję za zainteresowanie moim problemem i pomoc w jego rozwiązaniu. Myślę że w zupełności mi to wystarczy.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0