SQL Check (прокат автомобилей)

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

CREATE TABLE  customers  (
   customer_id  int(50) UNSIGNED ZEROFILL NOT NULL,
   fname  varchar(20) NOT NULL,
   lname  varchar(20) NOT NULL,
   address  varchar(30) NOT NULL,
   city  varchar(20) NOT NULL,
   county  ENUM('Armagh','Carlow','Cavan','Clare','Cork','Derry','Donegal','Down','Dublin','Fermanagh','Galway','Kerry','Kildare','Kilkenny','Laois','Leitrim','Limerick','Longford','Louth','Mayo','Meath','Monaghan','Offaly','Roscommon','Sligo','Tipperary','Tyrone','Waterford','Westmeath','Wexford','Wicklow') NOT NULL,
   phone  int(10) NOT NULL,
   email  varchar(20) NOT NULL,
   payment_method  ENUM ('Visa', 'Amex', 'Cash', 'American Express', 'Mastercard') NOT NULL,
   status  ENUM('Approved','Unapproved'),
   driver_no int(10) NOT NULL,
   PRIMARY KEY (customer_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Чек будет что-то вроде ... ?

ПРОВЕРИТЬ номер_драйвера ПРИСУТСТВУЕТ?

какова команда, чтобы увидеть, если что-то присутствует. У них должен быть номер водителя, чтобы арендовать автомобиль.

Вы можете отформатировать такие запросы, сделав отступ в четыре пробела или выбрав и нажав кнопку {}.

tadman 25.02.2019 17:31

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

tadman 25.02.2019 17:32

Ваше ограничение int(10) NOT NULL гарантирует, что оно не является нулевым (имеет значение, присвоенное при сохранении/создании) и является целым числом. Вы можете (должны) использовать unsigned int(10), поскольку число, скорее всего, не должно быть отрицательным. Если вам нужна дополнительная проверка достоверности, вы должны сделать это в своем приложении БД при создании/сохранении записи. Предполагая, что вы используете какую-то библиотеку db или активную структуру записи, часто для этого они поддерживают события (например, «при создании» или «при сохранении»). Обратите внимание, что «10» здесь — это просто ширина экрана. Он не применяет диапазон значения.

lurker 25.02.2019 17:34

спасибо, ребята, я до сих пор не знаю, как это сделать, что ты имеешь в виду, тадман

Paweł Szuszkiewicz 25.02.2019 17:36

Какую "команду" вы имеете в виду? Почему бы не проверить это условие в вашем коде?

Nico Haase 25.02.2019 17:41

У меня есть водительские права. «Число», написанное на нем, не является целым числом. Значит ли это, что я не могу арендовать машину?

Strawberry 25.02.2019 17:48

Нико - это моя проблема, я не знаю, как это сделать

Paweł Szuszkiewicz 25.02.2019 17:51

клубника - спасибо

Paweł Szuszkiewicz 25.02.2019 17:51

Ах, это только для жителей Эйре. Я не знаю, как выглядят цифры RoI, но те, что на севере, должно быть, такие же, как в Великобритании (во всяком случае, на ближайшие несколько дней!)

Strawberry 25.02.2019 18:11
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
9
789
1

Ответы 1

DROP TABLE IF EXISTS customer;

CREATE TABLE customer
(customer_id SERIAL PRIMARY KEY
,firstname VARCHAR(12) NOT NULL
,licence_no VARCHAR(30) NULL
);

INSERT INTO customer VALUES
(1,'John',NULL),
(2,'Paul','LMW281F'),
(3,'George',NULL),
(4,'Ringo','STAR123');


DROP TABLE IF EXISTS rentals;

CREATE TABLE rentals
(rental_id SERIAL PRIMARY KEY,customer_id INT NOT NULL);

INSERT INTO rentals 
SELECT NULL, customer_id FROM customer WHERE firstname = 'John' AND licence_no IS NOT NULL;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0


SELECT * FROM rentals;
Empty set (0.00 sec)

Другие вопросы по теме