Какие данные могут быть ключом бд номер паспорта номер дома

Обновлено: 28.06.2024

В данной теме, на примере двух таблиц, определяются основные понятия реляционных баз данных, а именно:

  • первичный ключ;
  • внешний ключ;
  • простой и составной ключ;
  • отношение, типы отношений;
  • искусственный и естественный ключи;
  • главная (master) и подчиненная (detail) таблицы.

Содержание

Поиск на других ресурсах:

Пусть задана база данных работников предприятия, которая состоит из двух таблиц. Первая таблица содержит данные о работнике. Вторая таблица содержит сведения о заработной плате работника.

Таблицы имеют следующую структуру.

база данных таблица фото

база данных таблица фото

Вопрос/ответ

1. Что такое первичный ключ в таблице базы данных? Для чего используются первичные ключи?

При работе с таблицами в реляционных базах данных, желательно (необходимо), чтобы каждая таблица имела так называемый первичный ключ.

Первичный ключ – это поле, которое используется для обеспечения уникальности данных в таблице. Это означает, что значение (информация) в поле первичного ключа в каждой строке (записи) таблицы может быть уникальным.

Уникальность необходима во избежание неоднозначности, когда неизвестно к какой записи таблицы можно обратиться, если в таблице есть повторяющиеся записи (две записи имеют одинаковые значения во всех полях таблицы).

2. Что такое отношение (связь) между таблицами (relationship)? Пример

база данных таблица связь фото

база данных отношение таблица фото

Рис. 2. Связь (отношение) между полями таблиц

3. Что такое внешний ключ (foreign key)? Пример

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

4. Что такое рекурсивный внешний ключ?

Рекурсивный внешний ключ – это внешний ключ, который ссылается на одну и ту же таблицу, к которой он принадлежит. В этом случае поле (атрибут), которое соответствует внешнему ключу, есть ключом одного и того же отношения (связи).

5. Могут ли первичный и внешний ключи быть простыми или составными (сложными)?

Первичный, вторичный и внешний ключи могут быть как простыми так и составными (сложными). Простые ключи – это ключи, которые содержат только одно поле (один атрибут). Составные (сложные) ключи – это ключи, которые содержат несколько полей (атрибутов).

6. Какое отличие между искусственным и естественным ключом? Пример

Естественной ключ обеспечивает уникальность из самой сущности предметной области. Бывают случаи, когда значения записей некоторого поля (полей) таблицы есть уникальными. Это поле может быть естественным ключом.

Искусственный ключ вводится дополнительно для обеспечения уникальных значений. Чаще всего искусственный ключ есть полем типа счетчик (counter). В таком поле, при добавлении новой записи (строки) в таблицу, значение счетчика увеличивается на 1 (или другую величину). Если запись удалить из таблицы, то максимальное значение счетчика строк уже не уменьшается, а остается как есть. Как правило, за этим все следит система управления базами данных.

база данных таблица фото

7. Какие существуют способы выбора первичного ключа?

Существует 3 способа выбора первичного ключа:

  • использовать поле-инкремент (поле-счетчик) как искусственный ключ;
  • выбрать из данных одно поле, которое может обеспечить уникальность;
  • выбрать из данных несколько полей, которые могут обеспечить уникальность. В этом случае ключ еще будет называться сложным (составным).

Если между таблицами есть связь, то одна из них может быть главной (master), а другая подчиненной (detail). Главная таблица отображает все записи, которые помещаются в ней. Подчиненная таблица отображает только те записи, которые соответствуют значению ключа главной таблицы, который на данный момент есть активным (текущим). Если изменяется текущая запись главной таблицы, то изменяется множество доступных записей подчиненной таблицы.

9. Какие существуют типы отношений (связей) между таблицами?

Существует 4 основных типа отношений между таблицами:


Открываем Access, создаем новую пустую базу данных.

После этого выбираем команду "Создать таблицу"

Начинаем с таблицы "Физические лица" .

Наименование данныхТип данныхПримечание Тип данных Access
Серия паспортаСтрокаСерия паспорта состоит из двух буквТекстовый,
Длина поля - 2,
Обязательное - Да
Пустые строки - Нет
Индексированное - Да, допускаются совпадения
Номер паспортаЧислоНомер паспорта - целое числоЧисловой,
Длинное целое,
Число десятичных знаков - 0,
Маска ввода - 000000,
Обязательное - Да,
Индексированное - Да, допускаются совпадения
ИННЧислоОбязательно для идентификации, число.
Внимание! Для реальной базы данных так делать нельзя, потому что человек может отказаться от получения ИНН по религиозным соображениям и ИНН у него может отсутствовать. Мы же для простоты считаем, что у каждого человека есть свой уникальный ИНН
Числовой,
Длинное целое,
Число десятичных знаков - 0,
Маска ввода - 0000000000
Обязательное - Да,
Индексированное - Да, совпадения не допускаются,
Ключевое
Адрес пропискиСтрокаАдрес прописки будет нужен для оформления юридических действийТекстовое,
Размер поля - 255
Адрес проживанияСтрокаЭтот адрес будет нужен для связи с клиентом, направления ему писемТекстовое,
Размер поля - 255
Контактный телефонСтрокаПотребуется для быстрой связи с клиентом. Тип данных - могло быть и число, но для простоты учебного примера - пусть будет строкаТекстовое,
Размер поля - 16

Перед созданием таблицы "Юридические лица" необходимо создать служебную таблицу "Формы собственности"


Наименование Тип данных Комментарий Тип данных Access
ID Этот идентификатор необходим для дальнейшего создания связи с таблицей "Юридические лица"Тип данных - Счетчик,
Длинное целое,
Последовательный,
Индексированное - Да, совпадения не допускаются
Форма собственности Это - текстовое название формы собственности Текстовое,
Размер поля - 255

