Это первый опыт работы с Access'ом и не могу решить задачу. Выглядит схема таким образом:
Проблема в том, что и количество контактов у Предприятия может быть несколько. Попытка сделать по аналогии с Системой и ее списком не вышла. Если сделать Контакты в таблице Предприятие тоже ключевым полем, то не получается создать еще одну связь один-ко-многим из этой таблицы. Скорее всего я в чем-то ошибаюсь, подскажите пожалуйста, в чем и как это можно решить.
Это первый опыт работы с Access'ом и не могу решить задачу. Выглядит схема таким образом:
Проблема в том, что и количество контактов у Предприятия может быть несколько. Попытка сделать по аналогии с Системой и ее списком не вышла. Если сделать Контакты в таблице Предприятие тоже ключевым полем, то не получается создать еще одну связь один-ко-многим из этой таблицы. Скорее всего я в чем-то ошибаюсь, подскажите пожалуйста, в чем и как это можно решить.TEN
Сообщение отредактировал TEN - Среда, 07.06.2017, 15:58
Схема данных неверно построена, это да. И сущности недоописаны. "Систем" и вас тоже много, но, тем не менее, связь - не множественная. Почему тогда у вас с Контактами должна быть связь "один-ко-многим"?
Можно так таблицы описать: Системы (Код_Системы, Название, ...) Предприятия (Код_Предприятия, Название, ...) КонтактыПредприятий (Код_Контакта, Код_Предприятия, ФИО, ...) УстановленныеСистемы (Код_Системы, Код_Предприятия, Рег_Номер, ...) Связи: УстановленныеСистемы.Код_Системы -> Системы.Код_Системы (1-1) УстановленныеСистемы.Код_Предприятия -> Предприятия.Код_Предприятия (1-1) КонтактыПредприятий.Код_Предприятия -> Предприятия.Код_Предприятия (1-1)
Схема данных неверно построена, это да. И сущности недоописаны. "Систем" и вас тоже много, но, тем не менее, связь - не множественная. Почему тогда у вас с Контактами должна быть связь "один-ко-многим"?
Можно так таблицы описать: Системы (Код_Системы, Название, ...) Предприятия (Код_Предприятия, Название, ...) КонтактыПредприятий (Код_Контакта, Код_Предприятия, ФИО, ...) УстановленныеСистемы (Код_Системы, Код_Предприятия, Рег_Номер, ...) Связи: УстановленныеСистемы.Код_Системы -> Системы.Код_Системы (1-1) УстановленныеСистемы.Код_Предприятия -> Предприятия.Код_Предприятия (1-1) КонтактыПредприятий.Код_Предприятия -> Предприятия.Код_Предприятия (1-1)AndreTM
Skype: andre.tm.007 Donate: Qiwi: 9517375010
Сообщение отредактировал AndreTM - Среда, 07.06.2017, 21:34
Спасибо за помощь. Но никак не могу понять, как можно внести новые данные, чтобы было несколько штук КонтактыПредприятий, по отношению к одному предприятию? Трудно уловить логику, после работы в Excel.
Спасибо за помощь. Но никак не могу понять, как можно внести новые данные, чтобы было несколько штук КонтактыПредприятий, по отношению к одному предприятию? Трудно уловить логику, после работы в Excel.TEN
Связей один-ко-многим не требуется. Даже постоянные связи в схеме - не требуются, по сути, если все таблицы будут нормализованы.
Когда нужно получить, например, список Контактов по определенному Предприятию, мы делаем выборку/запрос, в котором и сформулируем нужную нам конкретную связь: [vba]
Код
SELECT t1.ФИО FROM КонтактыПредприятий t1, Предприятия t2 JOIN t1.КодПредприятия=t2.КодПредприятия WHERE t2.Наименование = "ТЕСТ1"
[/vba]
Вообще, связи в схеме данных - они требуются вам только для визуальной разработки форм ввода/отчетов, чтобы можно было, например, сразу "накидывать" связанные поля/списки/данные из нескольких таблиц в одном месте. А так - лучше не начинать с порочной практики расстановки перманентных связей
Связей один-ко-многим не требуется. Даже постоянные связи в схеме - не требуются, по сути, если все таблицы будут нормализованы.
Когда нужно получить, например, список Контактов по определенному Предприятию, мы делаем выборку/запрос, в котором и сформулируем нужную нам конкретную связь: [vba]
Код
SELECT t1.ФИО FROM КонтактыПредприятий t1, Предприятия t2 JOIN t1.КодПредприятия=t2.КодПредприятия WHERE t2.Наименование = "ТЕСТ1"
[/vba]
Вообще, связи в схеме данных - они требуются вам только для визуальной разработки форм ввода/отчетов, чтобы можно было, например, сразу "накидывать" связанные поля/списки/данные из нескольких таблиц в одном месте. А так - лучше не начинать с порочной практики расстановки перманентных связей AndreTM
Skype: andre.tm.007 Donate: Qiwi: 9517375010
Сообщение отредактировал AndreTM - Четверг, 08.06.2017, 10:09
TEN, если отвечать конкретно на Ваш вопрос (применительно к Вашей схеме данных), то можно через третью таблицу с полями Код_контакта и Название предприятия. Ключевое поле будет либо составное из этих двух, либо какой-то доп. счётчик
TEN, если отвечать конкретно на Ваш вопрос (применительно к Вашей схеме данных), то можно через третью таблицу с полями Код_контакта и Название предприятия. Ключевое поле будет либо составное из этих двух, либо какой-то доп. счётчикPelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
Спасибо, понял. Если перейти полностью на таблицы без связей или с их минимумом, то вносить/получать данные придется только с помощью форм/запросов. Обычная работа с таблицами, как в в Excel, будет затруднена, правильно?
Спасибо, понял. Если перейти полностью на таблицы без связей или с их минимумом, то вносить/получать данные придется только с помощью форм/запросов. Обычная работа с таблицами, как в в Excel, будет затруднена, правильно?TEN
Правильно. Но в Access таблицы служат именно только для хранения данных, вся обработка производится с помощью запросов. Но связи я бы всё-таки создала
Правильно. Но в Access таблицы служат именно только для хранения данных, вся обработка производится с помощью запросов. Но связи я бы всё-таки создала Pelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
Не получали вы, видимо, в акцессе ExceptionXXX в самый неподходящий момент, с блокировкой файла базы и потерей данных... всё потому, что кто-то "рылся в базе, правил данные напрямую, сделал связи в схеме, "забыл" их убрать"... Постоянные связи в схеме хороши тогда, когда сама схема хотя бы нормализована по первой форме То есть "устанавливаем связи тогда, когда знаем и понимаем, что они потребуются всегда". А не "потому что нарисовано, что связи должны быть"
Эх, Елена
Не получали вы, видимо, в акцессе ExceptionXXX в самый неподходящий момент, с блокировкой файла базы и потерей данных... всё потому, что кто-то "рылся в базе, правил данные напрямую, сделал связи в схеме, "забыл" их убрать"... Постоянные связи в схеме хороши тогда, когда сама схема хотя бы нормализована по первой форме То есть "устанавливаем связи тогда, когда знаем и понимаем, что они потребуются всегда". А не "потому что нарисовано, что связи должны быть" AndreTM
TEN, В таблицу Контакты добавить поле Код_предприятия(форен_кей) и в таблицу предприятие тоже добавить такое же поле(как праймари кей). Всё, связываем эти 2е таблицы этими полями
TEN, В таблицу Контакты добавить поле Код_предприятия(форен_кей) и в таблицу предприятие тоже добавить такое же поле(как праймари кей). Всё, связываем эти 2е таблицы этими полямиМатраскин