Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MS SQL SERVER компановка таблиц / 25 сообщений из 34, страница 1 из 2
28.05.2020, 11:59
    #39963262
iivvvii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL SERVER компановка таблиц
Здравствуйте

Есть такая схема
https://prnt.sc/sp9wfd

dbo.Bus там находятся автобусы == Икарус == Маршрутка
dbo.Driver Имена водителей
IntercityBus автобусы дальнего следования
TwoSectionBuses автобусы курсирующие в городе
Weekend Это таблица где написаны праздничные дни месяца нерабочие

Нарисовать схему БД и написать запрос на языке T-SQL, выводящий расписание для междугородных автобусов на выходные дни текущего месяца.

К чему привязать таблицу Weekend или вообще оставить без связи ?
...
Рейтинг: 0 / 0
28.05.2020, 12:10
    #39963271
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL SERVER компановка таблиц
iivvvii,

ни одна из таблиц по смыслу не связана с таблицей Weekend.
...
Рейтинг: 0 / 0
28.05.2020, 12:12
    #39963273
iivvvii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL SERVER компановка таблиц
Владислав Колосов, Именно не связанна
...
Рейтинг: 0 / 0
28.05.2020, 12:14
    #39963275
iivvvii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL SERVER компановка таблиц
Владислав Колосов,Получается оставить без связи и ссылаться на нее в запросах о входных днях
...
Рейтинг: 0 / 0
28.05.2020, 14:04
    #39963354
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL SERVER компановка таблиц
Почему не объединить IntercityBus и TwoSectionBus в одну таблицу с полем-дискриминатором? На одном автобусе у тебя может ездить куча водителей, но разве не может один водитель ездить на разных автобусах? Смысл таблицы Bus какой вообще? Это какой-то конкретный автобус, или номер маршрута, или что? Мне кажется, что, просто, твоя схема, на самом деле, это говносхема :(
...
Рейтинг: 0 / 0
28.05.2020, 14:21
    #39963365
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL SERVER компановка таблиц
iivvvii,

замените Weekend на Календарь
...
Рейтинг: 0 / 0
28.05.2020, 17:10
    #39963487
iivvvii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL SERVER компановка таблиц
fkthat,
Таблица Bus там одно поле в котором написаны марки автобусов например Икарус номер такой то == Маршрутка номер такая то ну точно так же как и Таблица Driver только в место автобусов там имена водителей . Вопрос почему я не соединил эти 2 таблицы.
У нас 3 разновидности направлений == Междугородные рейсы = пригородные и городские .
Если создавать все в 1 таблице это вполне можно но тогда нужно добавить поле чтобы их различать а именно междугородный это рейс или пригородный. Чтобы не дублировать кучу одинаковых полей я решил разбить это на 3 таблицы по рейсам.

https://prnt.sc/spgnam


UrbanBas - городские маршруты
IntercityBus - междугородные маршруты
ShuttleBus - пригородные маршруты


Спасибо всем за советы .
Исправил название таблицы + КАЛЕНДАРЬ + и поставил связи многие ко многим между таблицами Водителя и Автобусов но

Главный вопрос так и остался не выясненным что делать с таблицей календарь я думаю что ее так и оставить без связей.
...
Рейтинг: 0 / 0
28.05.2020, 18:00
    #39963519
iivvvii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL SERVER компановка таблиц
И еще вопрос В таблице Calendar должны быть все выходные дни с субботами и воскресениями или туда заносятся только простые праздники ? Я о том когда буду писать запрос как определять выходные субботу и воскресение через таблицу календарь или через функцию ?
...
Рейтинг: 0 / 0
28.05.2020, 18:35
    #39963536
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL SERVER компановка таблиц
iivvvii,

удобно сохранить в таблице и выходные, и праздничные дни.
...
Рейтинг: 0 / 0
28.05.2020, 19:30
    #39963575
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL SERVER компановка таблиц
iivvvii
И еще вопрос В таблице Calendar должны быть все выходные дни с субботами и воскресениями или туда заносятся только простые праздники ? Я о том когда буду писать запрос как определять выходные субботу и воскресение через таблицу календарь или через функцию ?
В таблице Calendar должны быть все дни. А выходные дни, субботы, воскресенья, праздники, переносы выходных дней, определяемые постановления правительства, отмечаются атрибутами, например, IsWorker, IsHolyday, и т.д.
В интернете можно найти пример такой таблицы, с скриптом для её заполнения (потом, конечно, нужно вручную отметить праздники в соответствии с распоряжениями властей в конкретной стране).

Тогда всё будет быстро для сервера, и удобно для программиста, без зубодробительных условий в запросах.
...
Рейтинг: 0 / 0
28.05.2020, 19:41
    #39963583
iivvvii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL SERVER компановка таблиц
alexeyvg,Не дадите ссылку на такой пример я искал но что то не нашел == наверно не правильно задавал запрос в браузере
...
Рейтинг: 0 / 0
28.05.2020, 20:45
    #39963617
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL SERVER компановка таблиц
iivvvii
alexeyvg,Не дадите ссылку на такой пример я искал но что то не нашел == наверно не правильно задавал запрос в браузере
Например, в порядке полезности:
http://blog.bitimpulse.com/post/2013/02/12/Date-and-Time-Dimension-Template.aspx
https://www.sql.ru/forum/1097504/vuha-dlya-kalendarya
https://www.sql.ru/forum/1071602/sozdanie-kalendarya
https://www.sql.ru/forum/1203116/sproektirovat-kalendar-rabochih-dney
...
Рейтинг: 0 / 0
28.05.2020, 21:07
    #39963630
iivvvii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL SERVER компановка таблиц
alexeyvg, ОО !! Большое спасибо . Теперь есть чем заняться
...
Рейтинг: 0 / 0
28.05.2020, 21:13
    #39963636
godsql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL SERVER компановка таблиц
iivvvii

Главный вопрос так и остался не выясненным что делать с таблицей календарь я думаю что ее так и оставить без связей.


Весь вопрос, что вы будете делать с данными, которые есть в "календаре" :)
Если судить по представленной структуре баз, то он вам вообще не нужен.
А так.. Обычно Календарь имеет связи с теми полями других таблиц, где хранятся даты, в случае необходимости учета выходных/праздничных/нерабочих и т.д. дней
...
Рейтинг: 0 / 0
28.05.2020, 22:00
    #39963663
