Baza danych - projekt

WSTĘP Baza danych, którą postanowiłam zrealizować będzie służyć do przechowywania informacji na temat zabiegów wykonywanych w specjalistycznej przychodni. Tabele, które postanowiłam umieścić w mojej bazie to: PACJENCI – zawierająca dane, które każdy z pacjentów będzie podawał przy rejestracji, LEKARZ – zawierająca dane lekarzy pracujących w przychodni, SPECJALIZACJA – zawierająca specjalizacje lekarzy, ZABIEGI - zawierająca zabiegi dostępne do wykonania w przychodni, WYKONANE – zawierająca zabiegi wykonane w przychodni TWORZENIE TABEL Tworzenie tabel odbywa się za pomocą polecenia CREATE TABLE.

WSTĘP

Baza danych, którą postanowiłam zrealizować będzie służyć do przechowywania informacji na temat zabiegów wykonywanych w specjalistycznej przychodni. Tabele, które postanowiłam umieścić w mojej bazie to:

  • PACJENCI – zawierająca dane, które każdy z pacjentów będzie podawał przy rejestracji,
  • LEKARZ – zawierająca dane lekarzy pracujących w przychodni,
  • SPECJALIZACJA – zawierająca specjalizacje lekarzy,
  • ZABIEGI - zawierająca zabiegi dostępne do wykonania w przychodni,
  • WYKONANE – zawierająca zabiegi wykonane w przychodni

TWORZENIE TABEL Tworzenie tabel odbywa się za pomocą polecenia CREATE TABLE.

PACJENCI

Tabela PACJENCI będzie zawierać następujące informacje:

  • ID pacjenta, niezbędne do utworzenia późniejszych relacji z innymi tabelami,
  • imię, nazwisko, numer dowodu (nie może pozostać niewypełnione) jako dane potrzebne do identyfikacji klienta,
  • numer telefonu oraz miejscowość jako dane kontaktowe, A także data rejestracji.

LEKARZ

Tabela LEKARZ będzie zawierać następujące informacje:

  • ID lekarza, niezbędne do utworzenia późniejszych relacji z innymi tabelami,

  • ID specjalizacji

  • imię, nazwisko jako dane potrzebne do identyfikacji lekarza,

  • numer telefonu jako dane kontaktowe

    SPECJALIZACJA

Tabela SPECJALIZACJA będzie zawierać następujące informacje:

  • ID specjalizacji , niezbędne do utworzenia relacji tabelą LEKARZ,

  • nazwa specjalizacji

    ZABIEGI

Tabela ZABIEGI będzie zawierać następujące informacje:

  • ID zabiegu, niezbędne do utworzenia późniejszych relacji z innymi tabelami,
  • nazwę zabiegu,
  • koszt zabiegu

WYKONANE

Tabela WYKONANE będzie zawierać następujące informacje:

  • ID pacjenta, który miał wykonany zabieg,
  • ID lekarza który zabieg wykonał,
  • ID zabiegu, który został wykonany,
  • datę zabiegu

RELACJE

Tabela PACJENCI zawiera klucz główny ID_PAC. Tabela LEKARZ zawiera klucz główny ID_LEK oraz klucz obcy ID_SPEC, który odwołuje się do klucza głównego ID_SPEC w tabeli SPECJALIZACJA. Tabela SPECJALIZACJA zawiera klucz główny ID_SPEC. Tabela WYKONANE jedynie klucze obce: ID_PAC, który odwołuje się do klucza głównego ID_PAC w tabeli PACJENCI, ID_LEK, który odwołuje się do klucza głównego ID_LEK w tabeli LEKARZ ID_ZAB, który odwołuje się do klucza głównego ID_ZAB w tabeli ZABIEGI. Tabela ZABIEGI zawiera klucz główny ID_ZAB.

