Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Помогите связать две таблички. / 23 сообщений из 23, страница 1 из 1
22.12.2015, 12:00
    #39134303
Arvalon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите связать две таблички.
Доброго дня.
Пытаюсь создать свою первую БД, столкнулся с примитивной задачей, не могу понять как связать 2 таблички.
Итак, у меня есть первая табличка, назовёт её условно "Торговые точки", stores. В ней есть столбцы:
ID (int, Primary Key);
Address;
Description...
и др., простые и не имеющие значение сейчас столбцы.

И есть вторая табличка - "Сотрудники" или employes с полями:
ID (int, Primary Key);
FirstName, SecondName, rank и др.

К каждому магазину могут быть приписаны некоторые сотрудники, с другой стороны сотрудники могут в разные дни работать в разных магазинах (не во всех). Т.е. как я дальше понял это отношение "многие-ко-многим". Но дальше я не понимаю что получается. Это отношение создаёт ещё одну промежуточную табличку. А что делать дальше я не понимаю.

А необходимо что бы в приложении отображались магазины с сотрудниками, которые могут там работать. Как это реализовать? Нужно доработать отношение табличек и/или какой запрос написать для вывода информации о магазине с списком привязанных продавцов.
...
Рейтинг: 0 / 0
22.12.2015, 12:09
    #39134317
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите связать две таблички.
ArvalonА необходимо что бы в приложении отображались магазины с сотрудниками, которые могут там работать. Как это реализовать? Нужно доработать отношение табличек и/или какой запрос написать для вывода информации о магазине с списком привязанных продавцов.

Курс по РМД и СУБД проходят в институте. ;-)
...
Рейтинг: 0 / 0
22.12.2015, 12:11
    #39134321
Arvalon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите связать две таблички.
Институт давно закончен, курс по БД сдан и забыл.
Вы могли бы в общих чертах на 1-2 абзаца описать необходимые доработки, далее попытаюсь разобраться сам с помощью литературы.
...
Рейтинг: 0 / 0
22.12.2015, 12:12
    #39134324
Cane Cat Fisher
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите связать две таблички.
Arvalon,

Нужна третья таблица, "Приписка сотрудников к магазинам", всего с двумя полями.

Точка_ID
Сотрудник_ID

Только меня смущает оговорка "сотрудники могут в разные дни работать в разных магазинах". Это расписание по дням нужно хранить?
...
Рейтинг: 0 / 0
22.12.2015, 12:24
    #39134353
Arvalon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите связать две таблички.
Cane Cat FisherТолько меня смущает оговорка "сотрудники могут в разные дни работать в разных магазинах". Это расписание по дням нужно хранить?
Нет, не нужно

Cane Cat FisherArvalon, Нужна третья таблица, "Приписка сотрудников к магазинам", всего с двумя полями.
Точка_ID
Сотрудник_ID

Да, я понял что будет что-то похожее на это, пример из статьи про отношения на Хабре:


Допустим я получу такую табличку. А далее, допустим, в приложении у меня должна выводиться табличка из двух столбцов:

Магазин Сотрудники
Магазин 1 Иванов, Петров, Сидоров
Магазин 2 Петров, Сидоров
Магазин 3 Иванов
.... ......

Как вообще это реализовывается? На ум сразу только приходит запрос по промежуточной табличке A_B с исключением дублей по полю Точка_ID и сбором всех Сотрудник_ID, в свою очередь тоже с удлением дублей... МОжет это как-то проще делается?
...
Рейтинг: 0 / 0
22.12.2015, 12:31
    #39134366
Кот Матроскин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите связать две таблички.
ArvalonCane Cat FisherТолько меня смущает оговорка "сотрудники могут в разные дни работать в разных магазинах". Это расписание по дням нужно хранить?
Нет, не нужно

Cane Cat FisherArvalon, Нужна третья таблица, "Приписка сотрудников к магазинам", всего с двумя полями.
Точка_ID
Сотрудник_ID

Да, я понял что будет что-то похожее на это, пример из статьи про отношения на Хабре:


Допустим я получу такую табличку. А далее, допустим, в приложении у меня должна выводиться табличка из двух столбцов:

Магазин Сотрудники
Магазин 1 Иванов, Петров, Сидоров
Магазин 2 Петров, Сидоров
Магазин 3 Иванов
.... ......

Как вообще это реализовывается? На ум сразу только приходит запрос по промежуточной табличке A_B с исключением дублей по полю Точка_ID и сбором всех Сотрудник_ID, в свою очередь тоже с удлением дублей... МОжет это как-то проще делается?

resultset
Точка сотрудникМагазин 1 ИвановМагазин 1 ПетровМагазин 1 Сидоров

