Я не являюсь администратором базы данных, поэтому я не знаком с правильным жаргоном, так что, возможно, название вопроса может немного ввести в заблуждение.Это нормально, чтобы дублировать значения в SQL
Итак, вещь. У меня есть члены для определенной системы, эти элементы могут быть частью демографического сегмента (любой вид сегмента: любимый цвет кожи, пол, работы и т.д.)
Эти таблицы
SegmentCategory
ID, Name, Description
SegmentCategory_segment
SegmentID, SegmentCategoryID
Segment
ID, Name, Description
MemberSegment
ID, MemberID, SegmentID
Так парень который разработал БД, решил убрать все нормальные все, чтобы он поместил пол участника в сегмент, а не в таблицу Участника.
Это нормально? Согласно моей логике, пол, это свойство члена, поэтому оно должно быть на его сущности. Но, делая это, должны быть дублированные данные. (Гендер для члена и пола как сегмент). Однако триггер в таблице Member мог бы исправить это (обновить сегмент при изменении пола)
Необходимо выполнить сканирование 4 таблицы для того, чтобы получить собственность от члена, кажется мне более сложным для меня.
Вопрос в том, прав я или нет? Если да, то как я могу предложить изменения в DBA?
Моделирует ли данные данные по мере необходимости? кажется так. Если в процессе, который вы моделируете, есть что-то, что говорит, что человек (с полом) может не иметь демографического сегмента, он, по-видимому, является действительным подходом к моделированию. Однако, если вы говорите, что таблица имеет строку «Пол» в столбце где-то, чтобы определить пол (а не фактический столбец), то вы катаетесь рядом с моделью данных EAV (значение атрибута сущности), которая презирает и ненавидел многие моделисты данных. Интересное обсуждение здесь: https://www.simple-talk.com/sql/t-sql-programming/avoiding-the-eav-of-destruction/ –
Ваша схема не объясняет, что такое «Сегмент». Это может быть привязка к другой системе, и наличие пола как сегмента может быть очень важным. –