Normalizacja i powtarzalnosc danych
jh - 13-01-2007 00:00
Normalizacja i powtarzalnosc danych
Przede wszystkim proszę o wyrozumiałość - jestem samoukiem ;)
Zgodnie z zasadami staram się, żeby nie powtarzać tych samych danych w różnych tabelach, ale mam dylemat, co zrobić takim przypadkiem. Upraszczam opis tabel:
1. Tabela ABONENCI z użytkownikami typu dane osobowe, klucz primary na polu A_ID
2. Tabela z telefonami (numerami) służbowymi i prywatnymi TELEFONY, klucz po polu z numerem telefonu (typ znakowy, długość 9) T_NUMER
3. Tabela z bilingami od operatora FAKTURY - zawiera numer faktury, kwota do zapłaty z rozbiciem na abonament, połączenia, okres rozliczeniowy i sam dokument (wrzucony jako BLOB), klucz po polu znakowym z numerem faktury FV_NUMER
4. Tabela z rozliczeniami RAPORTY - sparsowany dokument faktury, który zawiera numer faktury, numer telefonu, koszty połączeń abonamentu, informację o przekroczonym limicie kosztów dla danego użytkownika itd. Klucz po dwóch polach FV_NUMER i T_NUMER - numer faktury i numer telefonu, klucze zewnętrzne do tabeli FAKTURY i tabeli TELEFONY.
Generalnie proste i banalne. Jedyny problem to powiązanie rozliczeń z użytkownikami telefonów. Teoretycznie też banał, rzecz w tym, że te telefony dosyć często są zmieniane lub zamieniane między użytkownikami - jest spora rotacja użytkowników (praktykanci itp.) Zatem powiązanie na stałe z tabelą użytkownicy nie sprawdzi się. No i teraz pytanie: czy lepiej jest do tabeli rozliczeń skopiować dane użytkownika - na wypadek zmiany właściciela telefonu w przyszłym miesiącu, czy lepiej utworzyć kolejną tabelę, która będzie przechowywać informację, kto w danym okresie rozliczeniowym był właścicielem telefonu? A może inny sposób?Jak to powinno być 'po Bożemu'? ;)
Jacek
Mariusz c - 13-01-2007 00:01
> rozliczeń skopiować dane użytkownika - na wypadek zmiany właściciela > telefonu w przyszłym miesiącu, czy lepiej utworzyć kolejną tabelę, która > będzie przechowywać informację, kto w danym okresie rozliczeniowym był > właścicielem telefonu? A może inny sposób?Jak to powinno być 'po Bożemu'? ;)
Jak się robi coś z telefonami, to wydaje się, że identyfikacja po numerach telefonicznych jest pewna i najlepsza. Jednak tak nie jest, a Twój przypadek najlepiej to pokazuje. Doświadczyła go zresztą równbiez TP... Trzeba, niestety, założyć inny klucz, który nie będzie zmieniał sie po rotacjach telefonów firmie. Po prostu musi to być jakoś identyfikowane po użytkowniku np.: imie_nazwisko, nr_usera. Opóźnienie w rozdzieleniu Nesotrady od telefonu w TP wynikło m.in. z tego, że część baz TP miała identyfikacje po numerze telefonu... Mariusz
-- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
DIUK - 18-01-2007 00:01
Jeżeli przypisanie telefonu (egzemplarza/stacji abonenckiej) do abonenta jest zmienne w czasie, musisz stworzyć tabelę powiązań (wiele do wielu) użytkowników z telefonami z zakresem dat obowiązywania: - id_abonenta - id_telefonu - posiada_od - posiada_do W tabeli z telefonami lepiej dać id_telefonu jako identyfikator wewnętrzny, niezwiązany z numerem (numery wszak się zmieniają).
pozdrawiam Diuk
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?=
=?iso-8859-2?Q?=5BMySQL=5D_Wy=B6wietlenie_wszystkich_rekordow _zawierajacy?==?iso-8859-2?Q?ch_duplikat_a__moze_inna_struktura_bazy_danych ?=
Konwesja znaków w dump'ie bazy danych - ISO -> utf-8 -> ISO -> utf-8
[laik]Jak =?ISO-8859-2?Q?stworzy=E6/zaczac_tworzyc__ma=B3=B1?==?ISO-8859-2?Q?__baz=EA_danych_na_potrzeby_www=3F?=
[mysql] przenoszenie danych =?ISO-8859-2?Q?mi=EAdzy_tabelami_?==?ISO-8859-2?Q?w_r=F3=BFnych_bazach?=
Ksiazka - "Podstawowy =?ISO-8859-2?Q?wyk=B3ad_z_system=F3w_?==?ISO-8859-2?Q?baz_danych=22?=
Zrywanie =?ISO-8859-2?Q?po=B3aczen_z_baza_danych_-_pos?==?ISO-8859-2?Q?tgresql_=3C-=3E_odbc?=
Połączenie bazy danych z wykonaniem polaczenia telefonicznego
[mssql] insert do tabeli na podstawie danych z innej tabeli
[oracle] Baza danych do kursy Introduction to Oracle9i:PL/SQL ? Skąd ją pobrać ?
zanotowane.pldoc.pisz.plpdf.pisz.plred-hacjenda.opx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|