получается элементарно,

а преобразовывать это в вид "Магазин 1 Иванов, Петров, Сидоров" - желательно на клиенте.
...
Рейтинг: 0 / 0
22.12.2015, 12:51
    #39134404
Arvalon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите связать две таблички.
Кот Матроскинresultset
Точка сотрудникМагазин 1 ИвановМагазин 1 ПетровМагазин 1 Сидоров
получается элементарно,

Да, сортировку я осилю )
Кот Матроскина преобразовывать это в вид "Магазин 1 Иванов, Петров, Сидоров" - желательно на клиенте.
Предполагается что клиент будет написан на ASP.NET. И в этом случае формировать финальный вид на клиенте, на web-сервере?
...
Рейтинг: 0 / 0
22.12.2015, 14:23
    #39134590
Кот Матроскин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите связать две таблички.
Arvalon,

Ну Вам виднее, что может, а чего не может Ваш клиент.
Большинство промышленных серверов смогут при необходимости Вам сделать строку "Иванов, Петров, Сидоров", но по хорошему это не работа сервера.
...
Рейтинг: 0 / 0
23.12.2015, 11:03
    #39135518
Ivan Durak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите связать две таблички.
Cane Cat FisherArvalon,

Нужна третья таблица, "Приписка сотрудников к магазинам", всего с двумя полями.

судя по всему еще и с датой начала и датой конца. Раз сотрудники переходят туда-сюда
...
Рейтинг: 0 / 0
23.12.2015, 11:14
    #39135537
Cane Cat Fisher
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите связать две таблички.
ArvalonИнститут давно закончен, курс по БД сдан и забыл.
Вы могли бы в общих чертах на 1-2 абзаца описать необходимые доработки, далее попытаюсь разобраться сам с помощью литературы.

Я не пойму, это учебная лабораторка для заочников, или нет?

Интересуюсь не просто так, от этого зависит "широкоохватность" ответов.
...
Рейтинг: 0 / 0
23.12.2015, 11:24
    #39135564
Arvalon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите связать две таблички.
Cane Cat FisherЯ не пойму, это учебная лабораторка для заочников, или нет?
Интересуюсь не просто так, от этого зависит "широкоохватность" ответов.
Не, вполне себе боевой проект, но не приоритетный. По сути справочник.

Ivan Durakсудя по всему еще и с датой начала и датой конца. Раз сотрудники переходят туда-сюда
Нет, у меня задание пока без времени реализовать. Что бы просто видеть кто где может работать/приписан.
...
Рейтинг: 0 / 0
23.12.2015, 12:52
    #39135825
wizli
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите связать две таблички.
Arvalon,
Ну в таком виде не рекомендую делать, там НФ и так далее. Почитайте про нормализацию.
Магазин Сотрудники
Магазин 1 Иванов, Петров, Сидоров
Магазин 2 Петров, Сидоров
Магазин 3 Иванов

Можно выводить в таком виде, на сервере или на клиенте, то решать уже вам.
Это выводиться довольно элементарно, джоин и вперед. Ну это вам уже и выше написали.
Магазин Сотрудники
Магазин 1 Иванов
Магазин 1 Петров

И странно, что вам поручили задачу такого уровня, хотя вы не разбираетесь в самых азах, но это уже не наши проблемы
...
Рейтинг: 0 / 0
23.12.2015, 13:41
    #39135963
Arvalon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите связать две таблички.
wizliArvalon, Ну в таком виде не рекомендую делать, там НФ и так далее. Почитайте про нормализацию.Читал.
wizliИ странно, что вам поручили задачу такого уровня, хотя вы не разбираетесь в самых азах, но это уже не наши проблемыДа вроде простая задача показалась. Базовые навыки в программировании на C# есть. Подумал что простую БД написать то смогу. Всего то 2 таблички получается. Они же есть готовые с тестовыми данными, записей пока не так много. Но что я в ступоре.
Первая большая табличка с описанием магазинов, вторая с персоналом....
...
Рейтинг: 0 / 0
23.12.2015, 14:56
    #39136096
Cane Cat Fisher
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите связать две таблички.
ArvalonДа вроде простая задача показалась

Она и есть простая, причем настолько простая, что совершенно не проясняет суть ситуации, и не позволяет дать адекватный совет.

У вас уже есть база данных с магазинами и сотрудниками, и к ней нужно прилепить привязку?

