Структура таблицы для хранения одной или двух дат

anpv

Guest
Структура таблицы для хранения одной или двух дат

Доброго времени суток.
Имеется иерахическая древовидная таблица `services` с такими данными:
id / parent / name
1 / 0 / Доставка
2 / 1 / В обе стороны
3 / 1 / Туда
4 / 1 / Обратно
...
Так же в другой таблице `date_delivery` нужно хранить даты (заездов / выездов). Но получается такая ситуация что в случае доставки в обе стороны дат получается две, а в остальных случаях только одна.
Если сделать так:
[sql]
create table `date_delivery` (
`id_services` int not null,
`date_1` datetime,
`date_2` datetime ...
);
[/sql]
, то в половине случаев будет пустовать одно из полей, да и выборки будут не простыми (нужно сначала узнать какие из дат нужны).
Подскажите как лучше решить эту проблему?
 

anpv

Guest
Фанат
Потому что они относятся к покупателям, т.е. в таблице `date_delivery` ещё должно быть поле `id_customer`.
 

Фанат

oncle terrible
Команда форума
так в таблице services разве его нет?
а если нет, то при чем она тогда здесь, если она никак не связана с date_delivery?
 

anpv

Guest
Таблицы `services` и `date_delivery` связаны: `services`.`id` = `date_delivery`.`id_services`. Также таблица `date_delivery` связана с таблицей `customers`: `date_delivery`.`id_customer` = `customers`.`id`.
 

Фанат

oncle terrible
Команда форума
то есть, ты хочешь сказать (но это у тебя получается с большим трудом), что для одного сервиса может быть много доставок?
 

alexhemp

Новичок
anpv

Разные виды доставки - у тебя вестимо разные сущьности. Нужно определится, возможно ты неверно делаешь?

Быть может тип доставки - определяется по другим фактам?

К примеру у тебя может быть таблица фактов.

Поля:

1. Объект (или заказ - то дата чего учитывается)
2. Место отправления
3. Место назначения
4. Дата

Ну и соотв доставка в 2 стороны - это 2 факта. Доставка из места X в место Y + доставка из места Y в место X.

Но это я идею изложил, как бы я строил структуру, отталкиваясь от регистрируемых в базе фактов.
 

Фанат

oncle terrible
Команда форума
вообще, лично я из тебя устал выбивать структуру таблиц и связи между ними.
пусть кто-нибудь другой попробует
 

anpv

Guest
Для одного покупателя существует только один из типов доставки. Таблица `date_delivery` связана с таблицами `services` и `customers` соотношением один-к-одному.
 

alexhemp

Новичок
anpv

"тип" доставки - это функционально зависимый атрибут.

Введи 2 поля даты, в зависимости от наличия-отсутствия дат (можно использовать NULL) вычисляй тип.
 
Сверху