Встречается на собеседованиях • сегодня

Работал ли с базами, в которых было много натуральных ключей

Да, работал. Натуральные ключи (естественные идентификаторы, например, email или ИНН) могут быть удобны, но имеют недостатки:

  1. Изменяемость: если ключ изменится (например, email), придётся обновлять все связанные таблицы.
  2. Производительность: строковые ключи (VARCHAR) работают медленнее, чем числовые (BIGINT).
  3. Уникальность: сложнее гарантировать уникальность, особенно в распределённых системах.

Пример с SQL:

sql
-- Плохо: email как первичный ключ
CREATE TABLE users (
    email VARCHAR(255) PRIMARY KEY,
    name VARCHAR(100)
);

-- Лучше: суррогатный ключ + уникальное ограничение
CREATE TABLE users (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    email VARCHAR(255) UNIQUE,
    name VARCHAR(100)
);

В Java (JPA/Hibernate):

java
@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(unique = true)
    private String email;
}

Рекомендую использовать суррогатные ключи (ID) + уникальные индексы на натуральные поля.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы