anpv
Guest
Структура таблиц и необязательные данные
Доброго времени суток.
Подскажите, правильна ли такая структура таблиц (с точки зрения нормализации данных).
Имеется таблица с информацией о покупателе, со следующими данными: фамилия, имя, отчество, паспорт, дата рождения и т.д. Из этих данных обязательными является только фамилия.
Тогда получается следующая структура таблиц:
Получение информации одним запросом, с учетом того, что имени, отчества, паспортных данных может не быть:
Доброго времени суток.
Подскажите, правильна ли такая структура таблиц (с точки зрения нормализации данных).
Имеется таблица с информацией о покупателе, со следующими данными: фамилия, имя, отчество, паспорт, дата рождения и т.д. Из этих данных обязательными является только фамилия.
Тогда получается следующая структура таблиц:
PHP:
CREATE TABLE `customer` (
`id` int not null auto_increment,
`last_name` varchar(20) not null,
PRIMARY KEY(`id`));
-------------
CREATE TABLE `cust_fname` (
`id` int not null auto_increment,
`id_customer` int not null,
`first_name` varchar(15) not null,
PRIMARY KEY (`id`,`id_customer`));
-------------
CREATE TABLE `cust_pname` (
`id` int not null auto_increment,
`id_customer` int not null,
`patronymic_name` varchar(20) not null,
PRIMARY KEY (`id`,`id_customer`));
-------------
CREATE TABLE `cust_passport` (
`id` int not null auto_increment,
`id_customer` int not null,
`s_pass` varchar(4) not null,
`n_pass` varchar(6) not null,
PRIMARY KEY (`id`,`id_customer`));
...
PHP:
SELECT
`customer`.`last_name`, `cust_fname`.`first_name`, `cust_pname`.`patronymic_name`, `cust_passport`.`s_pass`, `cust_passport`.`n_pass`
FROM
`customer`
LEFT JOIN `cust_fname` ON `cust_fname`.`id_customer`=`customer`.`id`
LEFT JOIN `cust_pname` ON `cust_pname`.`id_customer`=`customer`.`id`
LEFT JOIN `cust_passport` ON `cust_passport`.`id_customer`=`customer`.`id`