2016-12-26 5 views
1

Взгляните на этот сценарий: синтаксический анализ собирает все ссылки на веб-сайте и сохраняет его в таблице. Теперь нет способа заранее знать, сколько ссылок есть на странице веб-сайта, поэтому невозможно подготовить таблицу с соответствующим количеством столбцов.Дизайн таблицы MySql с переменным числом столбцов

-------|-------|-------|-------|--------------- 
website| link1 | link2 | link3 | maybe100columns 

Каков общий способ решения этой проблемы, когда вы не знаете, сколько столбцов вам нужно? Вы кодируете все ссылки в формате json и вместо этого сохраняете json в 1 столбце?

ответ

1

Зачем вам нужно создавать каждый столбец для каждой ссылки? Система реляционных баз данных внедрена для решения этих проблем. Простым решением будет использование двух таблиц для вашего сценария.

В одной таблице вы сохраните столбец website, а другой столбец с первичным ключом должен быть назначен, чтобы сказать столбец website_id.

В вашей таблице 2 будет первичный ключ присваивается колонке сказать link_id, то внешний ключ присваивается колонке website_id, которая будет находиться в компетенции website_id 1-й таблицы и, наконец, еще один столбец с именем, как говорят link.

Итак, таким образом вы будете хранить как можно больше ссылок для любого сайта.

2

правильный путь основан на нормализации вместо

-------|-------|-------|-------|--------------- 
website| link1 | link2 | link3 | mybe100columns 

вы должны использовать nornalized пару таблицы

мастер

------------|------- 
id_website |website 

подробно

---|------------|---- 
id |id_website |link