спрашивают.
Есть пример структуры, нужно оптимизировать.
CREATE TABLE `users` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) DEFAULT NULL,
`gender` INT(11) NOT NULL COMMENT '0 - не указан, 1 - мужчина, 2 - женщина.',
`birth_date` INT(11) NOT NULL COMMENT 'Дата в unixtime.'
);
CREATE TABLE `phone_numbers` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`user_id` INT(11) NOT NULL,
`phone` VARCHAR(255) DEFAULT NULL
);
Что обычно делают? Foreign ключ для ид и индексы?
внешние ключи нафиг не нужны, это средствами ORM обычно делается, индексы заранее тут не проставишь т.к. нет примера выборки. для пола тип можно сменить на tinyint, ещё есть теория что NULL тяжелее и лучше делать просто пустое поле
Я бы внешние ключи проставил, и каскадное удаление из второй таблицы
gender в enum. name меньше по символам. Дата рождения лучше в date В таблице с номерами телефонов убрать Id. Оставить только user_id и phone сделав составные ключи. phone not null и символов меньше. ключи создай внешние.
gender = ENUM, birth_date = DATE, phone_numbers индекс по user_id
Обсуждают сегодня