SQL

Без понятия как задать вопрос одной фразой :)

Не особо силен в базах
Есть, к примеру, пользователи. У каждого пользователя может быть какое-то количество номеров телефонов. Делаю две таблицы Users и Phones и из таблицы Phones делаю ссылку на пользователей через внешний ключ.
Вопрос, как сделать так, чтобы у каждого пользователя было до 5ти номеров телефонов?
Делать одну таблицу с именем пользователя и 5ю атрибутами под номера телефонов это шляпа какая-то, а каждый раз при добавлении проверять отдельно не превышаю ли я количество записей на человека ... как будто так не должно быть
написал бы хоть где делаешь. а так триггер создавай на добавление, там будешь проверять сколько номеров имеет клиент и если больше то не добавляешь
пример моего рандомного триггера
GO
CREATE TRIGGER Likes_INSERT
ON LikesWithDislikes
AFTER INSERT
AS
if (Select [Like] from inserted) = 1 begin
UPDATE News

SET Likes = Likes + 1 WHERE News.Likes in (Select id from inserted);
end;
else UPDATE News
SET DisLikes = DisLikes + 1 WHERE News.DisLikes in (Select id from inserted);
НИ
Николай Иванцов
780
Лучший ответ
Ссылочная целостность такого рода никакой из известных мне баз не поддерживается и никакими методами надежно быть достигнута не может.
Даже вышеприведенный триггер ни фига не сделает, поскольку десяток пользователей могут добавить по одному номеру в рамках разных изолированных транзакций - и номеров станет 10.
В твоем случае подошла бы такая экзотическая вещь, как поле-массив. Т. е. вместо таблицы определяешь одно поле на 5 номеров и адью. Поддерживает ли твоя база такое дело - я ХЗ.
АП
Андрей П
78 945
1. Создай две таблицы: "Users" и "Phones".
  1. В таблице "Users" должен быть уникальный идентификатор пользователя (например, поле "user_id") и другие соответствующие поля, связанные с пользователем.
  2. В таблице "Phones" должен быть уникальный идентификатор номера телефона (например, поле "phone_id"), поле с самим номером телефона (например, поле "phone_number") и внешний ключ, связывающий номер телефона с пользователем (например, поле "user_id" в таблице "Phones" будет ссылаться на поле "user_id" в таблице "Users").
  3. Чтобы ограничить количество номеров телефонов для каждого пользователя до 5, ты можешь добавить дополнительное поле в таблице "Users", например "phone_count", которое будет отслеживать количество связанных номеров телефонов для каждого пользователя.
  4. При добавлении нового номера телефона для пользователя, сначала проверь значение поля "phone_count" для данного пользователя.
  5. Если оно меньше 5, то разреши добавление номера телефона и увеличь значение "phone_count" на 1.
  6. Если "phone_count" уже равно или больше 5, то запрети добавление нового номера телефона.
Сергей Смирнов сам писал или скопировал?
Сергей Смирнов просто что-то мне подсказывает что ничего не получится
Сергей Смирнов а всё сори, не увидел Если оно меньше 5, то разреши добавление номера телефона и увеличь значение "phone_count" на 1.
Не лезь в это дело.
Это не для леньтяев.
Mr.shumeiko .
Mr.shumeiko .
305