Schemat bazy - Skoki narciarskie

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.

1

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
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?

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
0

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

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
  1. 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
  1. 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
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.

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.

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.

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