Я не уверен, имеет ли название смысл, но вот моя общая проблема:
У меня есть таблица, которая содержит информацию о событиях на разных устройствах и платформах.Я не уверен, как эффективно спроектировать схему для запроса всех событий, а затем запрашивать информацию о конкретном событии.
Я попытался сохранить весь этот псевдокод ниже, поэтому, если что-то не имеет смысла в коде, я просто стараюсь сделать его универсальным.
Вот надуманный пример:
Event Table:
int Id
datetime Occured_On
uniqueidentifier UserId --> Users table
int Category (the type of event) --> Categories table
text Summary (textual summary of the event)
text EventSource (specifies whether this is a DesktopEvent or MobileEvent)
Тогда каждое устройство имеет свой собственный набор данных для каждого события.Например:
DesktopEvent
int Id
int EventId --> Event table
text Hostname
text LoggedInUsername
MobileEvent
int Id
int EventId --> Event table
int PlatformId
text ESN
...
Я хочу запросить у таблицы событий последние X последних событий.Прямо сейчас у меня есть столбец, указывающий источник события, чтобы я мог сделать второй запрос к соответствующей таблице.
results = SELECT * FROM Event DESCENDING Occured_On LIMIT 5.
foreach (result in results)
{
if (result.EventSource == "DesktopEvent")
data = SELECT * FROM DestkopEvent WHERE EventId == result.EventId
...
}
Это кажется очень неэффективным.
Это еще более усложняется тем, что может быть много разных источников событий, а не только 2 (DesktopEvent и MobileEvent), как указано выше.Попытка объединить более 10 таблиц, для которых проверка не является NULL, кажется хуже, чем выше.
Есть ли лучший способ структурировать эти данные?Большое спасибо.