Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 1
Регистрация: 26.04.2011
Сообщений: 17
1

Связь между таблицами SQL

26.04.2011, 12:27. Показов 2139. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите чайнику
Пример: "Работник и отдел"
Есть таблица SQL отделов и еще одна таблица SQL работников в которую нужно внести информацию по работнику. На форме в комбобоксе отображаются отделы а в эдит вносится новый работник.
вопрос. как связать эти таблицы или как присвоить свой отдел каждому рабочему чтоб например в отчете
увидеть рабочих и их отделы.

p.s. платформа C++Builder и SQL . Заранне благодарен.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.04.2011, 12:27
Ответы с готовыми решениями:

Связь между таблицами
имеются 3 таблицы. 1 таблица "ttn" с полем "data "и главным полем kod_ttn. 2 таблица...

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

Связи между таблицами в Билдере
Есть проблемка зделал пару таблиц связал их ключом. вывел в билдер но мне нуно чтобы я мог в...

Связи между таблицами в 3НФ
Пусть имеется отношение R(A1,A2,...An) приводим его в 3НФ. Получаем набор отношений: R1(..),...

4
1496 / 1238 / 244
Регистрация: 04.04.2011
Сообщений: 4,362
26.04.2011, 14:00 2
"Джентльментский" для подобной задачи 3 таблицы:
1) Таблица - справочник работников
- PUID: уникальный ид-р записи
- PFAM: фамилия
- PNAME: имя
- PNAM2: отчество
...
2) Таблица - справочник подразделений
- DUID: уникальный ид-р записи
- PDUID: ссылка на DUID подразделения, куда входит данное (NULL для корневых)
- DNAME: наименование подразделения
...
3) Таблица - списочный состав предприятия
- SUID: уникальный ид-р записи
- DUID: ссылка на подразделение
- PUID: ссылка на работника
информация о дате, номере приказа и т.д.

Реально, конечно, таблиц должно быть куда больше, т.к. надо по-хорошему еще хранить море данных:
- личное дело,
- перемещения
- награды/вызыскания
- график работы
- табель учета факт.отработанного времени

ну и много еще чего

Добавлено через 7 минут
Вдогонку. Подобная трехтабличная структура позволяет:
1) Хранить (и изменять соответственно) данные о человеке вне зависимости от того, где он числится
2) Хранить (и изменять соответственно) данные о подразделениях вне зависимости от того, кто в них числится
3) Поддержка иерархической (древовидной) модели, отражающей административной структуру предприятия и возможность гибкого ее изменения.
4) Поддержка "совместителей", что весьма востребовано для многих бюджетных (не только) организаций, т.е. работников, одновременно числящихся на нескольких должностях в нескольких подразделениях.
5) Составлять "удобные" (соответственно быстрые и компактные для клиента) запросы для сервере, а также упрощает и унифицирует разработку бизнес-процессов для бизнес-логики сервера.

Добавлено через 12 минут
Ну и на десерт:
Типичная ошибка новичков в проектировании "базовых" приложений - начинать с "эдитов" и "кобобоксов".
Начинать надо вот как:

1) Исходные требования
Определить кому нужна программа, зачем, как скоро и т.д. Т.е. выяснить может ли "заказчик" обойтись без нее (Например, с помощью Экселя, Ворда и т.д.)

2) Постановка задачи
Изучить предметную область, особо тщательно проработать документооборот, всю "первичку". Составить МОДЕЛЬ ДОКУМЕНТООБОРОТА с подробным пореквизитным описанием каждого.
Определить в общих чертах структуру, объемы, периодичность выходной информации.

3) Определить ОБЪЕКТЫ БД. На основании собранной информации описать объекты реальной жизни, являющиеся предметом хранения и обработки БД.

4) Определить связи между объектами, устранить вторичность (избыточность) информации, проведя ее нормализацию (т.е. фактически определить состав и характер нормативно-справочной части БД), получив в итоге МОДЕЛЬ БАЗЫ ДАННЫХ.

После того, как будет выполнено эти 4 НАЧАЛЬНЫХ этапа проектирования можно приступить к разработке интерфейса пользователя. Опять таки не с комбиков начиная, а со списка функционала, перечней прав, способов установления соединения, типа СУБД и т.д.

В общем, думаю, прежде чем садиться за "прогу", надо все же что-то почитать кроме Архангельского
0
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
26.04.2011, 14:09 3
На самом деле в простых случаях достаточно 2 таблицы: родительская с подразделениями и дочерняя с сотрудниками, в которой некоторое поле ссылается на подразделения. С ее помощью реализуются все перечисленные пункты кроме "людей, числящихся в нескольких подразделениях"
0
0 / 0 / 1
Регистрация: 26.04.2011
Сообщений: 17
26.04.2011, 14:15  [ТС] 4
дело в том что програмированию учиться никто не воспрещает. а насчет списка функционала уже все обдумал. а программа нужна пока только для меня. ибо на работе пользуюсь такой же которую писали специалисты. я решил для примера выбрать ее так как с sql еще не стыкался а писал программы попроще и с БД без клиент серверных свойств а эдит и кобобокс вибран только для примера. Еще раз извините если что не так, но тема остается актуальной. Еще раз заранее спасибо.

Добавлено через 2 минуты
Цитата Сообщение от Grossmeister Посмотреть сообщение
некоторое поле ссылается на подразделения. "
как имменно это изобразить?
0
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
26.04.2011, 14:27 5
Цитата Сообщение от washer Посмотреть сообщение
как имменно это изобразить?
department (подразделения)
-----------------------------
dep_id -- это PK (Primary Key), т.е. уникальный Id подразделения
dep_name
.... -- здесь могут быть и другие поля

employees (служащие)
-----------
emp_id -- PK служащего
first_name
.....
dep_id -- это FK(Foreign Key), ссылка на dep_id из department (поля не обязательно одноименные)

Это структуры таблиц, которые ты спроектировал и первоначально создал в БД.

А как с этим работать визуально, ты уже продумываешь дальше (вариантов м.б. несколько)
0
26.04.2011, 14:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.04.2011, 14:27
Помогаю со студенческими работами здесь

Люди, помогите! Вопрос по работе в Builder'e с таблицами SQL
Товарищи, помогите пожалуйста. Конечно, может я не по адресу, не знаю. Вопрос такой: При...

Как работать с несколькими связанными между собой таблицами?
Доброго время суток, форумчяни! Я вот пытаюсь разобраться как можно работать с несколькими...

Связь между формами
хочу связать 2 формы задача: на одной фоме вводишь данные и при нажатие окей передала на другую...

Связь между отдельными формами.
Здраствуйте, форумчане! Недавно начал программировать на C++ Builder. Понравилось, написал...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru