Projekt Hurtowni danych - sieć firm kurierskich

0

Witam

Mam za zadanie zaprojektować bazę danych dla firmy kurierskiej (dystrybucja przesyłek). Aktualnie jestem na tym etapie:

user image

Jednak coś mi nie pasuje i nie mam pojęcia czy jest zgodne z topologią gwiazdy. Parę rzeczy, które planuje zmienić, prosiłbym bardzo o pomoc w ocenie proponowanych przeze mnie zmian jak i podsuwanie nowych.

Zamiast aktualnego wyglądu tabeli DATA, myślę na zmianą na:

DATA
	sdata_id
	datee DATE,
	quarter NUMBER

rozdzielenie tabeli KLIENT na dwie, jedna przechowywała by klientów prywatnych, druga zaś przedsiębiorstwa oraz scalenie ich z tabelą KLIENT_INFO, czyli powstały by:

KLIENT_INDYWIDUALNY
	ki_id
	adres_id
	imie
	nazwisko
	pesel
	numer_telefonu
	email

oraz

INNY_KLIENT
	ik_id
	adres_id
	nazwa
	regon
	numer_telefonu
	fax
	email

stworzenie kolumny ADRESAT, która przechowywała by odbiorców, bo przecież nie każdy odbiorca jest klientem, aktualnie wymyśliłem coś takiego

ADRESAT
	adresat_id
	adres_id
	imie
	nazwisko
	numer_telefonu

zlikwidowanie tabeli PRZESYLKA_INFO, a kolejno rozszerzenie tabeli PRZESYLKA:

PRZESYLKA
	przesylka_id
	typ_przesylki_id
	numer
	koszt
	ubezpieczenie
	rozmiar
	waga
	zawartosc

Tak więc co sądzicie o moich propozycjach zmiany? A może macie inne propozycje?
Z góry dzięki za pomoc

Pozdrawiam :)

P.S. Baza oczywiście ma zaimplementowana na Oraclu.

1
  1. typ przesyłki to typ przesyłki a nie jej rozmiar
  2. przesyłka_info jest zbędna
  3. klient_info jest zbędna
  4. co to jest sieć?
  5. dlaczego kurier ma klient_id i adres_id??
  6. co to jest data?

masz tak
klienci (obojętnie jaki - powinien być znacznik czy os. prywatna czy firma)
adresy (bo jeden klient może mieć kilka adresów - dotyczy głównie firm)
kurierzy (imię, nazwisko, tel, itp)
samochody (nr_rej, pojemność, ładowność)
regiony (nazwa)
region_miasto (połączenie regionów z miastami żeby było wiadomo gdzie sięga dany region. Mogą być zamiast miast dzielnice, ulice)
region_kierowca (połączenie kierowcy z regionem żeby było wiadomo gdzie kto jeździ)
oddziały (nazwa oddziału, adres)
oddział_region (połączenie oddziału z regionem żeby było wiadomo, które regiony ma pod sobą dany oddział)
przesyłki (wymiary, waga, ubezpieczenie, itp)
zlecenia (łączysz klient_nadawca, adres_nadawca, klient_odbiorca, adres_odbiorca, kurier, samochód, przesyłka, data_dostarczenia, zakończone)

do tego możesz dodać tabele słownikowe takie jak
miasta, kraje, województwa

Co do oddziałów i regionów to możesz jeszcze zrobić region typu cały kraj - jeśli nadawca i odbiorca są w innych regionach to paczkę musi przyjąć oddział nadawcy, następnie przekazuje ją do oddziału "cały kraj", który wiezie ją do oddziału odbiorcy i tam już lokalni kurierzy rozwożą paczki do adresatów

1

Lol, pomysł z tabelą DATA jest "genialny" :D
Systemy bazodanowe wspierają typy Data, DataTime, a także mają funkcje do operacji na datach, m.in. zwracające kwartał (a nawet jeśli jakaś nie ma, to jej napisanie to banał).

W Adresie może przydatna być informacja o typie, czy coś takiego, czyli adres domowy, służbowy, centrali firmy, ... To samo jeśli chodzi o dane kontaktowe, szczególnie telefony.
Przydałoby się także rejestrować co dzieje się z przesyłką. Czyli flow jaki przechodzi, np. odbiór od klienta, przekazanie do sortowni, wysłane z sortowni, ..., odebrane przez klienta. Wejdź sobie na stronkę dowolnego kuriera i zobacz jak pozwalają śledzić przesyłkę.

1

Z datą to już popłynąłeś w stronę hurtowni.
Jeśli koniecznie chcesz wiedzieć jaki to kwartał (pewnie księgowo?), a nie da się go wyliczyć, to lepiej:

  • w tabeli "siec" przechowuj normalną datę
  • w tabeli "data" przechowuj pola:
    • data_od (min = minimalna data a nie NULL)
    • data_do (max = maksymalna data a nie NULL)
    • miesiac
    • rok
    • kwartal
1

Z tego, co wiem, to tabela Data jest standardową tabelą wymiarów w hurtowaniach danych, a o nich jest mowa w temacie. Hurtownie danych są z założenia zdenormalizowane.

0

Lol, pomysł z tabelą DATA jest "genialny"
Systemy bazodanowe wspierają typy Data, DataTime, a także mają funkcje do operacji na datach, m.in. zwracające kwartał (a nawet jeśli jakaś nie ma, to jej napisanie to banał).

Dziękuje :).

Z tego, co wiem, to tabela Data jest standardową tabelą wymiarów w hurtowaniach danych, a o nich jest mowa w temacie. Hurtownie danych są z założenia zdenormalizowane

Dokładnie, wzorowałem się na bazie użytkownika SH, czyli:
<image> http://i.imgur.com/aTCev.png </image>

Ok, koniec offtopu.
Po pierwsze dziękuję bardzo wszystkim za pomoc. Po drugie wykorzystałem większość waszych sugesti.
Baza po zastosowaniu poprawek
<image> http://i.imgur.com/qAsOK.png </image>

Opis:
Siec - jest to tabela faktów;
Typ_przesylki - przesyłka ma 6 typów (ściągałem ze strony ups-a :P):

  • koperta
  • paleta
  • paczka
  • inna
  • tuba
  • list
    Opis - jest opis przy sledzeniu przeplywu przesylki (np. Nadanie przesyłki do sortowni (WY));

P.S. Znacie może jakiś przystępny i darmowy program do tworzenia/projektowania baz danych. Teraz korzystam z DBSchema, program ciekawy, ale niejednokrotnie miał problem z aktualizacją swojego schematu (swojego, jak i tego w bazie danych). Kiedyś znalazłem stronkę gdzie było wypisanych kilkadziesiąt takich programów, ale niestety nie mogę jej znaleźć w zakładkach.
P.S. 2. Poszukuje jeszcze programu do generowania danych, gdyż kończy mi się wersja testowa generatora ze strony testerzy.pl.

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