iivvvii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL SERVER компановка таблиц
godsql,
. Требуется автоматизировать процесс назначения автобусов автопарка на маршруты. В автопарке есть расписание по дням какой автобус на какой маршрут назначен. Определённые автобусы могут быть назначены только на определённые маршруты. Например, междугородные автобусы назначаются только на междугородные маршруты, двухсекционные автобусы на маршруты по большим улицам и т.п. Нарисовать схему БД и написать запрос на языке T-SQL, выводящий расписание для междугородных автобусов на выходные дни текущего месяца.

Вот у меня такое задание == хочется сделать красиво и правильно

Если структура та что у меня не подходит то изменить ее не поздно .
Главное понять свою ошибку .
...
Рейтинг: 0 / 0
29.05.2020, 05:09
    #39963838
iivvvii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL SERVER компановка таблиц
Я хотел занести в таблицу == КАЛЕНДАРЬ == выходные все а потом через запрос сравнивая даты выходных дней из таблицы ++ КАЛЕНДАРЬ с датами рейсов у других таблиц выводить таким способом все рейсы в выходные дни или рейсы по направлениям.
Но посоветовавшись я понял что мой метод наверно будет работать не столь быстро так как есть какие то более прогрессивные методы
которые будут работать быстрее. Хотелось бы понять их алгоритм. И разобраться как это написать. .
...
Рейтинг: 0 / 0
29.05.2020, 08:11
    #39963855
PizzaPizza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL SERVER компановка таблиц
iivvvii
Определённые автобусы могут быть назначены только на определённые маршруты

