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

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

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

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

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

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

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

https://prnt.sc/spgnam


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


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

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

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

Тогда всё будет быстро для сервера, и удобно для программиста, без зубодробительных условий в запросах.
...
Рейтинг: 0 / 0
MS SQL SERVER компановка таблиц
    #39963583
iivvvii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg,Не дадите ссылку на такой пример я искал но что то не нашел == наверно не правильно задавал запрос в браузере
...
Рейтинг: 0 / 0
MS SQL SERVER компановка таблиц
    #39963617
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
MS SQL SERVER компановка таблиц
    #39963630
iivvvii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg, ОО !! Большое спасибо . Теперь есть чем заняться
...
Рейтинг: 0 / 0
MS SQL SERVER компановка таблиц
    #39963636
godsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iivvvii

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


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

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

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

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

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

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

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

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

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

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

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

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

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

Конечный результат
По заданию вывести в запросе в табличном виде все рейсы междугородние на выходные дни .
...
Рейтинг: 0 / 0
MS SQL SERVER компановка таблиц
    #39964074
iivvvii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я программирую в основном на C# .NET = А сложные вопросы типа этого иногда меня ставят в тупик
...
Рейтинг: 0 / 0
MS SQL SERVER компановка таблиц
    #39964205
Fox Malder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приведите примеры данных, которые могут оказаться в Ваших таблицах, выложите скрины. Не все однозначно понятно по вашим атрибутам.
...
Рейтинг: 0 / 0
MS SQL SERVER компановка таблиц
    #39964229
iivvvii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
MS SQL SERVER компановка таблиц
    #39964242
Fox Malder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
MS SQL SERVER компановка таблиц
    #39964250
godsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iivvvii,

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

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

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

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

При этом нужно учитывать, что ТС может быть больше актуальных Маршрутов (по типам), так и Маршрутов м.б. больше доступных соответствующих ТС.
...
Рейтинг: 0 / 0
MS SQL SERVER компановка таблиц
    #39964353
iivvvii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
25 сообщений из 34, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MS SQL SERVER компановка таблиц
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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