Relacje baz danych / klucze złożone

Odpowiedz Nowy wątek
2019-10-08 19:38
0

Cześć, potrzebuję pomocy. Mam taki schemat bazy:

Schemat bazy danych dla przychodni lekarskiej

screenshot-20191008192649.png

Chciałbym dać relację, że każdy pacjent ma jeden adres a każdy lekarz może mieć wiele specjalizacji. U mnie wygląda to tak:

dla pacjentów

screenshot-20191008192926.png

dla lekarzy

screenshot-20191008193008.png

plus mógłby ktoś powiedzieć kilka słów o co chodzi w tym Relationsip Type : Identifying / Non-Identifying i Mandatory Parent/Child

Chciałbym jeszcze, żeby tabela Terminy była kluczem złożonym z dwóch pól IdLekarza i PESEL, tylko tak myślę, że jak ktoś będzie chciał wizytę u tego samego lekarza ale w innej jego specjalizacji to jak to sensownie rozdzielić.

Dzięki za pomoc ! :)

edytowany 2x, ostatnio: MackoSawko, 2019-10-08 20:07
relacja jest synonimem słowa tabela (patrz: https://pl.wikipedia.org/wiki/Model_relacyjny); to, o czym mówisz, to związek / złączenie. - Patryk27 2019-10-08 20:09

Pozostało 580 znaków

2019-10-10 15:25
1

No właśnie, zawsze ktoś lub coś się może pomylić ale nasz system ma zawsze działać.
Dobrą praktyką jest jeżeli dane nie są generowane w twoim systemie to nie narzucasz sztywnych warunków.

Dokładnie. Teoretycznie powinniśmy zakładać nawet nasz własny błąd, i, jeśli są dostępne dwa rozwiązania dla jakiegoś problemu, wybrać to, które zapobiega nie tylko błędom zewnętrznym, ale i naszym. - Silv 2019-10-10 19:57

Pozostało 580 znaków

2019-10-10 15:40
4

Na szczęście nasz system nie implementuje głupich ograniczeń biznesowych i pozwala na zduplikowane PESELE. Dzięki temu nie tylko umrzemy pana ale i kilku postronnych żywych Kowalskich

@yarel - chciałem wstawić w komentarzu, ale coś mi nie działa, więc robię jako osobny post :D

screenshot-20191010154023.png


That game of life is hard to play
I'm gonna lose it anyway
The losing card I'll someday lay
So this is all I have to say
edytowany 1x, ostatnio: cerrato, 2019-10-10 15:41
To dopiero life hack! ;) - yarel 2019-10-10 15:42
Wytłumacz mi proszę jak unikalność peseli zapobiega umrzeniu nieodpowiedniego pacjenta - ralf 2019-10-10 18:56
A skąd pomysł, że unikalność zapobiega? Implikacja była taka: brak unikalności PESELA => problemy. - yarel 2019-10-10 20:04
@yarel: czyli jak problemy są zarówno przy unikalności lub jej braku to tym bardziej system do d... - ralf 2019-10-10 20:33
@ralf: nie rozumiem Twojego pytania. Jeśli mamy 100% pewności, że PESEL jest unikalny, to nie ma ryzyka, że umierając pacjenta wpiszemy PESEL, ale wyskoczy nam ktoś inny. Nie rozumiem, na czym polega Twoja wątpliwość. - cerrato 2019-10-10 20:41

Pozostało 580 znaków

2019-10-15 19:28
0

Hej,

lekko pozmieniałem bazę, wyszło tak :

screenshot-20191015191248.png

