Когда создавать, когда изменять таблицу? - PullRequest
0 голосов
/ 26 октября 2009

Я хотел бы знать, что я должен учитывать при принятии решения, следует ли мне создать новую таблицу или изменить существующую таблицу для базы данных sql. я использую и mysql и sqlite.

-Edit- Я всегда думал, что если я смогу поместить столбец в таблицу, где он имеет смысл и может использоваться каждой строкой, тогда я всегда буду его модифицировать. Однако на работе, если это другой «релиз», мы помещаем его в другую таблицу.

Ответы [ 3 ]

1 голос
/ 27 октября 2009

Вы можете изменять существующие таблицы, если

  1. Вы храните базу данных Нормализовано
  2. вы не нарушаете код, который использует таблицу

Вы можете создавать новые таблицы, даже если 1. и 2. верны по следующим причинам:

  1. Причины производительности
  2. Ясность в вашей логике схемы.
0 голосов
/ 26 октября 2009

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

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

То же самое с общим размером записи. Сервер SQL имеет ограничение в байтах на количество байтов, которое может быть в записи, это позволит вам создать структуру, которая потенциально больше этого размера, но не позволит вам поместить в определенную запись больше, чем ограничение в байтах. , Кроме того, менее широкие таблицы, как правило, быстрее доступны из-за того, как они хранятся. Часто люди создают таблицу, которая имеет отношение один к одному (мы называем их расширенными таблицами в нашей структуре) для дополнительных столбцов, которые используются не так часто. Если поля из обеих таблиц будут часто использоваться, часто они по-прежнему создают две таблицы, но имеют представление, которое выберет все необходимые столбцы.

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

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

0 голосов
/ 26 октября 2009

Не уверен, правильно ли я понимаю ваш вопрос, но одну вещь, которую я всегда стараюсь учитывать, это влияние на существующие данные.

В случае приложения, использующего базу данных ...

Когда вы обновляете приложение (включая обновления схемы базы данных), важно убедиться, что любые существующие используемые базы данных будут либо обратно совместимы с приложением, либо существует способ миграции и обновления существующей базы данных. 1005 *

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