powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Структура таблиц
7 сообщений из 7, страница 1 из 1
Структура таблиц
    #39265186
necoro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток форумчане.
Такая ситуация, есть следующие таблицы:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
mysql> SHOW CREATE TABLE history;
+---------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table   | Create Table                                                                                                                                                                                                                                                                                                                                                                                   |
+---------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| history | CREATE TABLE `history` (
  `no` int(11) NOT NULL AUTO_INCREMENT,
  `crt_date` datetime NOT NULL,
  `crt_user` int(3) DEFAULT NULL,
  `id` int(11) DEFAULT NULL,
  `txt` mediumtext,
  PRIMARY KEY (`no`),
  UNIQUE KEY `combine` (`no`,`crt_date`),
  KEY `crt_date` (`crt_date`),
  KEY `id` (`id`),
  KEY `crt_user` (`crt_user`)
) ENGINE=MyISAM AUTO_INCREMENT=941629 DEFAULT CHARSET=utf8 |
+---------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
mysql> SHOW CREATE TABLE fileattach;
+------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table      | Create Table                                                                                                                                                                                                                                                                                                                                                                                                                                 |
+------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| fileattach | CREATE TABLE `fileattach` (
  `no` int(11) NOT NULL AUTO_INCREMENT,
  `case_no` int(11) DEFAULT NULL,
  `creator` int(3) NOT NULL,
  `date` datetime DEFAULT NULL,
  `filename` tinytext NOT NULL,
  `filesize` int(11) DEFAULT NULL,
  `path` tinytext NOT NULL,
  `gop_no` int(11) DEFAULT NULL,
  PRIMARY KEY (`no`),
  KEY `creator` (`creator`),
  KEY `case_no` (`case_no`)
) ENGINE=MyISAM AUTO_INCREMENT=285522 DEFAULT CHARSET=utf8 |
+------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
mysql> SHOW CREATE TABLE tasklist;
+----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table    | Create Table                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
+----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| tasklist | CREATE TABLE `tasklist` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `no` int(11) NOT NULL,
  `claim_id` decimal(20,2) DEFAULT NULL,
  `crt_date` datetime NOT NULL,
  `crt_ou` int(1) NOT NULL,
  `deadline` datetime NOT NULL,
  `complete_time` datetime DEFAULT NULL,
  `task` text NOT NULL,
  `comments_for_task` varchar(300) DEFAULT NULL,
  `creator` int(3) NOT NULL,
  `task_for` int(3) NOT NULL DEFAULT '1',
  `performer` int(3) DEFAULT '1',
  `complited` int(1) NOT NULL DEFAULT '2',
  `view_count` int(3) NOT NULL DEFAULT '0',
  `root` int(1) NOT NULL DEFAULT '1',
  `parent_id` int(11) DEFAULT NULL,
  `active_task` int(1) NOT NULL DEFAULT '0',
  `auto_task_id` int(2) DEFAULT NULL,
  `for_stat` int(1) NOT NULL DEFAULT '1',
  PRIMARY KEY (`id`),
  UNIQUE KEY `perform` (`performer`,`deadline`,`id`),
  KEY `no` (`no`),
  KEY `complited` (`complited`),
  KEY `crt_date` (`crt_date`),
  KEY `creator` (`creator`),
  KEY `performer` (`performer`),
  KEY `parent_id` (`parent_id`),
  KEY `deadline` (`deadline`),
  KEY `combine` (`creator`,`performer`,`no`),
  KEY `crt_ou` (`crt_ou`),
  KEY `test` (`performer`,`auto_task_id`)
) ENGINE=MyISAM AUTO_INCREMENT=500521 DEFAULT CHARSET=utf8 |
+----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
mysql> SHOW CREATE TABLE assist_mail;
+-------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table       | Create Table                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
+-------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| assist_mail | CREATE TABLE `assist_mail` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `case_id` int(11) NOT NULL,
  `creator` int(3) NOT NULL,
  `sender` text NOT NULL,
  `recipient` text NOT NULL,
  `date_send` datetime DEFAULT NULL,
  `date_added` datetime NOT NULL,
  `date_rec` datetime DEFAULT NULL,
  `subject` text NOT NULL,
  `mail_text` longtext NOT NULL,
  `tb` int(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `combine1` (`creator`,`case_id`,`date_added`,`tb`),
  UNIQUE KEY `combine2` (`creator`,`case_id`,`date_send`,`tb`),
  KEY `case_id` (`case_id`),
  KEY `creator` (`creator`),
  KEY `date_send` (`date_send`),
  KEY `date_added` (`date_added`),
  KEY `tb` (`tb`)
) ENGINE=MyISAM AUTO_INCREMENT=541952 DEFAULT CHARSET=utf8 |
+-------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+



