Домашняя страница Undo Do Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Несколько ключевых полей в одной таблице - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Excel и другие приложения » Access » Несколько ключевых полей в одной таблице
Несколько ключевых полей в одной таблице
TEN Дата: Среда, 07.06.2017, 15:52 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Это первый опыт работы с Access'ом и не могу решить задачу.
Выглядит схема таким образом:

Проблема в том, что и количество контактов у Предприятия может быть несколько. Попытка сделать по аналогии с Системой и ее списком не вышла. Если сделать Контакты в таблице Предприятие тоже ключевым полем, то не получается создать еще одну связь один-ко-многим из этой таблицы. Скорее всего я в чем-то ошибаюсь, подскажите пожалуйста, в чем и как это можно решить.


Сообщение отредактировал TEN - Среда, 07.06.2017, 15:58
 
Ответить
СообщениеЭто первый опыт работы с Access'ом и не могу решить задачу.
Выглядит схема таким образом:

Проблема в том, что и количество контактов у Предприятия может быть несколько. Попытка сделать по аналогии с Системой и ее списком не вышла. Если сделать Контакты в таблице Предприятие тоже ключевым полем, то не получается создать еще одну связь один-ко-многим из этой таблицы. Скорее всего я в чем-то ошибаюсь, подскажите пожалуйста, в чем и как это можно решить.

Автор - TEN
Дата добавления - 07.06.2017 в 15:52
AndreTM Дата: Среда, 07.06.2017, 21:11 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1553
Репутация: 445 ±
Замечаний: 0% ±

2003 & 2010
Схема данных неверно построена, это да. И сущности недоописаны.
"Систем" и вас тоже много, но, тем не менее, связь - не множественная. Почему тогда у вас с Контактами должна быть связь "один-ко-многим"?

Можно так таблицы описать:
Системы (Код_Системы, Название, ...)
Предприятия (Код_Предприятия, Название, ...)
КонтактыПредприятий (Код_Контакта, Код_Предприятия, ФИО, ...)
УстановленныеСистемы (Код_Системы, Код_Предприятия, Рег_Номер, ...)

Связи:
УстановленныеСистемы.Код_Системы -> Системы.Код_Системы (1-1)
УстановленныеСистемы.Код_Предприятия -> Предприятия.Код_Предприятия (1-1)
КонтактыПредприятий.Код_Предприятия -> Предприятия.Код_Предприятия (1-1)


Donate: Qiwi: 9517375010

Сообщение отредактировал AndreTM - Среда, 07.06.2017, 21:34
 
Ответить
СообщениеСхема данных неверно построена, это да. И сущности недоописаны.
"Систем" и вас тоже много, но, тем не менее, связь - не множественная. Почему тогда у вас с Контактами должна быть связь "один-ко-многим"?

Можно так таблицы описать:
Системы (Код_Системы, Название, ...)
Предприятия (Код_Предприятия, Название, ...)
КонтактыПредприятий (Код_Контакта, Код_Предприятия, ФИО, ...)
УстановленныеСистемы (Код_Системы, Код_Предприятия, Рег_Номер, ...)

Связи:
УстановленныеСистемы.Код_Системы -> Системы.Код_Системы (1-1)
УстановленныеСистемы.Код_Предприятия -> Предприятия.Код_Предприятия (1-1)
КонтактыПредприятий.Код_Предприятия -> Предприятия.Код_Предприятия (1-1)

Автор - AndreTM
Дата добавления - 07.06.2017 в 21:11
TEN Дата: Четверг, 08.06.2017, 09:39 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Спасибо за помощь.
Но никак не могу понять, как можно внести новые данные, чтобы было несколько штук КонтактыПредприятий, по отношению к одному предприятию? Трудно уловить логику, после работы в Excel.
 
Ответить
СообщениеСпасибо за помощь.
Но никак не могу понять, как можно внести новые данные, чтобы было несколько штук КонтактыПредприятий, по отношению к одному предприятию? Трудно уловить логику, после работы в Excel.

Автор - TEN
Дата добавления - 08.06.2017 в 09:39
AndreTM Дата: Четверг, 08.06.2017, 10:00 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1553
Репутация: 445 ±
Замечаний: 0% ±