SELECTY

  1. Wyświetl wszystkie informacje z tabeli ZABIEGI w kolejności od najbardziej do najmniej kosztownego. SELECT * FROM ZABIEGI ORDER BY KOSZT DESC;

  2. Wyświetl nazwy miejscowości, z których pochodzą pacjenci oraz sumy kosztów wykonanych zabiegów dla pacjentów z danej miejscowości. Dane będą posortowane w kolejności rosnącej od najmniejszego do największego kosztu. SELECT MIEJSCOWOSC, SUM(KOSZT) AS SUMA_KOSZTOW FROM PACJENCI, ZABIEGI, WYKONANE WHERE PACJENCI.ID_PAC=WYKONANE.ID_PAC AND ZABIEGI.ID_ZAB=WYKONANE.ID_ZAB GROUP BY MIEJSCOWOSC ORDER BY SUMA_KOSZTOW DESC;

  3. Wyświetl imię i nazwisko oraz zabiegi pacjenta, który zarejestrował się jako ostatni w klinice. Pierwsza litera imienia i nazwiska pacjenta ma być duża, kolejne małe. SELECT INITCAP(IMIE) AS IMIE,INITCAP(NAZWISKO) AS NAZWISKO, NAZWA FROM PACJENCI, WYKONANE,ZABIEGI WHERE PACJENCI.ID_PAC=WYKONANE.ID_PAC AND WYKONANE.ID_ZAB=ZABIEGI.ID_ZAB AND DATA_REJ=(SELECT MAX(DATA_REJ) FROM PACJENCI);

  4. Wyświetla imiona i nazwiska oraz miejsce zamieszkania kobiet, które miały wykonany nadroższy zabieg w klinice. SELECT IMIE, NAZWISKO FROM PACJENCI, WYKONANE, ZABIEGI WHERE PACJENCI.ID_PAC=WYKONANE.ID_PAC AND WYKONANE.ID_ZAB=ZABIEGI.ID_ZAB AND IMIE LIKE ‘%A’ AND KOSZT=(SELECT MAX(KOSZT) FROM ZABIEGI);

  5. Wyświetl imiona i nazwiska oraz zabiegi pacjentów, którymi zajmował się ten sam lekarz, który wykonał WYROSTEK. SELECT PACJENCI.IMIE, PACJENCI.NAZWISKO, NAZWA FROM PACJENCI, WYKONANE, ZABIEGI, LEKARZ WHERE PACJENCI.ID_PAC=WYKONANE.ID_PAC AND WYKONANE.ID_ZAB=ZABIEGI.ID_ZAB AND LEKARZ.ID_LEK=WYKONANE.ID_LEK AND WYKONANE.ID_LEK=(SELECT LEKARZ.ID_LEK FROM LEKARZ,ZABIEGI,WYKONANE WHERE WYKONANE.ID_ZAB=ZABIEGI.ID_ZAB AND LEKARZ.ID_LEK=WYKONANE.ID_LEK AND NAZWA=‘WYROSTEK’);

  6. Wyświetl zabiegi, jako ZABIEG, które były wykonane dla pacjentów zamieszkujących miejscowości rozpoczynające się na literę ‘C’ a także ich koszt przekracza 200 złotych. SELECT NAZWA AS ZABIEG FROM ZABIEGI, WYKONANE, PACJENCI WHERE ZABIEGI.ID_ZAB=WYKONANE.ID_ZAB AND WYKONANE.ID_PAC=PACJENCI.ID_PAC AND IMIE LIKE ‘C%’ AND KOSZT>200;

  7. Wyświetl wszystkie zabiegi które wykonali lekarze, których specjalizacja ma literę ‘E’ na drugim miejscu, a także daty wykonania tych zabiegów (jako WYKONANE_DNIA). Zabiegi mają być posortowane alfabetycznie. SELECT ZABIEGI.NAZWA,DATA_ZAB AS WYKONANE_DNIA FROM ZABIEGI, WYKONANE, LEKARZ, SPECJALIZACJA WHERE ZABIEGI.ID_ZAB=WYKONANE.ID_ZAB AND WYKONANE.ID_LEK=LEKARZ.ID_LEK AND LEKARZ.ID_SPEC=SPECJALIZACJA.ID_SPEC AND SPECJALIZACJA.NAZWA LIKE ‘_E%’ ORDER BY ZABIEGI.NAZWA;

  8. Wyświetl specjalizacje, którą posiadają lekarze wykonywujący zabiegi o koszcie wyższym niż średni koszt zabiegu w klinice. Specjalizacje mają być wypisane bez powtórzeń. SELECT SPECJALIZACJA.NAZWA FROM ZABIEGI, WYKONANE, LEKARZ, SPECJALIZACJA WHERE ZABIEGI.ID_ZAB=WYKONANE.ID_ZAB AND WYKONANE.ID_LEK=LEKARZ.ID_LEK AND LEKARZ.ID_SPEC=SPECJALIZACJA.ID_SPEC AND KOSZT>(SELECT AVG(KOSZT) FROM ZABIEGI) GROUP BY SPECJALIZACJA.NAZWA;

  9. Wyświetl imiona, nazwiska i zabiegi oraz ich daty wykonane później niż zarejestrowała się w przychodni pacjentkai CZĘBIRA BURKAT. SELECT IMIE, NAZWISKO, NAZWA, DATA_ZAB FROM PACJENCI, WYKONANE, ZABIEGI WHERE PACJENCI.ID_PAC=WYKONANE.ID_PAC AND WYKONANE.ID_ZAB=ZABIEGI.ID_ZAB AND DATA_REJ>(SELECT DATA_REJ FROM PACJENCI WHERE ID_PAC=(SELECT ID_PAC FROM PACJENCI WHERE NAZWISKO=‘BURKAT’));

MODYFIKACJE

Modyfikacje wprowadzone do mojej bazy danych: Rozmiar dostępny na IMIE pacjenta został zwiększony a także kolumna została uzupełniona o NOT NULL. Podobnie NAZWISKO pacjenta. ALTER TABLE PACJENCI MODIFY (IMIE VARCHAR2(15) CONSTRAINT NN_IMIE NOT NULL); ALTER TABLE PACJENCI MODIFY (NAZWISKO VARCHAR2(20) CONSTRAINT NN_NAZWISKO NOT NULL); Kolumna KOSZT w tabeli ZABIEGI została uzupełniona o przedział, w którym musi zmieścić się koszt zabiegu. ALTER TABLE ZABIEGI MODIFY (KOSZT NUMBER(3) CONSTRAINT CK_KOSZT CHECK(KOSZT > 0 AND KOSZT < 1000)); W efekcie, ograniczenia nałożone na tabelę PACJENCI: SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE FROM USER_CONSTRAINTS WHERE TABLE_NAME=‘PACJENCI’;

Oraz ograniczenia nałożone na tabelę ZABIEGI: SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE FROM USER_CONSTRAINTS WHERE TABLE_NAME=‘ZABIEGI’;