2015-03-13 4 views
0

Мне нужна база данных для регистрации различных событий.SQL-база данных базы данных

У меня есть основная таблица

CREATE TABLE IF NOT EXISTS `log` (
    `log_id` int(11) NOT NULL AUTO_INCREMENT, 
    `user_id` int(11) NOT NULL, 
    `log_label` varchar(255) NOT NULL, 
    `log_level` int(1) NOT NULL DEFAULT '0', 
    `log_type` varchar(255) NOT NULL, 
    `log_time` datetime NOT NULL, 
    PRIMARY KEY (`log_id`) 
) 

Так что я выбрал и сделать столик, чтобы содержать какое-либо значение для основного бревна. Значение может быть динамическим.

CREATE TABLE IF NOT EXISTS `log_data` (
    `log_data_id` int(11) NOT NULL AUTO_INCREMENT, 
    `log_id` int(11) NOT NULL, 
    `log_data_key` varchar(255) NOT NULL, 
    `log_data_value` varchar(255) NOT NULL, 
    PRIMARY KEY (`log_data_id`) 
) 

Будет ли я получать некоторые проблемы/ограничения, когда мне нужно получить данные через php и mysql?

Примером может быть выборка всех журналов с помощью «log_type = error» Как я должен объединить все данные из таблицы log_data?

+0

Что вы имеете в виду с «динамическим» база данных? – jarlh

+0

С динамическим я имею в виду. Данные в таблице log_data могут отличаться в зависимости от типа журнала. Динамическая база данных может быть неправильным термином для использования :) Я удалил слово dynamic. –

+0

Вам нужно объяснить, какой выход вы хотите получить, на самом деле не совсем понятно, каков ваш вопрос. –

ответ

0

Вам не хватает более длинного текстового столбца для сообщений журнала; varchar(255) - крошечный.

Конструкция представляет собой странный гибрид:

  • , если вы хотите «общий» дизайн, большинство полого log должны быть понижены до log_data.
  • если вы хотите, чтобы войти принципиально различные типы событий, вы должны использовать специализированные и независимые таблицы для каждого типа, без неуклюжих «тумбами»:

    CREATE TABLE IF NOT EXISTS `chat_membership_log` 
    (
    log_id int(11) NOT NULL AUTO_INCREMENT, 
    log_time datetime NOT NULL, 
    event_type char(1),--'J'=join, 'L'=leave 
    username varchar(40), 
    PRIMARY KEY (`log_id`) 
    ) 
    
    CREATE TABLE IF NOT EXISTS `application_crash_log` 
    (
    log_id int(11) NOT NULL AUTO_INCREMENT, 
    log_time datetime NOT NULL, 
    PID varchar(20), 
    command_line varchar(2000), 
    PRIMARY KEY (`log_id`) 
    ) 
    
Смежные вопросы