|
| Дата |
|
USD/RUB | 90.4082 | BTC/USD | 69499.3412 |
|
|
|
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии. |
29.11.2017, 20:17
|
#1
|
Senior Member
Регистрация: 23.04.2007
Сообщений: 2,118
Бабло: $337995
|
Структура таблиц БД
Коллеги, помогите, пожалуйста, сообразить правильную структуру таблиц базы даных в MySQL.
Исходные данные:
Совершая get-запрос к API SemRush, получаю массив данных в формате json. Этот массив есть список отслеживаемых поисковых запросов, их позиция в Гугле, урл ранжируемой страницы и др.
Один элемент массива выглядит следующим образом:
Код:
"1": {
"Pi": "16409507011027092224", ## keyword ID ##
"Ph": "keyword", ## keyword ##
"Kb": 20151208,
"Tg": { ## tags for a keyword ##
"0": "brand"
},
"Cp": "0.86", ## Average price in U.S. dollars
"Nq": "320", ## Search Volume, monthly ##
"Gs": "0",
"Dt": { ## array of dates and positions ##
"20171116": {
"www.domain.com/*": 6
}
},
"Be": { ## Position at the beginning of specified period
"www.domain.com/*": 6
},
"Fi": { ## Position at the end of specified period
"www.domain.com/*": 6
},
"Diff": { ## Position difference for specified period
"www.domain.com/*": 0
},
"Diff1": { ## Position difference for 1-day period
"www.domain.com/*": 94
},
"Diff7": { ## Position difference for 1-week period
"www.domain.com/*": 94
},
"Diff30": { Position difference for 1-month period
"www.domain.com/*": 94
},
"Vi": {
"20171116": {
"www.domain.com/*": 0.000000
},
"Diff": {
"www.domain.com/*": 0.000000
}
},
"Sf": {
"20171116": [
"img",
"rev",
"kng"
]
},
"Tr": {
"20171116": {
"www.domain.com/*": 0.430000
}
},
"Tc": {
"20171116": {
"www.domain.com/*": 0.370000
}
},
"Lu": { ## Landing URLs ##
"20171116": {
"www.domain.com/*": "https://www.domain.com/keyword-url.html"
}
},
"Lt": {
"20171116": {
"www.domain.com/*": [
"org"
]
}
}
}
комментарии я добавил сам, чтоб было понятнее
Я планирую накапливать в БД следующие данные:
- keyword
- tag
- дата запроса
- позиция
- урл
- search volume ключевика
, чтоб в будущем формировать таблицы и графики с фильтрацией всех ключевиков по отдельному тегу.
|
|
|
29.11.2017, 20:30
|
#2
|
сыроед
Регистрация: 01.10.2015
Сообщений: 15,873
Бабло: $1862475
|
так вот же структура
Цитата:
- keyword
- tag
- дата запроса
- позиция
- урл
- search volume ключевика
|
id нужен auto_increment
keyword, очевидно, основная колонка
tag, возможно, в отдельную таблицу надо (НФ1)
|
|
|
30.11.2017, 18:46
|
#3
|
Senior Member
Регистрация: 23.04.2007
Сообщений: 2,118
Бабло: $337995
ТС -->
|
ТС
Цитата:
Сообщение от веломан
так вот же структура
Цитата:
- keyword
- tag
- дата запроса
- позиция
- урл
- search volume ключевика
|
id нужен auto_increment
keyword, очевидно, основная колонка
tag, возможно, в отдельную таблицу надо (НФ1)
|
Получается, что при добавлении новых данных, значения колонки Keywords будут каждый раз обновлятся?
Я подозреваю, что Keywords должны быть в одной таблице, Теги - в другой, а Позиция и УРЛ - в третьей (или в разных, хз).
Но как это все связать - я хз.
|
|
|
01.12.2017, 00:14
|
#4
|
Юниор
Регистрация: 04.10.2017
Сообщений: 29
Бабло: $7050
|
можно сделать примерно так:
1 таблица id + время запроса + еще какие то данные если нужно..
2 таблица id + кеи
3 таблица id + теги
4 таблица состоит из id (primary key, auto increment), id запроса, id кея, id тега, позиция, url
затем делаешь выборку с join... соединяешь как нужно и всё, можешь связать таблицу 4 и таблицу 1 с помощью foreign key (таблица4.query_id = таблица1.id)
|
|
|
01.12.2017, 02:45
|
#5
|
сыроед
Регистрация: 01.10.2015
Сообщений: 15,873
Бабло: $1862475
|
Цитата:
Сообщение от Grut
Цитата:
Сообщение от веломан
так вот же структура
Цитата:
- keyword
- tag
- дата запроса
- позиция
- урл
- search volume ключевика
|
id нужен auto_increment
keyword, очевидно, основная колонка
tag, возможно, в отдельную таблицу надо (НФ1)
|
Получается, что при добавлении новых данных, значения колонки Keywords будут каждый раз обновлятся?
Я подозреваю, что Keywords должны быть в одной таблице, Теги - в другой, а Позиция и УРЛ - в третьей (или в разных, хз).
Но как это все связать - я хз.
|
1 запись = 1 кейворд, разве нет?
и позиция с урлом тоже одно на кейворд, им не нужна отдельная таблица
|
|
|
01.12.2017, 06:53
|
#6
|
Senior Member
Регистрация: 24.04.2007
Адрес: Красноярск
Сообщений: 358
Бабло: $50640
|
Грут, посмотри монгодб, забей на мускул. В монго сделаешь одну таблицу и пиши в нее все данные как есть. Тебе этого хватит с головой.
__________________
PharmCash - Лучшие условия и профит в фарме. Hold-0, Refunds-0, Commission–50%, CPU+500. Google нас любит!
|
|
|
01.12.2017, 10:22
|
#7
|
white powder
Регистрация: 29.04.2007
Сообщений: 2,692
Бабло: $370670
|
не надо тебе монги, нормализируй это.
|
|
|
04.12.2017, 23:33
|
#8
|
Member
Регистрация: 27.05.2010
Сообщений: 49
Бабло: $20700
|
Grut, сделай, как говорит веломан. Только добавь индекс к тег колонке
Код:
{
id int unsignet auto_increment primary key,
keyword varchar(250)
tag varchar(250) index
date DATE
position int
url varchar(250)
search_volume text
}
|
|
|
06.12.2017, 17:35
|
#9
|
Senior Member
Регистрация: 23.04.2007
Сообщений: 2,118
Бабло: $337995
ТС -->
|
ТС
Сделал как говорил Веломан.
Теперь при импорте данных со следующей датой, значиния в колоке Keywords дублируются.
Теперь склоняюсь к предложению Ёся.
|
|
|
06.12.2017, 17:55
|
#10
|
сыроед
Регистрация: 01.10.2015
Сообщений: 15,873
Бабло: $1862475
|
лучше скрипт импорта поправь
почему-то дата отсутствует и позиции разные
кстати по дефолту должен быть NULL, т.е. создаёшь просто:
added date (added = название колонки)
это на будущее, потому что тут пустышек быть не может
|
|
|
|