2003 & 2010
Предприятия:
КодПредприятия = 1, Наименование = ТЕСТ1
КодПредприятия = 2, Наименование = ТЕСТ2
КонтактыПредприятий:
КодКонтакта = 1, КодПредприятия = 1, ФИО = Иванов
КодКонтакта = 2, КодПредприятия = 2, ФИО = Петров
КодКонтакта = 3, КодПредприятия = 1, ФИО = Сидоров
КодКонтакта = 4, КодПредприятия = 1, ФИО = Кузнецов


Связей один-ко-многим не требуется. Даже постоянные связи в схеме - не требуются, по сути, если все таблицы будут нормализованы.

Когда нужно получить, например, список Контактов по определенному Предприятию, мы делаем выборку/запрос, в котором и сформулируем нужную нам конкретную связь:
[vba]
Код
SELECT t1.ФИО
FROM КонтактыПредприятий t1, Предприятия t2
  JOIN t1.КодПредприятия=t2.КодПредприятия
WHERE t2.Наименование = "ТЕСТ1"
[/vba]

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


Donate: Qiwi: 9517375010

Сообщение отредактировал AndreTM - Четверг, 08.06.2017, 10:09
 
Ответить
СообщениеПредприятия:
КодПредприятия = 1, Наименование = ТЕСТ1
КодПредприятия = 2, Наименование = ТЕСТ2
КонтактыПредприятий:
КодКонтакта = 1, КодПредприятия = 1, ФИО = Иванов
КодКонтакта = 2, КодПредприятия = 2, ФИО = Петров
КодКонтакта = 3, КодПредприятия = 1, ФИО = Сидоров
КодКонтакта = 4, КодПредприятия = 1, ФИО = Кузнецов


Связей один-ко-многим не требуется. Даже постоянные связи в схеме - не требуются, по сути, если все таблицы будут нормализованы.

Когда нужно получить, например, список Контактов по определенному Предприятию, мы делаем выборку/запрос, в котором и сформулируем нужную нам конкретную связь:
[vba]
Код
SELECT t1.ФИО
FROM КонтактыПредприятий t1, Предприятия t2
  JOIN t1.КодПредприятия=t2.КодПредприятия
WHERE t2.Наименование = "ТЕСТ1"
[/vba]

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

Автор - AndreTM
Дата добавления - 08.06.2017 в 10:00
Pelena Дата: Четверг, 08.06.2017, 10:00 | Сообщение № 5
Группа: Модераторы
Ранг: Местный житель
Сообщений: 11275
Репутация: 2507 ±
Замечаний: 0% ±

Excel 2010, 2016 & Mac Excel
TEN, если отвечать конкретно на Ваш вопрос (применительно к Вашей схеме данных), то можно через третью таблицу с полями Код_контакта и Название предприятия. Ключевое поле будет либо составное из этих двух, либо какой-то доп. счётчик


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеTEN, если отвечать конкретно на Ваш вопрос (применительно к Вашей схеме данных), то можно через третью таблицу с полями Код_контакта и Название предприятия. Ключевое поле будет либо составное из этих двух, либо какой-то доп. счётчик

Автор - Pelena
Дата добавления - 08.06.2017 в 10:00
TEN Дата: Четверг, 08.06.2017, 10:19 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Спасибо, понял.
Если перейти полностью на таблицы без связей или с их минимумом, то вносить/получать данные придется только с помощью форм/запросов. Обычная работа с таблицами, как в в Excel, будет затруднена, правильно?
 
Ответить
СообщениеСпасибо, понял.
Если перейти полностью на таблицы без связей или с их минимумом, то вносить/получать данные придется только с помощью форм/запросов. Обычная работа с таблицами, как в в Excel, будет затруднена, правильно?

Автор - TEN
Дата добавления - 08.06.2017 в 10:19
Pelena Дата: Четверг, 08.06.2017, 10:35 | Сообщение № 7
Группа: Модераторы
Ранг: Местный житель
Сообщений: 11275
Репутация: 2507 ±
Замечаний: 0% ±

