|
|
|
Структура таблиц и необязательные данные
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток. Подскажите, правильна ли такая структура таблиц (с точки зрения нормализации данных). Имеется таблица с информацией о покупателе, со следующими данными: фамилия, имя, отчество, паспорт, дата рождения и т.д. Из этих данных обязательными является только фамилия. Тогда получается следующая структура таблиц: 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`)); ... Получение информации одним запросом, с учетом того, что имени, отчества, паспортных данных может не быть: 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` ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 09:03:14 |
|
||
|
Структура таблиц и необязательные данные
|
|||
|---|---|---|---|
|
#18+
Вообще то тебе в ветку по проектированию . Но от себя скажу, что я бы делить так не стал Твое поле фамилии не является, и не может являтся, уникальным. Как известно даже ФИО не дает уникальности. А ты так вот взял и раскидал... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 09:12:20 |
|
||
|
Структура таблиц и необязательные данные
|
|||
|---|---|---|---|
|
#18+
В данном случае, ИМХО, не фига париться и следует все хранить в одной таблице. Весь результат титанических усилий - возможная экономия нескольких килобайт на диске (и то врядли - айдишники больше сожрут 8-) - смешно. А вот потери на постоянное соединение таблиц будут приличные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 11:13:27 |
|
||
|
|

start [/forum/topic.php?fid=40&fpage=457&tid=1578074]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
67ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
25ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 322ms |

| 0 / 0 |
