Можно ли использовать ENUM (Y | N) в реляционной схеме и в mysql? - PullRequest
0 голосов
/ 05 февраля 2020

я до сих пор работаю над проектом базы данных. Я создал таблицу, но я в замешательстве, если она должна быть в реляционной схеме, и mysql: ENUM (Y | N) NOT NULL

ИЛИ

ENUM ('Y', 'N') NOT NULL

какой из них правильный ???

Ответы [ 2 ]

0 голосов
/ 05 февраля 2020

Допустимо использовать любой скалярный тип данных для столбца. Использование ENUM не обязательно портит реляционное качество таблицы.

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

Фактически, в SQL и Реляционная теория , Крис Дата определяет тип данных как:

Именованный конечный набор значений.

Другими словами, все типы данных ограничены конечным набором значений, даже если набор довольно большой. Например, INT UNSIGNED ограничен набором целых чисел от 0 до 2 32 -1. Довольно большой набор, но все же конечный.

ENUM просто позволяет вам быстро объявить гораздо меньший набор значений, допустимых в вашем столбце.

Однако синтаксис, который вы показываете ENUM(Y|N) MySQL не поддерживается. Вы должны прочитать https://dev.mysql.com/doc/refman/8.0/en/enum.html для примеров правильного синтаксиса.

Я обычно рекомендую использовать ENUM, когда набор значений не изменится и не будет иметь логической причины для изменения. Пример ENUM('Y','N') подойдет, если предположить, что для этого столбца больше не будет необходимости, например «возможно» или «частично».

Но я бы не использовал ENUM для houseType или vehicleType, потому что вероятно, со временем он изменится, и добавлять новые значения в ENUM неудобно. Вы должны использовать ALTER TABLE. Для случаев расширения перечислений я бы использовал таблицу поиска. Затем вы можете добавить новое допустимое значение, просто используя INSERT, чтобы добавить новую строку в таблицу поиска.

0 голосов
/ 05 февраля 2020

Второй действителен в MySQL:

ENUM('Y','N')

Теперь, пожалуйста, учтите, что значения хранятся как порядковые, поэтому при сортировке по этому столбцу значение Y сортируется до N .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...