gpt4 book ai didi

mysql - SQL日志数据库设计

转载 作者:行者123 更新时间:2023-11-29 22:47:35 25 4
gpt4 key购买 nike

我需要一个数据库来记录不同的事件。

我有一个主表

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 表中的所有数据?

最佳答案

您缺少较长的日志消息文本列; 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`)
    )

关于mysql - SQL日志数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29027486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com