Mam pytanie czy dla takich funkcjonalności jak tworzenie pacjentów, lekarzy z przydzielaniem specjalizacji, tworzenie wizyt (termin, lekarz, pacjent) będzie to wystarczające ? Chcę napisać proste REST Api w Springu a do frontu chciałem użyć Angulara.

  1. Mógłby mi ktoś jeszcze pomóc w dobieraniu typów ? Czy BigInt będzie dobrym rozwiązaniem dla numeru telefonu i peselu ?
  2. Czy jak stworzę kilka specjalizacji w bazie "Specjalizacje" to klucz obcy (IdSpecjalizacji) w "Lekarzach" jest okej do przydzielania kilku specjalizacji lekarzom ?

Np. rekordy dla jednego lekarza, który ma kilka specjalizacji
Chodzi mi o coś takiego

IdLekarza Imię/Nazwisko IdSpecjalizacji
1 Jan Kowalski 1 (Lekarz rodzinny)
2 Jan Kowalski 2 (Laryngolog)
3 Jan Kowalski 3 (Kardiolog)

Czy takie rozwiązanie chodź trochę jest dobre ? :D

edytowany 3x, ostatnio: MackoSawko, 2019-10-15 19:29

Pozostało 580 znaków

2019-10-15 19:39
0
MackoSawko napisał(a):

Hej,

lekko pozmieniałem bazę, wyszło tak :

screenshot-20191015191248.png

Wygląda OK...

Mam pytanie czy dla takich funkcjonalności jak tworzenie pacjentów, lekarzy z przydzielaniem specjalizacji, tworzenie wizyt (termin, lekarz, pacjent) będzie to wystarczające ?

Co do modelu relacyjnego to tak.
A co do atrybutów (jakie kolumny mają mieć poszczególne tabele i co powinno się w nich znaleźć), to sam sobie odpowiedz.

Chcę napisać proste REST Api w Springu a do frontu chciałem użyć Angulara.

  1. Mógłby mi ktoś jeszcze pomóc w dobieraniu typów ? Czy BigInt będzie dobrym rozwiązaniem dla numeru telefonu i peselu ?

Nie.
Użyj Varchar lub Char.

  1. Czy jak stworzę kilka specjalizacji w bazie "Specjalizacje" to klucz obcy (IdSpecjalizacji) w "Lekarzach" jest okej do przydzielania kilku specjalizacji lekarzom ?
    Np. rekordy dla jednego lekarza, który ma kilka specjalizacji
    Chodzi mi o coś takiego
IdLekarza Imię/Nazwisko IdSpecjalizacji
1 Jan Kowalski 1 (Lekarz rodzinny)
2 Jan Kowalski 2 (Laryngolog)
3 Jan Kowalski 3 (Kardiolog)

Czy takie rozwiązanie chodź trochę jest dobre ? :D

To jest fatalne rozwiązanie...
Jeżeli lekarz może mieć wiele specjalizacji, to nie jest to poprawne.
Potrzebujesz dodatkowej tabeli która będzie wiązała wiele specjalizacji do wielu lekarzy.
Analogicznie jak zrobiłeś tabelę Terminy.

Pozostało 580 znaków

2019-10-15 19:54
0

Uuuu... polskie nazwy kolumn :(

Nie widzę sensu stosowania nazw dla PK w stylu "IdLekarza". Nazwij to po prostu "Id".

Polskie litery w nazwach kolumn? Auć...

Varchar(20) to może być za mało dla niektórych danych.

edytowany 3x, ostatnio: serek, 2019-10-15 19:57
... AND a.id = b.id AND b.id = c.id AND c.id =d.id A idź pan... z taką bazą, czytać się tego nie da. Ja lubię, kiedy nazwy kolumn mają prefiksy pozwalające się zorientować, z której tabeli kolumna pochodzi. - robertos7778 2019-10-17 23:43
Ale czytaj dokładnie. Mi chodzi o nazywanie PK jako id, a nie FK. - serek wczoraj, 00:18
A FK w tabeli zależnej to jak się będzie nazywać? - robertos7778 wczoraj, 21:52
Normalnie... user_id, post_id, itp. Ale dla PK jestem przeciwny takim nazwom. - serek wczoraj, 22:03

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