У меня есть movie
в базе данных MySQL. movie
содержит атрибуты данных, которые никогда не изменятся, такие как:Каков правильный способ хранения этих данных в схеме MySQL?
- Штрих-код: 025192018626
- Формат: DVD
- Продолжительность: 121 мин.
- Диски: 1
- Название: 12 Monkeys
- Год выпуска: 1995
Это одна строка в таблице.
Но Я хочу дать полную информацию о моей пользователе в отношении этой информации в случае, если что-то не соответствует им или если они просто хотят изменить способ отображения данных каким-либо образом. Меня не волнует, почему, я просто хочу дать своим пользователям возможность делать то, что они хотят.
Предположим, что пользователь # 1 хочет изменить заголовок, чтобы он был «12 обезьян (полка 1)», и это все, что они меняют.
И, скажем, пользователь # 2 хочет вместо этого заменить DVD на цифровую копию.
И, скажем, пользователь №3 хочет изменить заголовок, чтобы они были «Двенадцать обезьян», потому что это альтернативный заголовок.
т.д.
Мой вопрос, как я могу хранить только что одно изменение в этом одно поле только для этого пользователя, не изменяя исходные данные? В отдельной идентичной таблице со всеми полями указаны одни и те же данные, за исключением того, что один поле? Или я могу просто сохранить одно единственное изменение (например, название) и вернуться к данным movie
для остальных?
Каков правильный способ его разработки, особенно если у меня есть 1000 пользователей, которые вносят изменения в пользовательские данные в основном на одно или два поля?
Что относительно фильмов, имеющих несколько названий? Это не просто «Двенадцать обезьян» против «12 обезьян», но это также может быть «L'armée des 12 singes» или любое другое название на [странице IMDB] (http://www.imdb.com/title/tt0114746/releaseinfo). Это отношение «один ко многим» может быть важным для некоторых, а может и нет. Также вы перекрестно связываете вещи, например, если они купили его как комбинированный пакет DVD/Blu-Ray? – tadman
Учитывая, что вы знаете столбцы, которые вы переопределяете, нет необходимости использовать конструкции EAV (атрибутные значения столбцов), которые предлагаются в некоторых ответах. Даже если пользователи могут изобретать свои собственные столбцы, прежде чем использовать EAV, вы должны продемонстрировать, что он превосходит DML/DDL с простыми таблицами. – philipxy