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

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

Movie: id, [...]

MovieName: id, movieID (FK Movie), имя, страна

В случае, если есть разные имена, каждый человек должен получить обзор со всеми именами.Должен ли я каждый раз проверять, есть ли другое название для этого фильма?Или лучше использовать дополнительный столбец Movie "DifferentNames" (Bool)?

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

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

Вы также можете сохранить страну оригинального фильма в таблице Movie и хранить только разные имена в MovieName. Однако вам необходимо поддерживать целостность данных (уникальную movie_id + name) в дополнение к уникальной movie_id + country.

0 голосов
/ 18 ноября 2018

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

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

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

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

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