Или вы с нуля пишете? Тогда какие дальнейшие планы? Может оказаться так, что самым адекватным советом будет "откажитесь, бросайте все и бегите".
...
Рейтинг: 0 / 0
23.12.2015, 15:44
    #39136162
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите связать две таблички.
ArvalonИ странно, что вам поручили задачу такого уровня, хотя вы не разбираетесь в самых азах, но это уже не наши проблемыДа вроде простая задача показалась. Базовые навыки в программировании на C# есть. Подумал что простую БД написать то смогу. Всего то 2 таблички получается. Они же есть готовые с тестовыми данными, записей пока не так много. Но что я в ступоре.
Первая большая табличка с описанием магазинов, вторая с персоналом....[/quot]

Она простая, но решение зависит от БД
Например для PotstgreSQL:
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT 
TableA.NAME,
string_agg(TableC.FIO,', ') AS FIO
FROM TableA
INNER JOIN TableB ON TableA.ID = TableB.TableA_ID
INNER JOIN TableC ON TableC.ID = TableB.TableC_ID
GROUP BY TableA.NAME



Для других БД конкатенация строк может быть другая... или не быть вовсе. ;-)
...
Рейтинг: 0 / 0
23.12.2015, 15:56
    #39136183
wizli
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите связать две таблички.
Arvalon,
Да, вы правы, задача очень простая. Если есть конкретные вопросы, то спрашивайте. Пока, лично мне, не понятно, что вам именно непонятно в этом таске.
...
Рейтинг: 0 / 0
24.12.2015, 11:35
    #39136885
Arvalon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите связать две таблички.
После дополнительного поиска в интернете и повторного чтения литературы я понял что надо сделать.
Надо сделать ещё одну табличку с 2 столбцами, как на картинке тут выше. Каждый столбец будет внешним ключём к первичным ключам таблиц Сотрудники и Магазины. А для соблюдения уникальности самой промежуточной таблицы у неё надо сделать свой собсвенный первичный составной ключ, состоящий из обоих столбцов.
...
Рейтинг: 0 / 0
24.12.2015, 12:11
    #39136959
Ivan Durak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите связать две таблички.
ArvalonПосле дополнительного поиска в интернете и повторного чтения литературы я понял что надо сделать.
Надо сделать ещё одну табличку с 2 столбцами, как на картинке тут выше. Каждый столбец будет внешним ключём к первичным ключам таблиц Сотрудники и Магазины. А для соблюдения уникальности самой промежуточной таблицы у неё надо сделать свой собсвенный первичный составной ключ, состоящий из обоих столбцов.
а третьему комменту от Cane Cat Fisher не поверили сразу???
...
Рейтинг: 0 / 0
24.12.2015, 12:24
    #39136978
Arvalon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите связать две таблички.
Ivan Durakа третьему комменту от Cane Cat Fisher не поверили сразу???
Там ни слова про ключи.
...
Рейтинг: 0 / 0
24.12.2015, 14:12
    #39137123
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите связать две таблички.
ArvalonIvan Durakа третьему комменту от Cane Cat Fisher не поверили сразу???
Там ни слова про ключи.а подумать немного?
...
Рейтинг: 0 / 0
24.12.2015, 14:14
    #39137129
Arvalon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите связать две таблички.
Nafа подумать немного?
Это всё таки форум а не экзамен, затем и спрашиваю. Если что-то самостоятельно не удаётся.
...
Рейтинг: 0 / 0
24.12.2015, 14:32
    #39137183
Кот Матроскин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите связать две таблички.
Arvalon,

Просто для большинства читателей ответ на вопрос "как сделать ключи в связующей таблице?" настолько очевиден, что никто не стал про это упоминать. Вам стоило так и спросить "а как делать в этой таблице ключи?", если именно по этому поводу у Вас были сомнения.
...
Рейтинг: 0 / 0
24.12.2015, 18:22
    #39137488
Cane Cat Fisher
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите связать две таблички.
ArvalonЭто всё таки форум а не экзамен, затем и спрашиваю. Если что-то самостоятельно не удаётся.

Нет, я все-таки чего-то не понимаю в этой жизни.

Я совершенно спокойно и деликатно отношусь к тому, что кто-то чего-то не знает в процессе обучения. Пропущу учебную машину, подскажу студенту, отвечу на вопросы в форуме. Но не понимаю, как, когда, в какой ситуации могут поручить работу человеку, совершенно не знающему азов. Сесть в такси, зная, что водитель никогда не ездил на машине. Пойти к врачу, и подсказывать ему, куда делать укол. Два дня копаться в литературе, чтобы сделать таблицу из двух полей.

Я просто не понимаю, что советовать дальше. Просто для расширения нашего кругозора, расскажите, что происходит, и как это возможно? Это, наверное, гос.структура?
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Помогите связать две таблички. / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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