Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
bioshock

MySQL Sim/Não

Recommended Posts

bioshock

Boas pessoal!

Estou a criar uma tabela de login em PHPMyAdmin, em que tenho os seguintes campos: IDUser, User, Pass, Admin.

No Admin, eu gostaria que o tipo de dados fosse "Sim ou Não". Pois o Administrador tem um nivel de acesso diferente do utilizador comum.

Qual é o tipo de dados a implementar? Obrigado.

Share this post


Link to post
Share on other sites
mjamado
Estou a criar uma tabela de login em PHPMyAdmin, em que tenho os seguintes campos: IDUser, User, Pass, Admin.

No Admin, eu gostaria que o tipo de dados fosse "Sim ou Não". Pois o Administrador tem um nivel de acesso diferente do utilizador comum.

Normalmente, eu uso ENUM('s','n') ou ('y','n')... Há quem use TINYINT (sendo 0, não, e 1, sim), há quem use CHAR... É um bocado ao gosto do freguês, desde que uses um tipo de dados compacto, como estes.

O ENUM é preciso usar com muita parcimónia, porque não escala muito bem - é o que lá está e acabou. Os outros tipos que referi escalam bastante melhor. Imagina que um dia destes precisas de ter outro tipo de Admin; é Admin à mesma, mas sem acesso a uma operação em particular. Basta "inventar" outro número (TINYINT) ou outro caracter (CHAR) que o identifique, apenas no código, e toca a andar; com ENUM, além das alterações no código, tens que ir à BD alterar o ENUM. Pode parecer rápido e trivial, mas é daquelas coisas muito fáceis de esquecer, sobretudo se tiveres servidores distintos para desenvolvimento e produção.


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Share this post


Link to post
Share on other sites
mjamado

Os datatypes BOOL e BOOLEAN não existem, são, na realidade, TINYINT(1). Cuidado com datatypes que ainda não são suportados nativamente pelo MySQL.


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Share this post


Link to post
Share on other sites
jpaulino

Os datatypes BOOL e BOOLEAN não existem, são, na realidade, TINYINT(1). Cuidado com datatypes que ainda não são suportados nativamente pelo MySQL.

É o que diz no link :)

"These types are synonyms for TINYINT(1). A value of zero is considered false. Nonzero values are considered true: "

Share this post


Link to post
Share on other sites
mjamado

É o que diz no link :)

"These types are synonyms for TINYINT(1). A value of zero is considered false. Nonzero values are considered true: "

Entre meteres o link e as pessoas clicarem vai uma grande distância.  :)

Só estou a chamar a atenção para o facto desses datatypes não serem ainda suportados nativamente, e o MySQL tem o mau hábito de introduzir alterações destrutivas em coisas deste estilo...


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Share this post


Link to post
Share on other sites
falco

Reforçando o que já foi dito:

O ENUM é uma opção, mas o tinyint é também uma boa solução (melhor).

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.