Witam, jakiś czas temu dostałem od pewnej osoby która dość długo siedzi w SQL i ogólnie programowaniu pewne ciekawe zadanie. Oto treść:
1. SQL/ERD
Zaprojektuj bazę danych opisaną poniżej. Narysuj diagram ERD, zaznacz klucze i klucze
obce. Następnie przedstaw treść zapytań SQL zwracającychpodane dane. Wskaż
kolumny które należałoby indeksować, aby przyspieszyć przygotowane zapytania.
Korzystaj wyłącznie ze standardu SQL.
Opis bazy:
Baza zawiera informacje o osobach (wszystkich Polakach urodzonych po roku 1900),
takie jak: imię, nazwisko, data urodzenia, płeć, zarobki. Każda osoba może mieć matkę
i/lub ojca. Kobieta może mieć jednego męża, mężczyzna może mieć jedną żonę. Osoby
pracują w przedsiębiorstwach, posiadających nazwę. Jedna osoba może pracować w
kilku przedsiębiorstwach jednocześnie, na umowę zlecenie lub na umowę o pracę.
Każde przedsiębiostwo ma dokładnie jednego
prezesa.
Zapytania:
A. Znajdź imię i nazwisko osoby posiadającej największą liczbę wnucząt.
B. Znajdź średnią ilość pracowników zatrudnionych na umowę zlecenie i średnią
ilość pracowników zatrudnionych na umowę o pracę we wszystkich firmach
C. Znajdź rodzinę (co najwyżej 2 pokoleniową) najmniej zarabiającą. Przedstaw
imię i nazwisko dowolnej osoby z tej rodziny.
Podpowiedź: rodzina 1 pokoleniowa to osoba X z ewentualnym współmałżonkiem.
Rodzina 2 pokoleniowa to rodzina 1 pokoleniowa z wszystkimi jej dziećmi (wraz
z ewentualnymi współmałżonkami) lub rodzicami.
I tu zaczynają się schody. Punkty A oraz B nie stanowią większego problemu , ale punkt C mnie przerósł.
Nie jestem "specjalistą" w SQL ale bardzo chętnie bym się dowiedział jakie jest rozwiązanie tego zadania. Jeżeli ktoś z Państwa ma jakieś pomysły lub jest w stanie rozwiązać takie zadanko to zapraszam.
Wiem, że dla większości speców od sql nie stanowi takie coś większego problemu. Jeżeli byłaby taka możliwość to również mile widziane jest małe objaśnienie lub nakierowanie mnie na właściwą trasę jak wielkie są moje zaległości w SQL.