Schemat bazy do sprawdzenia

0

Witam wszystkich!
Zrobiłem schemat bazy danych na zaliczenie, ma to być schemat strony do zamieszczania ogłoszeń o pracę.
Bezrobotny się rejestruje podaje dane, dodatkowo definiuje jedno CV. W jednym CV może zdefiniować kilka doświadczeń zawodowych. Pracodawca się rejestruje po czym może dodać ogłoszenie o pracę, może przeglądać CV różnych osób i proponować im swoje oferty. Mój schemat prezentuje na rysunku bardzo proszę o ocenę.

user image

0

Unemployed:

  1. 20 znaków na nazwisko to raczej za mało.
  2. Płeć typu VARCHAR? WTF?
  3. stan cywilny, obywatelstwo, dokument, branża to wszystko powinno być w słownikach.
  4. Adres wydzielony z osoby i również do niego słownik kodów pocztowych, miejscowości.
  5. PESEL nie powinien być ID, bo po pierwsze nie jest unikalny, a po drugie jest wymysłem wyłącznie polskim. Poza tym jak chcesz zmieścić PESEL do pola INT? :|

Curriculum_vitae:

  1. Szkoły, certyfikaty, umiejętności, języki powinny być w oddzielnych tabelach, tak aby można było ich podpiąć dowolną liczbę.

CV_dos_zaw:

  1. Miasto, kraj, stanowisko, to wszystko powinno być w tabelach słownikowych.
  2. Być może firma też.

Employer

  1. Co to jest "Ulica_nr"?
  2. Po co pole Haslo i haslo?
  3. Miejscowość, branża, ulica może też do słowników.
  4. Hasło jako VARCHAR? Dlaczego?
  5. Dlaczego kluczem głównym ma być NIP?
  6. NIP ma 10 lub 13 znaków, nie 11.

Classifieds (cokolwiek to jest)

  1. Stanowisko (wraz z opisem), rodzaj umowy powinny być w słownikach.
  2. Umiejętności, języki, certyfikaty, powinny być w oddzielnych tabelach, tak aby można było podpiąć ich dowolną liczbę.
0

przepraszam za niezbyt wnikliwą analizę struktury, jednakże od razu nasuwają mi się pewne spostrzeżenia:

  1. Struktury nie odzwierciedlają opisanego zadania - tj. elementów związanych z podawaniem przez pracodawcę ogłoszeń o pracę lub przyjmowaniem zgłoszeń (CV) pracobiorców - przez co są to oddzielne schematy wykonujące coś innego - dla mnie bez połączeń.
  2. Nawet jeżeli jest to projekt na zaliczenie powinieneś wiedzieć, czy lub jakie informacje możesz przechowywać w bazie danych i zakres ich zabezpieczenia - jeżeli będzie to obrona pracy, na pewno padnie takie pytanie.
  3. Nr PESEL proponuję jako vchar, a nie int - jest to dyskusyjne, ale wg mnie dzięki temu łatwiej jest sprawdzać wiarygodność tego numeru odwołując się do pojedynczych znaków, a nie traktować tego jako liczbę.
  4. Złączenie tabel Curr.._Vitae i Curr..Vitae_dos.. też raczej jest nieporozumieniem - czy kandydat na stanowisko ma przedstawiać historię wszystkich CV?!
  5. Pola określające płeć, stan cywilny itp. łatwiej jest definiować jako char(1) lub int - w oprogramowaniu po co Ci analizować dłuższe ciągi znaków?!
  6. Tabelę Curr..Vitae warto by było podzielić na dwie - dzięki czemu nabrałoby sensu podawanie kwalifikacji i ich ocenianie.
  7. Z doświadczenia proponuję, aby każde z pól w poszczególnych tabelach zostało uzupełnione jakimiś przedrostkami identyfikującymi tabele - nie jest to przy zapytaniach konieczne, ale powoduje, że w złożonych zapytaniach łatwiej będzie odwoływać się do konkretnych pól.
    tyle sobie z moich uwag, nie chcę się bawić z niekompletną strukturą :)
0

Zaskoczyłeś mnie słownikami. Myślałem że zrobię w formularzu pole z wyborem np dwóch płci ale w przypadku kodów czy miejscowości to kiepska opcja dlatego chciałbym żebyś podpowiedział mi coś więcej w tej kwestii.

0

MiM możesz dokładniej powiedzieć o co Ci chodziło w pkt.1? Co należy zrobić żeby odzwierciedlało zadanie? Z góry wielkie dzięki.

0
Wojtek napisał(a)

Zaskoczyłeś mnie słownikami. Myślałem że zrobię w formularzu pole z wyborem np dwóch płci ale w przypadku kodów czy miejscowości to kiepska opcja dlatego chciałbym żebyś podpowiedział mi coś więcej w tej kwestii.

Konkretnie co?

Robisz tabelę np. Stan_cywilny:

Id Nazwa
1 Panna/kawaler
2 Zamężna/zamężny
3 Wdowa/wdowiec
4 Nie dotyczy

Potem w tabeli Osoba robisz pole Id_stanu_cywilnego z FK na Stan_cywilny.Id

0

A jak wtedy chce wyciągnąć powiedzmy imię nazwisko i stan cywilny to jak wygląda konstrukcja selecta?

0
SELECT O.imie, O.nazwisko, SC.nazwa 
FROM Osoby O JOIN Stan_cywilny SC ON O.stan_cywilny_id = SC.Id
0

dziękuję za zainteresowanie moimi opiniami :)
Twój projekt jest niekompletny :)
ale przecież nikt się nie rodzi od razu :)

0

to dobrze, ale nie osuwamy sie do produ :)

0

Dziś postaram się przedstawić to co zrobilem na podstawie waszych uwag.
Pozdrawiam.

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