powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Если можете помогите написать код
25 сообщений из 33, страница 1 из 2
Если можете помогите написать код
    #38675524
Germ529
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разработать структуру БД , согласно приведенной диаграмме: прикреплен рисунок 1.

Описание сущностей:
Подразделения – представляет собой иерархическую структуру с неограниченным уровнем вложенности.
Сотрудники - сведения о физических лицах.
Должности – справочник должностей.
Штатные единицы – связующая таблица сотрудников подразделений и должностей.
...
Рейтинг: 0 / 0
Если можете помогите написать код
    #38675529
Germ529
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"Подразделения – представляет собой иерархическую структуру с неограниченным уровнем вложенности." - как понять? такое еще не делал

Модератор: Тема перенесена из форума "Microsoft SQL Server".
...
Рейтинг: 0 / 0
Если можете помогите написать код
    #38675652
Mikle83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Germ529"Подразделения – представляет собой иерархическую структуру с неограниченным уровнем вложенности." - как понять? такое еще не делал

Так на вашей схеме это уже Вами (?) отрисовано.
У каждой записи в соответствующей таблице есть ID и ссылка на родительскую запись, что в итоге порождает дерево с неограниченным ветвлением (в вашей терминологии структура с неограниченным уровнем вложенности).

Т.е. будут записи вида

IDParentID 102131425464

Что порождает дерево с главным узлом "1", двумя узлами "второго уровня" "2"/"3", узлом третьего уровня "4" с родителем "2" и двумя узлами четвертого уровня "5"/"6" и родителем 4. И количество уровней ничем не ограничены.
...
Рейтинг: 0 / 0
Если можете помогите написать код
    #38675670
П-Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В таблице Сотрудники должна быть ссылка на Должность, а не наоборот. Таблица Сотрудники должна хранить историю перемещения Сотрудника с должности на должность или между подразделениями. Обычно в ней есть еще поля ДатаС ДатаПо.
...
Рейтинг: 0 / 0
Если можете помогите написать код
    #38675682
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
П-ЛВ таблице Сотрудники должна быть ссылка на Должность, а не наоборот.
Философский вопрос. Если сотрудник может совмещать несколько должностей...
...
Рейтинг: 0 / 0
Если можете помогите написать код
    #38675723
Mikle83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинП-ЛВ таблице Сотрудники должна быть ссылка на Должность, а не наоборот.
Философский вопрос. Если сотрудник может совмещать несколько должностей...

Судя по связи 1-1 между штаткой и сотрудником - совмещение не предусмотрено.
Не понятна задача ТС - на "диаграмме" приведена требуемая структура в первом приближении (без учета ряда существенных фактов типа дат, хранения истории и т.п.).

Если задача ТСа написать скрипты для создания этих таблиц/либо "наваять" таблички в акцессе - то это не та ветка форума.
Если же задача ТСа как раз расширить сущности, предусмотрев возможные кейсы - то мягко сказать задача бесконечна...
...
Рейтинг: 0 / 0
Если можете помогите написать код
    #38675777
Germ529
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sql может кто нибудь описать ? чтобы нагляднее было, в какой форме вообще примерно решать?
...
Рейтинг: 0 / 0
Если можете помогите написать код
    #38675789
Mikle83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Germ529,
не мешало бы указать СУБД - особенности могут быть свои.

для создания одной из таблиц, к примеру на Sybase ASE:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
Create table employee
( Id integer identity,
  Name varchar(100),
  Patronymic varchar(100),
  Surname varchar(100),
  BirthDay datetime
)
with identity_gap = 100
...
Рейтинг: 0 / 0
Если можете помогите написать код
    #38675961
Germ529
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Microsoft SQL SERVER.

да, спасибо ребята за поддержку, добавил такой код.
Код который описан ниже, не совсем то что я хотел.
Как создать one to many relationship?

