|
Связи и ключи в БД.
|
|||
---|---|---|---|
#18+
Всех приветствую. БД проектирую впервые, никакого опыта в этом не имел, параллельно читаю книгу Гурвица. Основная задача БД - отслеживать сроки аттестаций. Если кто сможет дать консультацию буду очень благодарен. Работаю в access 2007. Схему БД приложил скриншотом. Вопросы у меня такие: 1. При проектировании во всех таблицах оставлены счетчики в качестве ключевых полей - правильно ли это, будет ли работать. (составных ключей не применял). Или нужно формировать ключи из логических полей? 2. Связи в таблицах сделал с помощью мастера подстановок, но потом на этом форуме прочел, что так делать нельзя (хотя, вроде, делают), почему? Как перейти от мастера подстановок к запросам? Пример: Занятая должность формируется из 5 таблиц: Справочник отделов (SP_department) и Справочник специальностей (SP_position) формируют таблицу вакансий, а затем Вакансии (Vacancies) с Работник (Workers) формируют занятую должность. Здесь сложность в том, что при подстановке в таблицу Должность (Position) в поле id_vacancy вставляются числа, а названия вакансий я не вижу. Как этого избежать? Заранее спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 14:56 |
|
Связи и ключи в БД.
|
|||
---|---|---|---|
#18+
Skamp, я вообще названия ключей делаю одинаковыми (бывают сложности, зато помнить не надо при составлении запросов/рекордсетов), добавил бы в positions логическое поле актуальности вакансии (их будет несколько одинаковых (архива не вижу-значит все будет в этой таблице)). по поводу связей - вот при переходе к запросам и станет понятно почему так делать не рекомендуется. (потому что видя одно нужно будет предполагать другое (другой тип данных, значение)). Читать лучше Гетца. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 15:33 |
|
Связи и ключи в БД.
|
|||
---|---|---|---|
#18+
Т.е. сейчас всех мастеров подстановок стоит убрать? Но ведь связь может быть только ключевого поля с другим, т.е. в таблице должно быть несколько ключей? По поводу архива: я еще хочу сделать таблицу увольнений, но пока не знаю как это организовать, чтобы при этом освобождалась вакансия. Еще вопрос: в таблице vacancies есть поле number_vacancies (число вакансий), как сделать так, чтобы при добавлении людей (текст) их не оказалось больше, чем вакансий в отделе? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 15:48 |
|
Связи и ключи в БД.
|
|||
---|---|---|---|
#18+
Skamp, всю обработку событий нужно делать в формах. таблицы только для хранения. в таблице один ключ. и может быть несколько индексов. мастер подстановки (поля со списками) убрать, а связи оставить конечно. изучить рекордсеты, sql и можно уже кодить. схема данных норм для старта - потом все равно придется править. по поводу number_vacancies (число вакансий) - сделайте столбец Shtat, куда занесите штат по этой вакансии. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 16:13 |
|
Связи и ключи в БД.
|
|||
---|---|---|---|
#18+
SkampТ.е. сейчас всех мастеров подстановок стоит убрать?Вы же не собираетесь вводить данные прямо в таблицы, собираетесь для этого делать формы? или нет? Мастер подстановок собсно в основном решает две задачи. Первая - облегчает ввод данных непосредственно в таблицы. Но этим лучше не заниматься. Вторая - организует соответствующие списки при создании комбо/листбоксов в формах. Но это и руками можно сделать. В общем, это для мышкотыков, которые от одного предположения, что придётся писать код, впадают в кому. Забудь про него... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 16:14 |
|
Связи и ключи в БД.
|
|||
---|---|---|---|
#18+
AkinaВы же не собираетесь вводить данные прямо в таблицы, собираетесь для этого делать формы? или нет? )) Наверное, да. Представления о том, какими должны быть формы я пока не имею. Все имеющееся я вытянул из огромной экселевской простыни. Данные для пробного варианта вводил вручную непосредственно в таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 16:25 |
|
Связи и ключи в БД.
|
|||
---|---|---|---|
#18+
aleckoпо поводу number_vacancies (число вакансий) - сделайте столбец Shtat, куда занесите штат по этой вакансии. - как это должно выглядеть? Что значит штат - число, буква? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 16:27 |
|
Связи и ключи в БД.
|
|||
---|---|---|---|
#18+
Skamp, это число, вполне возможно в таблице SP_Position. Акс 2007 работает со всеми числами как Long, поэтому можно не заморачиваться особо с integer, byte-все равно он переводит в них из Long, так что тип очевиден Long, значение по умолчанию 1. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 16:39 |
|
Связи и ключи в БД.
|
|||
---|---|---|---|
#18+
aleckoтип очевиден Long, значение по умолчанию 1. - в таблицу Position вставить доп.столбец (это уже будет занятая вакансия) с значением 1, а сумма не должна превышать значения в number_vacancies? Про какую книгу Гетца речь, можно с названием? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 17:04 |
|
Связи и ключи в БД.
|
|||
---|---|---|---|
#18+
Skamp, Первичный ключ просто id НЕ id_books Внешний ключ: learning_center_id НЕ learning_centerS_id ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 17:13 |
|
Связи и ключи в БД.
|
|||
---|---|---|---|
#18+
Skampaleckoтип очевиден Long, значение по умолчанию 1. - в таблицу Position вставить доп.столбец (это уже будет занятая вакансия) с значением 1, а сумма не должна превышать значения в number_vacancies? Про какую книгу Гетца речь, можно с названием? нет не так. Сначала идет описание штата (штатное расписание) - доярок - 5 ед., программистов - 20 ед. - вот эти числа и ставятся в поле Schtat-признак вакансии. потом идут заявки на вакансию - доярок - 2 ед., программистов - 5 ед. - это ставится в число вакансий. и проверяется чтоб количество заявок (5 программистов) не было больше штата (штатного расписания)-20 ед. по книгам (сугубо личное мнение) Кен Гетц - Программирование на Visual Basic 6 и VBA. Руководство разработчика Разработка настольных приложений в Access 2002.Для профессионалов.Литвин.Гетц. допом можно ещё Разработка настольных приложений в Access 2002.Для профессионалов.Литвин.Гетц.2002г. т.02 от других авторов более менее Access.2007.VBA.Programmers.Reference для начинающих книг хороших не вспомню, ну может вот Гурвиц, Гурвиц Г.А. - Microsoft Access 2010. Разработка приложений на реальном примере (Профессиональное программирование) - 2010 SQL. Руководство по изучению языка Боб Виллариал Программирование Access в примерах Вирджиния Андерсен Базы данных Microsoft Access проблемы и решения ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2018, 17:59 |
|
Связи и ключи в БД.
|
|||
---|---|---|---|
#18+
alecko, Не понимаю логику отношения заявок и штатного расписания. У меня получается из справочника специальностей и справочника отделов формируется вакансия, т.е. свободное место в отделе, а в таблице Position свободная вакансия соотносится с конкретным работником, формируя должность. Я не понял, где в вашем примере среди заявок отыскать конкретного работника. И, если я не прав в своем построении, то поправьте, пожалуйста, почему? Кстати, вижу книги вы советуете по программированию - я программированием никогда не занимался и access взял за основу потому, как подумал, что в нем можно без программирования построить БД с интерфейсом удобоваримую, я ошибался?)) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2018, 07:46 |
|
Связи и ключи в БД.
|
|||
---|---|---|---|
#18+
Skampalecko, access взял за основу потому, как подумал, что в нем можно без программирования построить БД с интерфейсом удобоваримую, я ошибался?)) без труда не выловишь рыбку из аксесс даже для простейшей базы нужна какая-то обработка база со штатным расписанием --к простейшим не относится ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2018, 08:42 |
|
Связи и ключи в БД.
|
|||
---|---|---|---|
#18+
Skamp, можно создать без программирования базу, более того мне удалось это сделать-исключительно на запросах (добавление записей в таблицы через открытие формы в режиме добавления и пр.)- я даже схему данных здесь выкладывал 20288543 . Проблемы появились когда она "взлетела"- пришлось все переводить на vba и создавать по новой. А вообще есть пословица, приписываемая Дж.Вашингтону: "Если мне поручат за 8 часов срубить дерево - 6 из них я буду точить топор" (хотя перефразирую я её по другому но это не суть важно)- считаю она очень подходит к данному случаю. Потому лучше сначала почитайте пусть даже того же Гурвица - потому что сначала, к сожалению когда закладывается фундамент знаний мало, а потом уже исправлять дольше чем проектировать заново. По поводу вакансий. Сначала описывается структура объекта, предприятия. и потом уже в её рамках работаем, это значит что вакансия не может появиться "из ниоткуда"-её нужно описать, сначала, в процессе, ещё когда; но сначала задаются параметры: количество, требования к опыту и пр., а потом уже работаем - сколько нужно ,сколько принято, и пр. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2018, 09:22 |
|
Связи и ключи в БД.
|
|||
---|---|---|---|
#18+
Итак, если я правильно все понял, то итог на данный момент такой: 1. Удалить все мастера подстановок. 2. Удалить весь контент из таблиц (т.к. часть данных я уже занес в качестве пробы) 3. Редактировать счетчики, назначить их ключевыми полями. 4. Сделать связи через счетчики. 5. Читать про программирование и ваять запросы и формы. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2018, 09:16 |
|
Связи и ключи в БД.
|
|||
---|---|---|---|
#18+
Skamp, данные удалять не надо, удалить подстановки. 3,4 вроде сделаны. как при изучении дойдете до рекордсетов - можно начинать строить базу. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2018, 11:12 |
|
Связи и ключи в БД.
|
|||
---|---|---|---|
#18+
забыл. паттерны проектирования ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2018, 20:58 |
|
|
start [/forum/topic.php?fid=45&fpage=42&tid=1611099]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 311ms |
total: | 454ms |
0 / 0 |