Одинаковые сущности только creator/crt_user,crt_date,case_no/case_id т.е. очень мало.
Стоит задача выводить информацию из каждой таблицы в едином списке сгруппированном по дате этого события, создать некий timeline по событию, в котором будет отображаться все и записи в истории и прикрепленные файлы и созданные задачи и полученные/отправленные письма.
Ломаю голову как это можно организовать. Создавать новую таблицу в которой будут все эти поля и новое поле например type=1,2,3,4 (history,file,task,mail) или сделать сводную таблицу с указанием ID события в основной таблице и типом
или оставлять таблицы как есть а работать дальше уже с результатами выборок из каждой?
Какой вариант лучше или может быть есть еще какой-то?
...
Рейтинг: 0 / 0
Структура таблиц
    #39265277
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
  CREATE TABLE `history` (
-- skipped
  PRIMARY KEY (`no`),
  UNIQUE KEY `combine` (`no`,`crt_date`),
-- skipped


Требование уникальности ключа combine избыточно. Не грузи движок бессмысленной работой.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
  CREATE TABLE `tasklist` (
-- skipped
  UNIQUE KEY `perform` (`performer`,`deadline`,`id`),
-- skipped
  KEY `creator` (`creator`),
  KEY `performer` (`performer`),
-- skipped
  KEY `combine` (`creator`,`performer`,`no`),
-- skipped


Ключи creator и performer почти наверняка лишние.

Код: sql
1.
2.
3.
4.
5.
6.
  CREATE TABLE `assist_mail` (
-- skipped
  UNIQUE KEY `combine1` (`creator`,`case_id`,`date_added`,`tb`),
-- skipped
  KEY `creator` (`creator`),
-- skipped


Ключ creator почти наверняка лишний.

necoroКакой вариант лучше или может быть есть еще какой-то?
Не вижу оснований для предрасчёта и переопределения данных. JOIN 4 таблиц, выборка и группировка - тем более что утверждается, что селективность индексов высока, а объёмы групп, равно как и их количество после фильтрации, скорее всего невелики - будет достаточно быстрой.
...
Рейтинг: 0 / 0
Структура таблиц
    #39265314
necoro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,
не понял что тут может сделать join, в итоге же получится полная каша в которой еще и тип события будет не понятен. Может быть union?
...
Рейтинг: 0 / 0
Структура таблиц
    #39265333
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
necoro,

UNION[ALL] будет ещё быстрее. Оснований для предрасчёта тем более не видно.
...
Рейтинг: 0 / 0
Структура таблиц
    #39265413
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
necoroМожет быть union?
Ну для меня загадка, как ты собираешься UNIONить субвыборки, у которых явно структуры будут не совпадать... NULL-ов налепишь в dummy-поля? ну-ну...

necoroв итоге же получится полная каша
А у тебя задание такое - получить полную кашу. Чему удивляешься?
...
Рейтинг: 0 / 0
Структура таблиц
    #39265575
necoro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,
да, сейчас этим как раз занимаюсь, пишу NULL'ы в не пересекающиеся поля, чем плох такой вариант?
...
Рейтинг: 0 / 0
Структура таблиц
    #39265995
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
necoroчем плох такой вариант?Если такой результат допустим, то ничем. Но выглядит, как будто Akinaу тебя задание такое - получить полную кашуА так ли это на самом деле?
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Структура таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]