это бизнеслогика, она к структуре имеет вторичное отношение. Вы можете заложить ограничения и правила в структуру связей таблиц, но это не основной механизм управления бизнеслогикой.

iivvvii
Требуется автоматизировать процесс
iivvvii
написать запрос на языке T-SQL, выводящий расписание

Выводящий или составляющий?
Выводящий в каком виде? Таблички или будет интерфейс?

Определите для себя как вы видите конечный результат. Это поможет.
...
Рейтинг: 0 / 0
29.05.2020, 10:55
    #39963926
godsql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL SERVER компановка таблиц
iivvvii
godsql,
. Требуется автоматизировать процесс назначения автобусов автопарка на маршруты. В автопарке есть расписание по дням какой автобус на какой маршрут назначен. Определённые автобусы могут быть назначены только на определённые маршруты. Например, междугородные автобусы назначаются только на междугородные маршруты, двухсекционные автобусы на маршруты по большим улицам и т.п. Нарисовать схему БД и написать запрос на языке T-SQL, выводящий расписание для междугородных автобусов на выходные дни текущего месяца.

Все равно непонятно. Городить какую-то структуру ради запроса "выводящий расписание для междугородных автобусов на выходные дни текущего месяца"?

В общем, рекомендую пробовать пройти стандартным путем разработки:
1. Определить задачи приложения
2. Определить работу бизинеслогики.
3. Разложить бизнеслогику на элементарные составляющие
4. Определить необходимое количество данных
5. Спроектировать таблицы и связи
ну и т.д.
...
Рейтинг: 0 / 0
29.05.2020, 13:56
    #39964072
iivvvii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL SERVER компановка таблиц
iivvvii
Требуется автоматизировать процесс
iivvvii
написать запрос на языке T-SQL, выводящий расписание

Выводящий или составляющий?
Выводящий в каком виде? Таблички или будет интерфейс?

Определите для себя как вы видите конечный результат. Это поможет.[/quot]

Выводящий или составляющий = да какая разница лижбы понять как правильно это делать а кроме того подхода что я писал выше у меня нет других идей.

Думаю сделать в виде таблицы.

Конечный результат
По заданию вывести в запросе в табличном виде все рейсы междугородние на выходные дни .
...
Рейтинг: 0 / 0
29.05.2020, 14:00
    #39964074
iivvvii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL SERVER компановка таблиц
Я программирую в основном на C# .NET = А сложные вопросы типа этого иногда меня ставят в тупик
...
Рейтинг: 0 / 0
29.05.2020, 18:15
    #39964205
Fox Malder
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL SERVER компановка таблиц
Приведите примеры данных, которые могут оказаться в Ваших таблицах, выложите скрины. Не все однозначно понятно по вашим атрибутам.
...
Рейтинг: 0 / 0
29.05.2020, 19:56
    #39964229
iivvvii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL SERVER компановка таблиц
Fox Malder,

https://prnt.sc/sq78vf
https://prnt.sc/sq798t
https://prnt.sc/sq79ky
https://prnt.sc/sq79xj
https://prnt.sc/sq7awb
https://prnt.sc/sq7bqr
https://prnt.sc/sq7cgw

Возможно лучше обьединить 3 таблицы вместе маршрутов с полем которое будит их идентифицировать

И вообще
Не пойму зачем в таблицу Календарь заносить все дни не достаточно ли там одних выходных дней дат ? Или я чего то не понимаю

https://prnt.sc/spgnam

По заданию нужно найти выходные:
Требуется автоматизировать процесс назначения автобусов автопарка на маршруты. В автопарке есть расписание по дням какой автобус на какой маршрут назначен. Определённые автобусы могут быть назначены только на определённые маршруты. Например, междугородные автобусы назначаются только на междугородные маршруты, двухсекционные автобусы на маршруты по большим улицам и т.п. Нарисовать схему БД и написать запрос на языке T-SQL, выводящий расписание для междугородных автобусов на выходные дни текущего месяца.
...
Рейтинг: 0 / 0
29.05.2020, 20:59
    #39964242
