2016-09-27 9 views
0

У меня проблемы с нормализацией this table, и это действительно меня беспокоит. Я вижу, что таблица в первой нормальной форме, но оттуда я застрял. Мой обычный метод - найти частичные зависимости, проверяя консистенции в каждой строке в отношении первичного ключа. Проблема с этой таблицей как:Нормализация нормальных баз данных

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

  2. В строках нет консистенций. На всех экранах есть разные фильмы, которые имеют разные цены/даты и т. Д. Только пользовательский идентификатор/имя пользователя согласованы.

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

Session | Branch | Screen | Movie | Session | Session | Customer | Customer 
ID  | ID  | ID  | ID | Date  | Price | ID  | Name 
SS01 | B1  | S1  | M1 | 3-May-16 | 12.50 | C1  | Chris Hemsworth 
SS02 | B2  | S1  | M2 | 4-Jun-16 | 19.45 | C2  | Chris Evans 
SS03 | B1  | S2  | M2 | 3-May-16 | 12.67 | C2  | Chris Evans 
SS04 | B4  | S2  | M4 | 13-may-16 | 14.56 | C3  |Tom Hiddleston 
SS05 | B3  | S2  | M5 | 23-may-16 | 14.56 | C2  | Chris Evans 
SS06 | B3  | S1  | M5 | 3-Jun-16 | 16.32 | C1  | Chris Hemsworth 
SS07 | B4  | S2  | M3 | 14-May-16 | 21.78 | C2  | Chris Evans 
SS08 | B1  | S2  | M2 | 6-Jun-16 | 16.82 | C2  | Chris Evans 
SS09 | B2  | S3  | M4 | 13-May-16 | 17.90 | C1  | Chris Hemsworth 
SS10 | B4  | S1  | M3 | 6-Jun-16 | 16.37 | C3  | Tom Hiddleston 
+0

pls вводят данные в вопрос, а не в изображения – Nebi

+0

Я не уверен, как эффективно форматировать таблицу в текстовом редакторе. –

+0

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

ответ

1

Он смотрит на меня, как эта таблица находится в довольно хорошей форме (при условии, что он должен быть таблица, описывающая «Session»). Единственный избыточный столбец, который я вижу, это «имя клиента», но все остальное представляется необходимым. «Цена сеанса» может быть или не быть вычисленным столбцом (на основе других столбцов).

Не зная бизнес-логики, я не могу подтвердить, должна ли быть «ветка» (или другие вещи) там или нет.

Редакция: Гипотетически, вы можете удалить столбец «идентификатор сеанса» в качестве pk и вместо этого добавить составной ключ (например: ветвь + экран + фильм + дата сеанса + идентификатор клиента), но это не обязательно сделает это лучше. Вместо этого может быть предпочтительным ограничение уникальности для этих столбцов.

+0

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

+0

@ Haydennull, не позволяйте примеру класса встать на путь обучения.100% времени в реальном мире вам нужно понять бизнес-правила. – HLGEM

+0

Если это для домашней работы, то советуйте сдуть «имя клиента». Вероятно, это то, что они ищут. – Sturgus