1

Читают системы управления базой данных книг по Рамакришнан, и в главе, связанную с схемой утонченности и нормальными формами, я увидел фразу, говоря:Функциональная зависимость является СУБД - ключ

K is a candidate key for R means that K ----> R , where R is the relation. 

Мы также имеем разложение правило:

If X ---->YZ, then X----->Y and X----->Z 

Тогда, например, позвольте R = XABCDE и X быть ключом. Тогда, поскольку X ---> XABCDE, повторное использование второго правила, мы можем сказать X -> A, X ---> B и т. Д. Тогда это означает, что X определяет все атрибуты. Но я здесь смущен: тогда мы не можем иметь строку в таблице, такую, что для одного и того же значения X существует другое значение A. Например, пусть X - номер идентификатора человека, а A - модель автомобиля, которую имеет человек. Тогда у человека не может быть двух автомобилей, но у нас нет такого ограничения, он должен иметь два или более автомобилей.

Что я здесь делаю неправильно? Может ли кто-нибудь помочь?

Благодаря

+0

X - это ключ для человека, а не для автомобиля. – Pleun

+0

Да, я говорю, что если X -> A, то значение X определяет A, то есть номер идентификатора определяет автомобиль. Тогда у человека может быть только одна машина. Здесь что-то не так? – yrazlik

+0

Это наоборот, X определяет для конкретного автомобиля владельца – Pleun

ответ

2

Например, пусть X является идентификационным номером атрибута человека, а A - моделью автомобиля, которую имеет человек. Тогда у человека не может быть двух автомобилей, но у нас нет такого ограничения, он должен иметь два или более автомобилей.

Что я здесь делаю неправильно? Может ли кто-нибудь помочь?

Вы не заладилось до того вы начали нормализации R.

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

Если вы начинаете с R {XABCDE}, где «X» - это идентификационный номер человека, а «A» - это своего рода автомобиль, то образцы данных для R могут выглядеть так.

person_id car_model  B C D E 
-- 
1   Buick Wildcat ... 
2   Toyota Corolla ... 
3   Honda Accord ... 

Или это может выглядеть так.

person_id car_model      B C D E 
-- 
1   Buick Wildcat, Nissan Sentra ... 
2   Toyota Corolla    ... 
3   Honda Accord     ... 

Или это может выглядеть так.

person_id car_model  B C D E 
-- 
1   Buick Wildcat ... 
1   Nissan Sentra ... 
2   Toyota Corolla ... 
3   Honda Accord ... 

Первый пример предполагает, что вы хотите хранить только одну машину на человека. Это оправданное дизайнерское решение (если база данных не должна знать, сколько автомобилей у каждого человека). Университеты редко заботятся о том, сколько у вас автомобилей; они просто хотят знать, какой из них должен иметь наклейку для парковки.

Решение о том, что хранить, не имеет ничего общего с нормализацией.

Другие примеры предполагают, что вы хотите хранить более одного автомобиля на человека, и в этом случае вам необходимо выполнить некоторую нормализацию по крайней мере (во втором примере) или пересмотреть свой выбор первичного ключа по крайней мере (в третьем примере).

Как только вы решили, что хранить, вы можете начать нормализацию. Действительно, как вы могли начать нормализацию до, вы решаете, что хранить? Это было бы невозможно.

0

В отношении R (XABCDE), если Х является ключом, то при любом значении X соотношение разрешает только одно значение для A, B, C, D и E в любой момент времени. Если это ограничение не соответствует реальности, которую вы намеревались моделировать, возможно, X был неправильным выбором ключа.

 Смежные вопросы

  • Нет связанных вопросов^_^