Excel 2010, 2016 & Mac Excel
Правильно. Но в Access таблицы служат именно только для хранения данных, вся обработка производится с помощью запросов.
Но связи я бы всё-таки создала yes


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеПравильно. Но в Access таблицы служат именно только для хранения данных, вся обработка производится с помощью запросов.
Но связи я бы всё-таки создала yes

Автор - Pelena
Дата добавления - 08.06.2017 в 10:35
AndreTM Дата: Четверг, 08.06.2017, 10:59 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1553
Репутация: 445 ±
Замечаний: 0% ±

2003 & 2010
Эх, Елена :(

Не получали вы, видимо, в акцессе ExceptionXXX в самый неподходящий момент, с блокировкой файла базы и потерей данных... всё потому, что кто-то "рылся в базе, правил данные напрямую, сделал связи в схеме, "забыл" их убрать"...
Постоянные связи в схеме хороши тогда, когда сама схема хотя бы нормализована по первой форме :) То есть "устанавливаем связи тогда, когда знаем и понимаем, что они потребуются всегда". А не "потому что нарисовано, что связи должны быть" :D


Donate: Qiwi: 9517375010
 
Ответить
СообщениеЭх, Елена :(

Не получали вы, видимо, в акцессе ExceptionXXX в самый неподходящий момент, с блокировкой файла базы и потерей данных... всё потому, что кто-то "рылся в базе, правил данные напрямую, сделал связи в схеме, "забыл" их убрать"...
Постоянные связи в схеме хороши тогда, когда сама схема хотя бы нормализована по первой форме :) То есть "устанавливаем связи тогда, когда знаем и понимаем, что они потребуются всегда". А не "потому что нарисовано, что связи должны быть" :D

Автор - AndreTM
Дата добавления - 08.06.2017 в 10:59
Pelena Дата: Четверг, 08.06.2017, 11:15 | Сообщение № 9
Группа: Модераторы
Ранг: Местный житель
Сообщений: 11275
Репутация: 2507 ±
Замечаний: 0% ±

Excel 2010, 2016 & Mac Excel
ОК, умолкаю...


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеОК, умолкаю...

Автор - Pelena
Дата добавления - 08.06.2017 в 11:15
Матраскин Дата: Четверг, 08.06.2017, 12:31 | Сообщение № 10
Группа: Друзья
Ранг: Обитатель
Сообщений: 375
Репутация: 81 ±
Замечаний: 0% ±

20xx
TEN, В таблицу Контакты добавить поле Код_предприятия(форен_кей) и в таблицу предприятие тоже добавить такое же поле(как праймари кей). Всё, связываем эти 2е таблицы этими полями


в интернете опять кто-то не прав
 
Ответить
СообщениеTEN, В таблицу Контакты добавить поле Код_предприятия(форен_кей) и в таблицу предприятие тоже добавить такое же поле(как праймари кей). Всё, связываем эти 2е таблицы этими полями

Автор - Матраскин
Дата добавления - 08.06.2017 в 12:31
AndreTM Дата: Четверг, 08.06.2017, 12:58 | Сообщение № 11
Группа: Друзья
Ранг: Старожил
Сообщений: 1553
Репутация: 445 ±
Замечаний: 0% ±

2003 & 2010
Матраскин, а это что было? :)
Можно так таблицы описать:
Предприятия (Код_Предприятия, Название, ...)
КонтактыПредприятий (Код_Контакта, Код_Предприятия, ФИО, ...)


Donate: Qiwi: 9517375010
 
Ответить
СообщениеМатраскин, а это что было? :)
Можно так таблицы описать:
Предприятия (Код_Предприятия, Название, ...)
КонтактыПредприятий (Код_Контакта, Код_Предприятия, ФИО, ...)

Автор - AndreTM
Дата добавления - 08.06.2017 в 12:58
Матраскин Дата: Четверг, 08.06.2017, 14:17 | Сообщение № 12
Группа: Друзья
Ранг: Обитатель
Сообщений: 375
Репутация: 81 ±
Замечаний: 0% ±

20xx
AndreTM,


в интернете опять кто-то не прав
 
Ответить
СообщениеAndreTM,

Автор - Матраскин
Дата добавления - 08.06.2017 в 14:17
Мир MS Excel » Вопросы и решения » Excel и другие приложения » Access » Несколько ключевых полей в одной таблице
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2017 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!