Witam,
muszę w bazie stworzyć nową tablę z danymi jak poniżej. Mój problem to jak stworzyć poprawnie tablę aby agregować taką macierz wiedząc, że takich struktur będzie kilkadziesiąt.
Struktura danych w załączniku
Z góry dziękuję:)
Witam,
muszę w bazie stworzyć nową tablę z danymi jak poniżej. Mój problem to jak stworzyć poprawnie tablę aby agregować taką macierz wiedząc, że takich struktur będzie kilkadziesiąt.
Struktura danych w załączniku
Z góry dziękuję:)
co te dane przedstawiają? wiersz to data a kolumna to...?
ogólnie tabela powinna mieć kolumny:
Data
Liczba z nagłówka kolumny
Wartość.
misiakufal_loggedoff napisał(a):
ogólnie tabela powinna mieć kolumny:
Data
Liczba z nagłówka kolumny
Wartość.
z tym, że nie koniecznie - czasami lepiej (pod względem wydajności i prostoty obsługi) jest dodać x kolumn od np. K1 do Kx i zapisywać to tak jak w excelu.
Ważne co z tym będziesz robił dalej
Pierwszym moim pomysłem było zbudowanie tabeli w następujący sposób:
Nazwa Data godz1 ........ godz744
xyz 1.01.2000 2 1
problem przy przy tej formie jest taki, że gdy chcemi przeanalizować konkretny dzień musimy go obliczyć, a nie wszystkie miesiące są równe (np.: Luty). Dodatkowo dla jednego miesiąca mogą występować tabele o różnych nazwach oraz dla jednej nazwy i tego samego miesiąca ale różnych lat. Wiec myślałem że gdy zrobię to w formie:
Nazwa Data godz wartość2000 wartość2001
xyz 1.01 1 1 1
xyz 1.01 2 1 1
xyz 1.01 3 1 1
xyz 1.01 4 1 1
xyz 1.01 5 1 1
xyz 1.01 6 1 1
xyz 1.01 7 1 1
xyz 1.01 8 1 1
xyz 1.01 9 1 1
.
.
.
xyz 31.01 21 1 1
xyz 31.01 22 1 1
xyz 31.01 23 1 1
xyz 31.01 24 1 1
xyz 1.02 1 1 NULL
xyz 1.02 2 1 NULL
xyz 1.02 3 1 NULL
xyz 1.02 4 1 NULL
xyz 1.02 5 1 NULL
xyz 1.02 6 1 NULL
Może pojawiać się wiele pól pustych. Dotatkowo tabela robi się strasznie długa - ilość nazw x liczba dni w miesiąca dla których są dane.
obydwa pomysły to wg mnie bzdura, szczególnie ten z polami od 1 do 744. Nadal jak dla mnie podstawowym wyborem jest między
data, nazwa, h1..h24
a
data, nazwa, godzina, wartosc
i wybór ten mocno zależy od tego co potem chcesz z tymi danymi robić i jaki jest stosunek godzin z wartością do godzin bez wartości w miesiącu
abrakadaber napisał(a):
obydwa pomysły to wg mnie bzdura, szczególnie ten z polami od 1 do 744. Nadal jak dla mnie podstawowym wyborem jest między
data, nazwa, h1..h24
a
data, nazwa, godzina, wartosci wybór ten mocno zależy od tego co potem chcesz z tymi danymi robić i jaki jest stosunek godzin z wartością do godzin bez wartości w miesiącu
Czym się różni Twój drugi pomysł do mojego drugiego pomysłu?
Nazwa Data godz wartość2000 wartość2001
xyz 1.01 1 1 1
xyz 1.01 2 1 1
xyz 1.01 3 1 1
xyz 1.01 4 1 1
xyz 1.01 5 1 1
xyz 1.01 6 1 1
xyz 1.01 7 1 1
xyz 1.01 8 1 1
xyz 1.01 9 1 1
.
.
.
xyz 31.01 21 1 1
xyz 31.01 22 1 1
xyz 31.01 23 1 1
xyz 31.01 24 1 1
xyz 1.02 1 1 NULL
xyz 1.02 2 1 NULL
xyz 1.02 3 1 NULL
xyz 1.02 4 1 NULL
xyz 1.02 5 1 NULL
xyz 1.02 6 1 NULL
rozwiązanie to wg mnie pozawala na skrócenie tabeli poprzez wpisywanie wartości dla danego roku w kolumnach.
no bajer, a jak przewidziana ilość lat się skończy to oprócz dodawania nowych kolumn trzeba będzie jeszcze przerabiać wszystkie zapytania. Jednym słowem ideał...
Nie wiem co dokładnie chcesz osiągnąć, ale mam wrażenie że kombinujesz strasznie.
Jeśli chcesz po prostu ((data+godzina) - (odczyt)) to czemu nie zrobisz:
ID DATAODCZYTU ODCZYT
Gdzie Data Odczytu to będzie DateTime ?