Дизайн - шестая нормальная форма
У меня есть следующие таблицы:
Blogs { BlogName }
BlogPosts { BlogName, PostTitle }
Сообщения блога одновременно моделируют сущность и отношения, что недопустимо в соответствии с 6nf (согласно третьему манифесту).
В 6nf это будет:
Blogs { BlogName }
Posts { PostTitle }
BlogPosts { BlogName, PostTitle}
Если бы я хотел упорядочить сообщения в блоге по последовательности nbr (просто пример), это была бы другая таблица
BlogPostsSorting { BlogName, PostTitle , SortOrder }
Я правильно понял?
2 ответа
sqlvogel правильно в этом ответе.
За исключением этой небольшой детали: вопрос о том, является ли Blogs избыточным или нет, зависит от того, хотите ли вы / нужно ли применять ограничение, чтобы все кортежи Blogs имели хотя бы один соответствующий кортеж BlogPost. Вы не заявили ничего, чтобы прояснить это.
То же самое относится и к вашим третьим сообщениям relvar, за исключением того, что в этом случае весьма маловероятно, что PostTitle может быть действительным, если он не появится как заголовок хотя бы одного BlogPost.
Требуется ли вам Relvar SortingOrder в качестве дополнительного, зависит от того, могут ли быть BlogPosts, для которых не требуется порядок сортировки. Если нет, тогда ваш SortingOrder relvar просто заменяет BlogPosts. Если есть, то вы можете получить два relvars; или, в качестве альтернативы, вы все равно можете просто использовать relvar SortingOrder и взламывать случай постов без упорядочения, используя фиктивное значение (например, всегда -1).
Каковы ключи ваших таблиц? Исходя из названий столбцов, я предполагаю, что ключом BlogPosts может быть только {BlogName,PostTitle}. В этом случае BlogPosts уже находится в 6NF - он не имеет неосновных атрибутов и поэтому не может быть разложен без потерь. Блоги relvar и Posts relvar будут излишними - они вам не нужны.
Сообщения в блоге одновременно моделируют сущность и отношения, что недопустимо в соответствии с 6nf (согласно третьему манифесту)
Можете ли вы сказать мне, где, по вашему мнению, в Третьем манифесте говорится, что это неверно? Я уверен, что нет, но я хотел бы знать, как вы пришли к такому выводу.