Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как сделать соблюдая атомарность / 13 сообщений из 13, страница 1 из 1
15.11.2011, 00:57
    #37526532
Polzovatel1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать соблюдая атомарность
Только начал изучение Проектирование БД и не могу решить задачу.

Есть поля
---------------------------------------------------------------
id | Название | Время работы
---------------------------------------------------------------
1 | Имя 1___| с 10 до 18, пн- пт
---------------------------------------------------------------
2 | Имя 2___| с 10 до 18, пн- чт, пт с 10 до 17, сб-вс вых
---------------------------------------------------------------
3 | Имя 3___| круглосуточно
---------------------------------------------------------------

как хранить время работы соблюдая атомарность? Время работы может быть разное то есть может каждый день с 10 до 18, а может для каждого для разное время работы.

Можно конечно строкой хранить, но это для меня не подходит т.к. потом будет очень сложно выбрать компании которые
работают например с 10 до 18 в субботу

спасибо!
...
Рейтинг: 0 / 0
15.11.2011, 01:56
    #37526563
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать соблюдая атомарность
в лоб (что годится если задача учебная)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
create table my_table
(
id int,
names varchar( 100 ),
day_of_week int check (day_of_week between  1  and  7 ), 
time_from datetime,
time_to datetime
)
...
Рейтинг: 0 / 0
15.11.2011, 06:28
    #37526613
Как сделать соблюдая атомарность
SERG1257в лоб (что годится если задача учебная)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
create table my_table
(
id int,
names varchar( 100 ),
day_of_week int check (day_of_week between  1  and  7 ), 
time_from datetime,
time_to datetime
)


Только для времени нельзя использовать datetime, поскольку дата там отсутствует. Если СУБД поддерживает чистый тип TIME, надо его сипользовать. Если нет, то лучше всего хранить целочисленные значения минут от начала дня, плюс соответствующие констрейнты (на допустимые количества минут и на то, что minute_from меньше чем minute_to). Перевести время в минуты и минуты во время -- задача тривиальная, в отличие от задачи "отрезания" даты из типа datetime.
...
Рейтинг: 0 / 0
15.11.2011, 09:48
    #37526701
Polzovatel1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать соблюдая атомарность
SERG1257в лоб (что годится если задача учебная)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
create table my_table
(
id int,
names varchar( 100 ),
day_of_week int check (day_of_week between  1  and  7 ), 
time_from datetime,
time_to datetime
)



Этот вариант не подойдет т.к. при такой таблице я не смогу внести, что компания работает с 10 до 18 пн - пт, с 10 до 15 сб, вс -выходной.

какие еще решение?
У думал сделать так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE  TABLE kompany(
  idkompany INT NOT NULL AUTO_INCREMENT ,
  name VARCHAR( 45 ) NULL ,
  mode INT NULL )

CREATE  TABLE IF NOT EXISTS modes (
  idmodes INT NOT NULL ,
  time_from INT NULL ,
  time_to INT NULL ,
  day_of_week INT NULL )


И в таблицу modes для каждого дня писать время и день недели.

На сколько это будет правильно? Ведь таблица modes тогда будет в 7 раз больше чем таблица kompany. а записей будет много.
...
Рейтинг: 0 / 0
15.11.2011, 10:02
    #37526724
Polzovatel1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать соблюдая атомарность
и чаще всего это записывать можно стандартно типа с 10 до 18 пн- сб.
а соответственно я столкнусь с тем что в 80% случаев я буду писать по шесть лишних записей.
...
Рейтинг: 0 / 0
15.11.2011, 10:13
    #37526748
_мод
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать соблюдая атомарность
Polzovatel1

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE  TABLE kompany(
  idkompany INT NOT NULL AUTO_INCREMENT ,
  name VARCHAR( 45 ) NULL ,
  mode INT NULL )

CREATE  TABLE IF NOT EXISTS modes (
  idmodes INT NOT NULL ,
  idkompany INT NOT  ,
  day_from INT NULL )
  day_to INT NULL )
  time_from INT NULL ,
  time_to INT NULL 
)
...
Рейтинг: 0 / 0
15.11.2011, 14:19
    #37527306
Cane Cat Fisher
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать соблюдая атомарность
Как насчет "последняя пятница месяца - санитарный день" ? Бывает?
...
Рейтинг: 0 / 0
15.11.2011, 14:31
    #37527347
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать соблюдая атомарность
Polzovatel1а соответственно я столкнусь с тем что в 80% случаев я буду писать по шесть лишних записей.

Ты уж выбери: необходимо тебе компактное хранение или простота и скорость выборок...
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
15.11.2011, 15:08
    #37527443
_мод
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать соблюдая атомарность
Cane Cat FisherКак насчет "последняя пятница месяца - санитарный день" ? Бывает?
Добавить признак - работает, не работает
...
Рейтинг: 0 / 0
15.11.2011, 15:33
    #37527494
Polzovatel1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать соблюдая атомарность
Cane Cat FisherКак насчет "последняя пятница месяца - санитарный день" ? Бывает?
нет просто режим работы компании.


Dimitry SibiryakovPolzovatel1а соответственно я столкнусь с тем что в 80% случаев я буду писать по шесть лишних записей.

Ты уж выбери: необходимо тебе компактное хранение или простота и скорость выборок...


мне нежно хранении информации о компании с режимом работы. И реализовать это оптимально, как только возможно. опыта у меня нет поэтому и спрашиваю оптимальное решение данной проблемы.
...
Рейтинг: 0 / 0
15.11.2011, 15:36
    #37527501
WereWolf777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать соблюдая атомарность
ТС, вот здесь обсуждался один из вариантов хранения расписаний http://www.sql.ru/forum/actualthread.aspx?tid=859159
...
Рейтинг: 0 / 0
15.11.2011, 15:50
    #37527530
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать соблюдая атомарность
Polzovatel1мне нежно хранении информации о компании с режимом работы. И реализовать это оптимально,
как только возможно.

Ответьте (для себя) на вопрос "оптимально для чего?" Потому что "оптимальность" не
абсолютная величина. Она всегда прикладывается к конкретному использованию.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
15.11.2011, 17:03
    #37527672
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать соблюдая атомарность
On 11/15/2011 01:57 AM, Polzovatel1 wrote:

> Можно конечно строкой хранить, но это для меня не подходит т.к. потом будет
> очень сложно выбрать компании которые
> работают например с 10 до 18 в субботу

Два поля, начало работы и конец работы,
и это (видимо) в отдельной таблице, ключ таблицы -- ссылка на фирму
и ссылка или код дня недели.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как сделать соблюдая атомарность / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]