Не особо силен в базах
Есть, к примеру, пользователи. У каждого пользователя может быть какое-то количество номеров телефонов. Делаю две таблицы Users и Phones и из таблицы Phones делаю ссылку на пользователей через внешний ключ.
Вопрос, как сделать так, чтобы у каждого пользователя было до 5ти номеров телефонов?
Делать одну таблицу с именем пользователя и 5ю атрибутами под номера телефонов это шляпа какая-то, а каждый раз при добавлении проверять отдельно не превышаю ли я количество записей на человека ... как будто так не должно быть
SQL
Без понятия как задать вопрос одной фразой :)
написал бы хоть где делаешь. а так триггер создавай на добавление, там будешь проверять сколько номеров имеет клиент и если больше то не добавляешь
пример моего рандомного триггера
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);
пример моего рандомного триггера
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);
Ссылочная целостность такого рода никакой из известных мне баз не поддерживается и никакими методами надежно быть достигнута не может.
Даже вышеприведенный триггер ни фига не сделает, поскольку десяток пользователей могут добавить по одному номеру в рамках разных изолированных транзакций - и номеров станет 10.
В твоем случае подошла бы такая экзотическая вещь, как поле-массив. Т. е. вместо таблицы определяешь одно поле на 5 номеров и адью. Поддерживает ли твоя база такое дело - я ХЗ.
Даже вышеприведенный триггер ни фига не сделает, поскольку десяток пользователей могут добавить по одному номеру в рамках разных изолированных транзакций - и номеров станет 10.
В твоем случае подошла бы такая экзотическая вещь, как поле-массив. Т. е. вместо таблицы определяешь одно поле на 5 номеров и адью. Поддерживает ли твоя база такое дело - я ХЗ.
1. Создай две таблицы: "Users" и "Phones".
- В таблице "Users" должен быть уникальный идентификатор пользователя (например, поле "user_id") и другие соответствующие поля, связанные с пользователем.
- В таблице "Phones" должен быть уникальный идентификатор номера телефона (например, поле "phone_id"), поле с самим номером телефона (например, поле "phone_number") и внешний ключ, связывающий номер телефона с пользователем (например, поле "user_id" в таблице "Phones" будет ссылаться на поле "user_id" в таблице "Users").
- Чтобы ограничить количество номеров телефонов для каждого пользователя до 5, ты можешь добавить дополнительное поле в таблице "Users", например "phone_count", которое будет отслеживать количество связанных номеров телефонов для каждого пользователя.
- При добавлении нового номера телефона для пользователя, сначала проверь значение поля "phone_count" для данного пользователя.
- Если оно меньше 5, то разреши добавление номера телефона и увеличь значение "phone_count" на 1.
- Если "phone_count" уже равно или больше 5, то запрети добавление нового номера телефона.
Сергей Смирнов
сам писал или скопировал?
Сергей Смирнов
просто что-то мне подсказывает что ничего не получится
Сергей Смирнов
а всё сори, не увидел Если оно меньше 5, то разреши добавление номера телефона и увеличь значение "phone_count" на 1.
Не лезь в это дело.
Это не для леньтяев.
Это не для леньтяев.
Похожие вопросы
- Подскажите, есть ли такое понятие чистый SQL???
- Вопросы по проектированию базы данных для небольшого склада.
- Вопрос по внешнему ключу.
- Вопрос по SQL - уникальное поле ID для трёх таблиц (нельзя вставить значения в одну, если оно есть в другой таблице).
- Вопрос по БД
- Вопрос тем у кого есть свои сайты с рекламой
- Вопрос к IT-шникам, расскажите про SQL Сколько времени нужно что бы ним овладеть? Для чего он нужен QA-ям ?
- Вопрос по SQL. Помогите понять решение задачи
- Вопросы по СУБД
- Вопрос по SQL + Python