оптимизация пространства в базе данных MySQL - PullRequest
0 голосов
/ 18 апреля 2019

Я строю базу данных, которая содержит большое количество пар, каждая из которых состоит из двух частей, идентификатора и длинной строки.Каждый идентификатор уникален, однако есть только несколько этих длинных строковых атрибутов.Чтобы сэкономить место, я подумал сделать следующее:

У меня будет две таблицы, первая с парами идентификатора формы и stringID, а вторая с парами формы stringID longString.

Я хотел бы знать, выполняется ли такая оптимизация пространства автоматически в базе данных mysql.Если это так, я не стану реализовывать это самостоятельно.Если этот вид оптимизации пространства не выполняется автоматически, есть ли лучший способ сделать это?Что считается наилучшей практикой в ​​отношении этого типа оптимизации?Спасибо

Чтобы сделать мой вопрос более конкретным, рассмотрим следующую исходную таблицу:

employee   WorkAddress (an extremely long string)  
name1      address1  
name2      address1  
name3      address1  
name4      address1  
...  
name1000   address2  
name1001   address2  
name1002   address2  
...
etc

И новую таблицу с более эффективным использованием пространства:

employee   addressID (much shorter than the long string)
name1      ID1
name2      ID1
...
name1000   ID2
name1001   ID2
name1002   ID2
...
etc

В дополнение квторая таблица:

addressID  WorkAddress
ID1        address1
ID2        address2
...
etc

ПРИМЕЧАНИЕ. Если вы считаете, что этот вопрос не подходит для stackoverflow, порекомендуйте один из других сайтов stackexchange для этого типа вопросов.Спасибо

1 Ответ

1 голос
/ 19 апреля 2019

Решение с двумя таблицами, безусловно, правильное. Не из-за каких-либо пространственных соображений (если вы находитесь в среде, где (внешнее) пространство действительно короткое, полностью перегруженная СУБД, вероятно, в любом случае не подходит), а из-за обеспечения целостности данных путем нормализации.

Если эти строковые значения находятся непосредственно в таблице с идентификаторами и они изменяются, это означает, что необходимо изменить каждую строку в этой таблице с этими значениями. Для одного это больше, чем просто изменить одну строку в подходе с двумя таблицами. Но что еще хуже, если вы забудете обновить одну или несколько строк при любых обстоятельствах, ваши данные будут повреждены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...