Вопрос

Доброе утро,

У меня есть некоторые проблемы с тем, как должна быть изложена моя база данных, и я бы признателен некоторым руководством. У меня есть несколько таблиц (данные о дождевых осадках), каждая из которых содержит следующие столбцы:

Date (DateTime), Value_of_rainfall (Float)

Каждая из этих таблиц предназначена для определенного места.

Было предложено создать другую таблицу со следующими столбцами:

LocationID (tinyInt), LocationName(char(6))

и вставьте в первую таблицу новую колонку под названием LocationId (TinyInt).

Теперь путаница, которую я имею, касается того, что данные, которые я хранил в данных данных о дождевых данных. Было высказано предположение, что все данные из каждого места содержатся в одной таблице данных. Статистический анализ, который я хочу выполнить информацию, очень (насколько я предполагал до сих пор), специфичный местоположение и не требует запроса нескольких мест одновременно. Данные на пару месяцев для одного места = почти 3 миллиона строк, и я хочу настроить давние расчеты на данные. Поэтому хранилище данных будет более подходящим? Если так, может ли кто -нибудь дать мне несколько указателей на то, как я должен это изложить?

Спасибо за ваше время.

Примечание: я использую SQL Server 2008

Это было полезно?

Решение

Кажется, вы хотите со временем объединить статистику на основе местоположения для осадков. Структура базы данных, подобная приведенной ниже, позволит вам это сделать. «Источник данных» может быть просто именем файла или некоторым указанием относительно того, откуда он взялся.

create table DimDataSource (
       DataSourceID      int identity (1,1) not null
       DataSourceDesc    nvarchar (100)  -- May need unicode for file names
)
go

alter table DimDataSource
  add constraint PK_DataSource
      primary key clustered (DataSourceID)
go

create table DimLocation (
       LocationID        int identity (1,1) not null
       LocationDesc      varchar (50)
)
go

alter table DimLocation
  add constraint PK_Location
      primary key clusterd (LocationID)
go

create table DimDate (
       DateID           smalldatetime not null  -- 'Date' is a reserved word
      ,MonthID          int not null
      ,MonthDesc        varchar (15)
      ,QuarterID        int not null
      ,QuarterDesc      varchar (15)
      ,YearID
)
go

alter table DimDate
  add constraint PK_Date
      primary key clustered (DateID)
go

create table DimTime (
       TimeID           time not null  -- 'Time' is a reserved word
      ,Hour             int not null
)
go

alter table DimTime
  add constraint PK_Time
      primary key clustered (TimeID)
go


-- If the table is <50GB, don't bother with partitioning, but put a clustered
-- index on DateID or LocationID and DateID, depending on how you normally expect
-- to query the data.

create table FactRainfall (
       RainfallID        int identity (1,1) not null -- May need a wider type if >4B rows.
                                                     -- SSAS likes an identity column for
                                                     -- incremental loads
      ,DataSourceID      int not null
      ,LocationID        int not null
      ,DateID            smalldatetime not null
      ,TimeID            time not null
      ,Rainfall          float
)
go

-- Add foreign keys as necessary

Заполните размеры соответствующим списком мест, датчиков, времени суток в правильное зерно и одну запись источника данных на файл. Эта таблица также позволит вам положить куб сверху или может быть сглажен с видом, что поможет людям, использующим такие инструменты, как Excel или Stat Packages для получения и использования данных.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с dba.stackexchange
scroll top