Fox Malder
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL SERVER компановка таблиц
iivvvii,

1) Скорее всего имеется ввиду таблица не просто календаря, а производственного календаря. Официальную версию можно найти здесь : https://data.gov.ru/opendata/7708660670-proizvcalendar , скачать можно в формате csv, и после этого закачать себе в БД. Он седержит перечень выходных и праздничных дней.

2) Таблицы IntercityBus и остальные, это не Bus, это сущность маршрута. Значит их нужно свети в одну таблицу. Чтобы отделять один тип от другого добавьте колонку type, и сделайте для этой колонки таблицу - справочник тивов маршрута 1 - международный, 2 - междугородний, 3 - еще какой-то и т.д. Ведь иначе, если типы маршуртов буду расширятся, то с Вашей схемой устанете плодить таблички. А в приведенном варианте нужно добавить только одну строку с типом.

3) Связывать с календарем можно по полям Dute в таблице маршрута, и dat в поле календаря.

3а) Если в календарь закачаетее только данные из источника, значит у Вас там будут только выходные и праздничные. Занчит если даты dute и dat сопадают это нужная Вам выборка.

3б) Если в календаре будуе держать все дни, то, объединяя все дни, и данные из csv введите поле, которе будет флагом, указывающим какой это день рабочий или выходный.

Сделайте как поняли, покажите структуру и данные, и продожим. Если что-то непонятно, пишите, отвечу.
...
Рейтинг: 0 / 0
29.05.2020, 22:09
    #39964250
godsql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL SERVER компановка таблиц
iivvvii,

Смотрите, у вас вырисовывается следующие сущности, имхо:

1. Водители
2. Маршруты (внутри/междугородний/.., время и т.д.)
3. Транспортные средства ( тип, размер и т.д.)
4. Календарь (в принципе, можно заносить только праздничные/выходные, если у вас только 2 вида назначений, но обычно просто делают полный календарь)
5. Работа (Выезд?) : связь Маршрут -> ТС + Водитель -> дата;время
6. Ограничения, опционально ( например, автобусов на маршрут)
7. Работа водителей, опционально ( можно вытаскивать из т.Выезд, но выгоднее вести отдельный учет)
8. Доступность ТС для назначения на маршрут, опционально (скажем: Дата;ИД ТС;Состояние)
9. Назначение Водителей на ТС, опц. (ИД Вод; ИД ТС; ДатаНачала;ДатаОконч)

Т.о. описанная задача будет сводится к :

Запросить ТС, где ТС соответствует типу Маршрута и доступны, Водители которых доступны, не работают (из Работы) и соответствуют ограничению на нужные Календарные даты.

При этом нужно учитывать, что ТС может быть больше актуальных Маршрутов (по типам), так и Маршрутов м.б. больше доступных соответствующих ТС.
...
Рейтинг: 0 / 0
30.05.2020, 13:37
    #39964353
iivvvii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL SERVER компановка таблиц
Fox Malder,
https://prnt.sc/sqkf91 Схема
https://prnt.sc/sqkgkx RoutessType
https://prnt.sc/sqkhkr Routess
https://prnt.sc/sqkhyq Driver
https://prnt.sc/sqkjme Calendar
https://prnt.sc/sqkjbd BusDriver
https://prnt.sc/sqkixu Bus

Скачал файл производственного календаря закачал его в менеджмент студио mssql
https://prnt.sc/sqkkuk
https://prnt.sc/sqkl4a

Теперь осталось разобраться как с таблицей этой работать искал в интернете не нашел инструкций.
Как я понял мне нужно из этой таблицы скачать выходные дни и праздники в таблицу Calendar
Каким образом я не знаю так как то она слишком интересно сделана и непонятно что лежит в колонках с 14 по 18
В этой таблице в одной ячейке записаны даты всего месяца через запятую.

Хотел бы сделать и как по заданию и с сохренинием выходных дней
И с сохранением всех дней в таблицу . 2 вариата
Для практики.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MS SQL SERVER компановка таблиц / 25 сообщений из 34, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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