Как правильно назначить тип столбца для MySQL таблиц?

Создал php скрипт с занесением данных в базу MySQL, данные заносятся корректно, но мне кажется, что у меня не везде заданы верные типы столбов.

Например, в некоторых базах не принимается значение varchar(255) требует использовать varchar(191), при sql импорте иногда получаю сообщение о том, что скоро отпадет необходимость прописывать int(11).

В итоге база данных сейчас у меня работает, но по сути все значения у меня там взяты с потолка.

Помогите назначить верные типы данных для таблиц.

CREATE TABLE IF NOT EXISTS `pin_code` (
  `id` int(11) NOT NULL, // 1
  `code` varchar(255) NOT NULL DEFAULT '', // c9631b497da4f3f413fee8807dc435ec
  `create_date` int(10) unsigned NOT NULL DEFAULT '0', // 1610489000
  `destroy_date` int(10) unsigned NOT NULL DEFAULT '0', // 1610489000
  `email` varchar(255) NOT NULL, // [email protected]
  `name` varchar(255) NOT NULL, // Ivan Ivan
  `item_number` varchar(50) NOT NULL, // 123
  `txn_id` varchar(50) NOT NULL, // 5P0237229D8053935
  `checkout_session_id` varchar(250) NOT NULL, // cs_test_a1SV6zJqDkvo9ceCNmbkYmh1fYT2trjLXKm5xDa08IAkmEZqs0pksuHMBw
  `payment_status` varchar(20) NOT NULL // Pending
) ENGINE=InnoDB AUTO_INCREMENT=224 DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS `subscription` (
  `id` int(11) NOT NULL, // 1
  `item_name` varchar(255) NOT NULL DEFAULT 'PIN code', // PIN code
  `amount` varchar(255) NOT NULL DEFAULT '', // 150
  `currency_code` varchar(10) NOT NULL, // RUB
  `custom` int(10) unsigned NOT NULL DEFAULT '0', // 12345
  `payment_service` varchar(255) NOT NULL, // PayPal
  `business` varchar(255) NOT NULL DEFAULT '', // [email protected]
  `stripe_pkey` varchar(255) NOT NULL DEFAULT '', // pk_test_51HCYduIdR2gJHe2nSIlVFNB5p3SPyefhUaZ79qeIs2BgrFZ595Eb2tLtzntZ0Pm3U3h6SfikqezCy6RhBgfjzXy800zAfHWSiu
  `stripe_skey` varchar(255) NOT NULL DEFAULT '', // pk_test_51HCYduIdR2gJHe2nSIlVFNB5p3SPyefhUaZ79qeIs2BgrFZ595Eb2tLtzntZ0Pm3U3h6SfikqezCy6RhBgfjzXy800zAfHWSiu
  `status` int(10) NOT NULL // 1
) ENGINE=InnoDB AUTO_INCREMENT=90 DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL, // 1
  `username` varchar(255) NOT NULL, // admin
  `email` varchar(255) NOT NULL, // [email protected]
  `password` varchar(255) NOT NULL, // ec04321e2c7bf2e0b01bac41896796b19f22a244
  `joindate` int(11) NOT NULL, // 1610304453
  `active` int(11) NOT NULL DEFAULT '0', // 1
  `admin` int(11) NOT NULL DEFAULT '0' // 1
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;

Некоторые поля в базе могут оставаться пустыми, например так:

INSERT INTO `subscription` (`id`, `item_name`, `amount`, `currency_code`, `custom`, `payment_service`, `business`, `stripe_pkey`, `stripe_skey`, `status`) VALUES
(71, 'PIN code', '150', 'RUB', 148, 'Stripe', '', 'pk_test_51HCYduIdR2gJHe2nSIlVFNB5p3SPyefhUaZ79qeIs2BgrFZ595Eb2tLtzntZ0Pm3U3h6SfikqezCy6RhBgfjzXy800zAfHWSiu', 'sk_test_51HCYduIdR2gJHe2nU6KLxYrD6fUdbIN0zCyj7k4wujxLfRLjYHIUJUJwKMMd9AnRsBxY2CfRlVn6M5Xpg8p6cNLh00sM1eVZmp', 1),
(74, 'PIN code', '10', 'USD', 72, 'PayPal', '[email protected]', '', '', 1),
(80, 'PayPal', '100', 'RUB', 5, 'Stripe', '', 'pk_test_51HCYduIdR2gJHe2nSIlVFNB5p3SPyefhUaZ79qeIs2BgrFZ595Eb2tLtzntZ0Pm3U3h6SfikqezCy6RhBgfjzXy800zAfHWSiu', 'sk_test_51HCYduIdR2gJHe2nU6KLxYrD6fUdbIN0zCyj7k4wujxLfRLjYHIUJUJwKMMd9AnRsBxY2CfRlVn6M5Xpg8p6cNLh00sM1eVZmp', 1),
(85, 'PIN code', '500', 'RUB', 5, 'PayPal', '[email protected]', '', '', 1);

Помогите корректно назначить типы данных и NULL, not NULL, NOT NULL DEFAULT и т.д.


Ответы (0 шт):