Struktura bazy danych, wiele zależności, tabele asocjacyjne

0

Cześć mam takie pytanie :
Mam do zrobienia bazę danych, przechowującą dane takie jak:

  • firmy (nazwa firmy, numer identyfikacyjny)
  • działy firmy (nazwa działu)
  • pracownicy (imię, nazwisko, pesel, stanowisko)
    Założenia są takie:
  • firma może należeć pod inną firmę,
  • pracownik może podlegać pod innego pracownika, firmę, bądź dział, może również pracować w wielu miejscach,
  • nie każda firma musi mieć działy,
  • i najważniejsze - z pracownikiem, firmą bądź działem można się skontaktować na wiele sposobów: tj. firma może mieć np. 2 adresy email, oraz 3 numery telefonu (w tym jeden komórkowy, a reszta stacjonarne), może mieć też ich dużo więcej lub...wcale.
    Jak to dobrze ugryźć?
    Wstępnie stworzyłem po prostu tabele:
  • firmy,
  • pracownicy,
  • działy,
  • adresy email,
  • numery telefonu,
    A następnie łączyłem to w ten sposób, że tworzyłem dodatkowe tabele asocjacyjne, typu:
  • pracownicy_pracujący_w_firmie (id pracownika, id firmy),
  • firmy_emaile (id firmy, id emaila),
    Teoretycznie jest to sensowne, i w sumie nawet spotkałem się z takim samym stwierdzeniem gdzieś na stacku, bo ktoś już zadawał pytanie prawie identyczne jak moje i odpowiedzieli mu, żeby własnie zrobić co w ten deseń. Mi jednak nie podoba się, aż taka liczba tabel, bo wydaje mi się, że właśnie przez to coś nie gra.
    Czy jest jakaś inna sensowna koncepcja, żeby to zaprojektować?
3

Musiałbym to sobie rozrysować a nie mam w tym momencie jak ale skoro

  • pracownik może podlegać pod innego pracownika,
    to ogarniesz dodatkową kolumną w tabeli "pracownicy" np. "id_przelozonego" bo przecież szef to też pracownik wystarczy tylko wpisać tam ID pracownik który jest szefem danego pracownika :)

  • pracownik może podlegać pod firmę lub wiele firm
    myślę, że tutaj musiałbyś utworzyć tabelę łączącą "pracowników" z "firmami" np. "pow_prac_firma" i miałbyś kolumny: id, id_prac, id_firma i już masz ogarniętą sprawę z firmami

to samo robisz z działami bo jeden pracownik może pracować w wielu działach (z tego co zrozumiałem)

tutaj jeszcze trzeba by się było zastanowić czy musi być połączenie między firmami a działami (bo przecież nie każda firma ma wszystkie działy). Ale z tego co czytałem nie ma takiego wymagania, więc powinno być OK.

Mówię to tak z głowy więc rozrysuj to sobie i zobacz czy wszytko Ci się zgrywa

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