С первого взгляда. , .
custName -> custNo
model -> make
outletLoc -> outletNo
carReg, custNo -> hireDate
carReg, custName -> hireDate
И я уверен, что есть и другие. Образец данных не является репрезентативным, и это проблема, когда вы пытаетесь определить функциональные зависимости от данных. Допустим, у ваших выборочных данных была только одна строка.
carReg hireDate make model custNo custName outletNo outletLoc
--
MS34 0GD 14/5/03 Ford Focus C100 Smith, J 01 Bearsden
FD отвечают на вопрос: «Учитывая одно значение для« x », знаю ли я одно и только одно значение для« y »?» На основе этого набора данных из одной строки каждый атрибут определяет каждый другой атрибут. custNo определяет hireDate. hireDate определяет outletLoc. custName определяет модель.
Когда образцы данных не являются репрезентативными, легко найти недопустимые FD. Вам нужны более репрезентативные образцы данных, чтобы отсеять некоторые недействительные функциональные зависимости.
custName -> custNo isn't valid ('C101', 'Hen, P')
carReg, custNo -> hireDate isn't valid ('MS34 0GD', 'C100', '15/7/04')
carReg, custName -> hireDate isn't valid ('MS34 0GD', 'Hen, P', '15/8/03')
Вы можете исследовать функциональные зависимости в примерах данных с помощью SQL.
create table reg (
CarReg char(8) not null,
hireDate date not null,
Make varchar(10) not null,
model varchar(10) not null,
custNo char(4) not null,
custName varchar(10) not null,
outletNo char(2) not null,
outletLoc varchar(15) not null
);
insert into reg values
('MS34 OGD', '2003-05-14', 'Ford', 'Focus', 'C100', 'Smith, J', '01', 'Bearsden'),
('MS34 OGD', '2003-05-15', 'Ford', 'Focus', 'C201', 'Hen, P', '01', 'Bearsden'),
('NS34 TPR', '2003-05-16', 'Nissan', 'Sunny', 'C100', 'Smith, J', '01', 'Bearsden'),
('MH34 BRP', '2003-05-14', 'Ford', 'Ka', 'C313', 'Blatt, O', '02', 'Kelvinbridge'),
('MH34 BRP', '2003-05-20', 'Ford', 'Ka', 'C100', 'Smith, J', '02', 'Kelvinbridge'),
('MD51 OPQ', '2003-05-20', 'Nissan', 'Sunny', 'C295', 'Pen, T', '02', 'Kelvinbridge');
Модель определяет марку?
select distinct model
from reg
order by model;
model
--
Focus
Ka
Sunny
Три разные модели. , .
select model, make
from reg
group by model, make
order by model;
model make
--
Focus Ford
Ka Ford
Sunny Nissan
Да. Одна марка для каждой модели. На основании данных выборки модель -> марка.
Имеет ли carReg, custName -> hireDate?
select distinct carReg, custName
from reg
order by custName;
carReg
--
MH34 BRP Blatt, O
MS34 OGD Hen, P
MD51 OPQ Pen, T
MS34 OGD Smith, J
NS34 TPR Smith, J
MH34 BRP Smith, J
Шесть различных комбинаций carReg и custName.
select carReg, custName, hireDate
from reg
group by carReg, custName, hireDate
order by custName;
carReg custName hireDate
--
MH34 BRP Blatt, O 2003-05-14
MS34 OGD Hen, P 2003-05-15
MD51 OPQ Pen, T 2003-05-20
MH34 BRP Smith, J 2003-05-20
NS34 TPR Smith, J 2003-05-16
MS34 OGD Smith, J 2003-05-14
Да. Одна дата проката для каждой комбинации carReg и custName. Таким образом, на основе данных примера {carReg, custName} -> hireDate.