2015-12-11 2 views
0

Мне интересно, каковы возможности для эффективного хранения такого рода данных.Способы хранения различных видов сообщений в БД

Допустим, у меня есть 100 различных сообщений, которые мне нужно хранить. все сообщения имеют общие данные, такие как идентификатор сообщения, имя сообщения, отправитель, получатель, дата вставки и т. д. В каждом виде сообщений есть свои уникальные столбцы, которые мы хотим сохранить и индексировать (для быстрых запросов).

Мы не хотим использовать 100 разных таблиц, с которыми работать невозможно. Лучший способ, которым я мог придумать, - использовать 2-3 таблицы: 1. для общих данных. 2. для дополнительных уникальных данных, когда каждый столбец имеет общее имя типа: внешний ключ, column1, column2 .... column20. там будет индекс для каждого столбца + внешний ключ (20 индексов для 20 столбцов). 3. необязательная таблица метаданных для описания общих столбцов для каждого уникального сообщения.

UPDATE: позволяет говорить, что я являюсь основой для передачи данных, существует 100 различных видов данных (сообщений). Я хочу хранить каждое сообщение, которое приходит через меня, но не как объемные данные, потому что позже я хотел бы запросить данные на основе уникальных столбцов каждого типа сообщений. Есть ли лучший способ там, о котором я не знаю? Спасибо. BTW база данных оракула.

UPDATE 2:

базы данных NoSQL ли может дать мне лучшее решение?

+0

Имеются ли в этих сообщениях категории или идентификаторы пользователей? – Ghayel

+0

Я не уверен, что следую за вами, но нет, каждое сообщение стоит на своем. например, тип сообщения1 содержит данные о дорожках, которые приходят и уходят, тип сообщения 2 содержит данные о прибытии или выходе груза .... – Avi

+0

Хорошо, позвольте мне обновить свой ответ. wait plz – Ghayel

ответ

0

Вот ваш ответ: enter image description here
Вы можете хранить столько сообщений, сколько вы хотите от каждого типа сообщения

UPDATE: Это то, что вы именно хотите. Существуют разные типы сообщений, которые вы указали, например. отслеживание, груз или что-то еще. Эти категории будут сохранены в таблице msg_type. Вы можете хранить столько категорий в msg_type, сколько захотите.

Затем скажите, что каждый msg_type имеет множество сообщений, которые будут сохранены в таблице Messages. Вы можете хранить здесь столько сообщений, как вы хотите без каких-либо ограничений

Вот ваш SQL базы данных:

create table msg_type(
type_id number(14) primary key, 
type varchar2(50) 
); 

create sequence msg_type_seq 
start with 1 increment by 1; 

create or replace trigger msg_type_trig 
before insert on msg_type 
referencing new as new 
for each row 
begin 
select msg_type_seq.nextval into :new.type_id from dual; 
end; 
/

create table Messages(
msg_id number(14) primary key, 
type_id number(14) constraint Messages_fk references CvCategories(type_id), 
msg_date timestamp(0) default sysdate, 
msg varchar2(3900)); 

create sequence Messages_seq 
start with 1 increment by 1; 

create or replace trigger Messages_trig 
before insert on Messages 
referencing new as new 
for each row 
begin 
select Messages_seq.nextval into :new.msg_id from dual; 
end; 
/
+0

дайте мне знать, если вы хотите какое-либо объяснение – Ghayel

+0

Я обновил свой вопрос, может быть, теперь это стало более ясным, спасибо. – Avi

+0

Я обновил свой ответ.plz read it – Ghayel

1

подход 2-х или 3-х таблиц, которые вы предлагаете, кажется разумным для меня.

Альтернативным способом было бы просто сохранить все эти уникальные столбцы в одной таблице вместе с общими данными. Это не должно мешать вам создавать индексы для них.

+0

Я обновил свой ответ. – Ghayel

Смежные вопросы