ALTER TABLE shtat ADD
--CONSTRAINT YourUniqueName --for adding your own name to unique constraint
UNIQUE(dolzhnost)

ALTER TABLE shtat
ADD
--constraint yourUniqueName --uncomment for adding your own name to FK constraint
FOREIGN KEY (dolzhnost) REFERENCES dolzhnost(id);
...
Рейтинг: 0 / 0
Если можете помогите написать код
    #38676058
Germ529
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
неужели никто не подскажет? (
...
Рейтинг: 0 / 0
Если можете помогите написать код
    #38676069
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Germ529Microsoft SQL SERVER.

Да подключись Аксесом к базе (проект ADP) конструируй да рисуй что тебе нужно, есть куча и других инструментов - зачем всем мозг выносить... можно вообще макет отладить в том же акцесе от и до, а потом сделать экспорт в MS SQL.... а вообще схема изначально, мягко говоря - неудачный эскиз:
1. Обычно должности не сами по себе, а привязаны к подразделению (это штатка) в вашем случае если должность свободна, то хрен поймешь в каком подразделении вакансия...
2. + все те замечания что выше (даты С, По, приказ)

По поводу по последнего вопроса (one to many): Как может быть many между двумя первичными уникальными ключами ??? Many может быть только между первичным (уникальным) и вторичным (которых дохрена одинаковых - допускаются совпадения)... Учиться... Учиться... Учиться.... Шапками забросать не получится...
...
Рейтинг: 0 / 0
Если можете помогите написать код
    #38676083
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Germ529,

Вот такой вариант (как точка опоры) более гибкий (готов выслушать критику...)
1. Просто Штатка - это отчет по Podrazdelenie и Doljnost.
2. Список сотрудников - это отчет по Podrazdelenie и Sotrudnik.
3. Один сотрудник может быть назначен хоть на 100 должностей (Совмещение).
4. Сотрудник одного подразделения может занимать должность другого подразделения (местная командировка).
5. Вакансии - это отчет по Podrazdelenie и Doljnost где у Doljnost нет подчинения в Shtat или нет в Shtat действующего приказа (data_s - data_po)
6. Сотрудники за штатом - это отчет по Podrazdelenie и Sotrudnik где у Sotrudnik нет подчинения в Shtat или нет в Shtat действующего приказа (data_s - data_po)
....
....
...
Рейтинг: 0 / 0
Если можете помогите написать код
    #38676084
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag,

Вдогонку макет в Акцесе 2000
...
Рейтинг: 0 / 0
Если можете помогите написать код
    #38676098
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag,
схема в топике 1 мне понятна, а от 01:23 --нет
зачем вы подразделение во все таблицы затолкали

директор
--гл.инженер
----некие службы
--зам по экономике
----некие службы
--зам по производству
----под-зам по пр-1
-------цеха пр1
---------цех 1
-----------уч1
-----------уч2
-----------уч3
...........................
............................
----под-зам по пр-2
-------цеха пр2
............................
----под-зам по пр-3
-------цеха пр3
...........................
.
...
Рейтинг: 0 / 0
Если можете помогите написать код
    #38676099
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag,

и мне кажется, что работник может занимать несколько ячеек в штатном расписании(внутреннем или внешнем)
...
Рейтинг: 0 / 0
Если можете помогите написать код
    #38676112
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКА,

директор
--гл.инженер
--зам по производству

Это подразделение "Управление предприятием"

Моя схема это
vmagВот такой вариант (как точка опоры)

+ У ТС ни слова про службы...


ПЕНСИОНЕРКАи мне кажется, что работник может занимать несколько ячеек в штатном расписании(внутреннем или внешнем)

vmag3. Один сотрудник может быть назначен хоть на 100 должностей (Совмещение).
4. Сотрудник одного подразделения может занимать должность другого подразделения (местная командировка).

Несмотря на то, что это только точка опоры....
...
Рейтинг: 0 / 0
Если можете помогите написать код
    #38676114
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКАзачем вы подразделение во все таблицы затолкали

Не во все, а в нужные:
- в должность, чтобы было понятно в каком подразделении эта должность.
- в сотрудники- соответственно тоже...

ЭТО ТОЛЬКО ТОЧКА ОПОРЫ !
- мало таблицы подразделений - расширяйтесь...

Mikle83Если же задача ТСа как раз расширить сущности, предусмотрев возможные кейсы - то мягко сказать задача бесконечна...
...
Рейтинг: 0 / 0
Если можете помогите написать код
    #38676244
Germ529
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо всем, все сделал, но теперь не могу понять задачу, обьясните плиз:

"Создать триггер контролирующий отсутствие циклов в иерархии подразделений" - как понять эту задачу?
...
Рейтинг: 0 / 0
Если можете помогите написать код
    #38676307
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Germ529спасибо всем, все сделал, но теперь не могу понять задачу, обьясните плиз:

"Создать триггер контролирующий отсутствие циклов в иерархии подразделений" - как понять эту задачу?

Ну а теперь дуй обратно на форум "Microsoft SQL Server"
...
Рейтинг: 0 / 0
Если можете помогите написать код
    #38676339
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Germ529"Создать триггер контролирующий отсутствие циклов в иерархии подразделений" - как понять эту задачу?

Кстати о птичках.... у вас (при чем не важно по какому пути вы пошли: по своему или по моему) нет иерархии подразделений, у вас тупо есть одна таблица Подразделения и всё.... Если вы хотите иерархию и бешенных циклов в иерархии, с которыми вам нужно будет бороться, то добавьте в Таблицу Подразделения еще одно поле типа "Код_Иерархии" и тогда:

1/Управление/0 - ноль, значит никому не подчиняется...
2/Первый отдел/1 - один, значит подчиняется Управлению....
3/Второй Отдел/1 - один, значит тоже подчиняется Управлению....
4/Автотранспортная Служба/2 - два, значит подчиняется Первому отделу...

Бла... Бла... Бла.....
...
Рейтинг: 0 / 0
Если можете помогите написать код
    #38676411
Germ529
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vmag,

то есть нужно создать такой триггер который будет контролировать повтор значении, например в "Код_Иерархии" если цикл повторяется (значения) то нужно его контролировать верно?
тогда parent мне зачем? запутался
...
Рейтинг: 0 / 0
Если можете помогите написать код
    #38676436
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Germ529то есть нужно создать такой триггер который будет контролировать повтор значении

Я же говорю... идите обратно с этим на на форум "Microsoft SQL Server"... иерархия у вас уже в кармане...
лично я в триггерах не бум-бум, а так как стараюсь придерживаться правила: "Дурак не тот, который чего-то не знает, а тот кто рассуждает о том, чего не знает", то помочь вам больше ни чем не могу...
...
Рейтинг: 0 / 0
Если можете помогите написать код
    #38676496
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmagПЕНСИОНЕРКАзачем вы подразделение во все таблицы затолкали

Не во все, а в нужные:
- в должность, чтобы было понятно в каком подразделении эта должность.
- в сотрудники- соответственно тоже...

Сотрудник занимает должности в подразделении 2 и подразделении 3 (вполне возможная по Вашей схеме ситуация) - что будет в ID_podr таблицы "сотрудник"?
...
Рейтинг: 0 / 0
Если можете помогите написать код
    #38676707
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскинчто будет в ID_podr таблицы "сотрудник"?

ID_podr основного подразделения по ветке Подразделение - Сотрудник
...
Рейтинг: 0 / 0
Если можете помогите написать код
    #38676742
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag,

ID_podr таблицы "сотрудник"?----этого не должно быть

штатное
__ид_штат
__ид_подр
__ид_должн
__оклад
__ид_сотрудник

сотрудники
__ид_сотрудник
__фио
__дата_рождения
__образование
....
и никакого подразделения

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


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