Создаем таблицу "Юридические лица"

Создаем таблицу "Условия депозитов"

Наименование данныхТип данныхКомментарий Тип данных Access
Код По данному полю мы будем идентифицировать тип депозитаСчетчик,
Длинное целое,
Новые значения - последовательные,
Индексируемое - Да, совпадения не допускаются
Срок начала действия условий депозитаДатаДата начала срока действия условий нужна для того, чтобы не иметь возможности открыть депозит раньше времениДата/Время
Обязательное - Да
Срок окончания действия условий депозитаДатаВозможна ситуация, когда депозиты по старым условиям еще лежат в банке, но новые вклады на данных условиях уже не принимаются. Значение окончания действия также может отсутствовать, если предложение действует в данный момент Дата/Время
Обязательное - Нет
Условия действительны для физических лицЛогическийПредполагается информация да/нетЛогический
Формат поля - Да/Нет
Условия действительны для юридических лицЛогическийПредполагается информация да/нет Логический
Формат поля - Да/Нет
Минимальная сумма депозитаЧисло Денежный
Минимальный срок размещения (дней)ЧислоБез указания срока размещения договор депозита смысла не имеетЦелое,
Значение по умолчанию - 30,
Обязательное - Да
Процентная ставкаЧисло Одинарное с плавающей точкой
Условия выплаты процентовПеречислениеМожно было бы создать отдельный справочник с условиями видов начисления процентов, но для простоты примера мы принимаем следующее:
0 - ежемесячное начисление по концу месяца на отдельный счет
1 - начисление по концу месяца на тот же самый счет
2 - начисление процентов в конце срока на тот же самый счет
Целое,
Значение по умолчанию - 0,
Обязательное - Да
Возможно ли пополнение депозитаЛогический Логический
Формат поля - Да/Нет
Допускается ли досрочное снятиеЛогическийДосрочное снятие - это, фактически, разрыв условий договора, поэтому, как правило, при выплате процентов на вклад начисляются проценты по ставке, иной, чем изначально оговоренная Логический
Формат поля - Да/Нет
Процентная ставка при досрочном снятииЧисло Одинарное с плавающей точкой

Создаем таблицу "Договоры"

НаименованиеТип данныхПримечание Тип данных Access
Код Для идентификации можно, конечно, использовать и номер договора. Но, поскольку, строка не удобна для создания связей между таблицами и, потенциально, будет замедлять быстродействие, создание дополнительного поля оправданоСчетчик,
Длинное целое,
Новые значения - последовательные,
Индексированное - Да, совпадения не допускаются
Дата заключенияДата Дата/Время,
Значение по умолчанию =Date(),
Обязательное - Да
НомерСтрокаДоговор может быть пронумерован, например, как 1/3-55, поэтому тип данных - строкаТекстовый,
Размер поля - 32
Дата окончанияДатаСчитаем, что все договоры имеют дату окончания и не пролонгируютсяДата/Время
Договор с юр или физ лицом?ЛогическийДалее у нас две ссылки, и лишь одна из них будет задействована. Поэтому данное поле, фактически, является переключателем, с кем у нас заключен договор и на какую таблицу искать ссылку (физ или юр)
Договор с юр лицом
Ссылка на юридическое лицоЧисловой,
Длинное целое,
Индексированное - Да, допускаются совпадения
Договор с физ лицом Ссылка на физическое лицо Числовой,
Длинное целое,
Индексированное - Да, допускаются совпадения

Создаем таблицу "Счета"

НаименованиеТип данныхПримечание Тип данных Access
Группа счетаЧислоСогласно утвержденному плану счетов банков в Украине это должна быть цифра "26" всегда. Поэтому редактирование поля мы не предумотримТип данных - Целое,
Значение по умолчанию - 26
Подгруппа счетаЧисло"10", если это - краткосрочный депозит юр. лица
"15", если это - долгосрочный депозит юр. лица
"30", если это - краткосрочный депозит физ. лица
"35", если это - долгосрочный депозит физ. лица
Тип данных - Целое
Подномер счетаЧислоОстальные 10 цифр, которые формируют номер счета
Счетчик определит нам сквозную нумерацию, которая не зависит от группы и подгруппы счета. Это не совсем правильно. Мы должны нумеровать счета независимо. Но, поскольку пример учебный - мы сделали так для простоты.
Счетчик,
Новые значения - Последовательные,
Ключевое
Номер счета В номере счета 14 цифр, поэтому, чтобы получить счет вида
2615. нам необходимо обеспечить сдвиг по регистрам на соответствующее число разрядов
Вычисляемое,
Формула:
[Группа счета]*1000000000000 + [Подгруппа счета]*10000000000 + [Подномер счета]
Дата открытияДатаСчет должен обязательно иметь дату открытия Дата/Время,
Значение по умолчанию =Date(),
Обязательное - Да
Дата закрытияДата Дата/Время
Договор Ссылка на договор Числовой,
Длинное целое,
Индексированное - Да, допускаются совпадения
Сумма Сумма, которая храниться на счете в данный моментДенежный,
Формат поля - Денежный

Теперь заходим в схему данных и устанавливаем связи между:

"Юридические лица.Форма собственности" и "Формы собственности.ID"
"Юридические лица.Директор" и "Физические лица.ИНН"
"Юридические лица.Главный бухгалтер" и "Физические лица.ИНН"
"Договоры.Договор с юр лицом" и "Юридические лица.Код ОКПО"
"Договоры.Договор с физ лицом" и "Физические лица.ИНН"

Читайте также: