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

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

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

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

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

IDParentID 102131425464

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

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

Если задача ТСа написать скрипты для создания этих таблиц/либо "наваять" таблички в акцессе - то это не та ветка форума.
Если же задача ТСа как раз расширить сущности, предусмотрев возможные кейсы - то мягко сказать задача бесконечна...
...
Рейтинг: 0 / 0
20.06.2014, 17:04
    #38675777
Germ529
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Если можете помогите написать код
Sql может кто нибудь описать ? чтобы нагляднее было, в какой форме вообще примерно решать?
...
Рейтинг: 0 / 0
20.06.2014, 17:14
    #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
20.06.2014, 19:49
    #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
21.06.2014, 00:08
    #38676058
Germ529
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Если можете помогите написать код
неужели никто не подскажет? (
...
Рейтинг: 0 / 0
21.06.2014, 00:39
    #38676069
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Если можете помогите написать код
Germ529Microsoft SQL SERVER.

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

По поводу по последнего вопроса (one to many): Как может быть many между двумя первичными уникальными ключами ??? Many может быть только между первичным (уникальным) и вторичным (которых дохрена одинаковых - допускаются совпадения)... Учиться... Учиться... Учиться.... Шапками забросать не получится...
...
Рейтинг: 0 / 0
21.06.2014, 01:22
    #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
21.06.2014, 01:23
    #38676084
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Если можете помогите написать код
vmag,

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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